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@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: 1.21.4 check-latest: true cache: true - name: Dependencies run: | make install-golangci-lint make check-all git diff --exit-code test: needs: lint strategy: matrix: scenario: ["test-full", "test-pure", "test-full-386"] name: test runs-on: ubuntu-latest steps: - name: Code checkout uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: 1.21.4 check-latest: true cache: true - name: run tests run: | make ${{ matrix.scenario}} - name: Publish coverage uses: codecov/codecov-action@v3 with: file: ./coverage.txt build: needs: test name: build runs-on: ubuntu-latest steps: - name: Code checkout uses: actions/checkout@v3 - name: Setup Go id: go uses: actions/setup-go@v4 with: go-version: 1.21.4 check-latest: true cache: true - uses: actions/cache@v3 with: path: gocache-for-docker key: gocache-docker-${{ runner.os }}-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.mod') }} - name: Build run: | make vmcluster-crossbuild