From e766eaf4e411a5454a7742251a0914aca1c9f961 Mon Sep 17 00:00:00 2001 From: Rueian Date: Sun, 28 Apr 2024 21:22:03 +0800 Subject: [PATCH] ci: github actions --- .github/workflows/build.yml | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..b62db843 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,59 @@ +name: Go Modules Test + +on: [push] + +jobs: + prepare-matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + - id: set-matrix + run: | + echo "matrix=$(find . -maxdepth 2 -type f -name 'go.mod' | xargs -n 1 dirname | sort -u | { echo "e2e"; cat; } | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT + + build: + needs: prepare-matrix + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + module: ${{fromJson(needs.prepare-matrix.outputs.matrix)}} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.21.0' + + - name: Test Module + run: | + module_path=${{ matrix.module }} + if [ "$module_path" == "." ]; then + list=$(go list ./...) + echo "Test Packages: $list" + for n in {1..5}; do + ./dockertest.sh -skip 'Integration' $list && break + done + elif [ "$module_path" == "e2e" ]; then + list=$(go list ./...) + echo "Test Packages: $list" + for n in {1..5}; do + ./dockertest.sh -run 'Integration' $list && break + done + else + cd $module_path + list=$(go list ./...) + echo "Test Packages: $list" + for n in {1..5}; do + ../dockertest.sh $list && break + done + fi + + - uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true