name: CI on: push: branches: - master pull_request: env: GO_VERSION: 1.18 jobs: # Check if there any dirty change for go mod tidy go-mod: runs-on: ubuntu-latest steps: - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ env.GO_VERSION }} - name: Checkout code uses: actions/checkout@v3 - name: Check go mod run: | go mod tidy git diff --exit-code go.mod # We already run the current golangci-lint in tests, but here we test # our GitHub action with the latest stable golangci-lint. golangci-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ env.GO_VERSION }} - name: lint uses: golangci/golangci-lint-action@v3.1.0 with: version: latest # skip cache because of flaky behaviors skip-build-cache: true skip-pkg-cache: true tests-on-windows: needs: golangci-lint # run after golangci-lint action to not produce duplicated errors runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI - name: Run tests run: make.exe test continue-on-error: true tests-on-macos: needs: golangci-lint # run after golangci-lint action to not produce duplicated errors runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ env.GO_VERSION }} # test only the latest go version to speed up CI - name: Run tests run: make test tests-on-unix: needs: golangci-lint # run after golangci-lint action to not produce duplicated errors runs-on: ubuntu-latest strategy: matrix: golang: - 1.17 - 1.18 steps: - uses: actions/checkout@v3 - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ matrix.golang }} - uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ matrix.golang }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ matrix.golang }}- - name: Run tests run: make test check_generated: needs: golangci-lint # run after golangci-lint action to not produce duplicated errors runs-on: ubuntu-latest env: # needed for github-action-config.json generation GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v3 - name: Unshallow run: git fetch --prune --unshallow - name: Install Go uses: actions/setup-go@v2 with: # stable: 'false' # Keep this line to be able to use rc and beta version of Go (ex: 1.18.0-rc1). go-version: ${{ env.GO_VERSION }} - name: Check generated files are up to date run: make fast_check_generated