name: main on: push: branches: - master - cluster paths-ignore: - "docs/**" - "**.md" pull_request: branches: - master - cluster paths-ignore: - "docs/**" - "**.md" permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: lint: name: lint runs-on: ubuntu-latest steps: - name: Code checkout uses: actions/checkout@v4 - name: Setup Go id: go uses: actions/setup-go@v4 with: go-version: stable cache: false - name: Cache Go artifacts uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod ~/go/bin key: go-artifacts-${{ runner.os }}-check-all-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.sum', 'Makefile', 'app/**/Makefile') }} restore-keys: go-artifacts-${{ runner.os }}-check-all- - name: Run check-all run: | make check-all git diff --exit-code build: needs: lint name: build runs-on: ubuntu-latest steps: - name: Code checkout uses: actions/checkout@v4 - name: Setup Go id: go uses: actions/setup-go@v4 with: go-version: stable cache: false - name: Cache Go artifacts uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod ~/go/bin key: go-artifacts-${{ runner.os }}-crossbuild-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.sum', 'Makefile', 'app/**/Makefile') }} restore-keys: go-artifacts-${{ runner.os }}-crossbuild- - name: Build run: make crossbuild test: needs: build strategy: matrix: scenario: ["test-full", "test-pure", "test-full-386"] name: test runs-on: ubuntu-latest steps: - name: Code checkout uses: actions/checkout@v4 - name: Setup Go id: go uses: actions/setup-go@v4 with: go-version: stable cache: false - name: Cache Go artifacts uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod ~/go/bin key: go-artifacts-${{ runner.os }}-${{ matrix.scenario }}-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.sum', 'Makefile', 'app/**/Makefile') }} restore-keys: go-artifacts-${{ runner.os }}-${{ matrix.scenario }}- - name: run tests run: make ${{ matrix.scenario}} - name: Publish coverage uses: codecov/codecov-action@v3 with: file: ./coverage.txt