diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b928740..6e048a7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: - cron: "0 12 * * 0" push: branches: - - main + - EVEREST-107-update-ci tags: - v[0-9]+.[0-9]+.[0-9]+* pull_request: @@ -18,203 +18,6 @@ permissions: repository-projects: read jobs: - test: - name: Test - timeout-minutes: 10 - - strategy: - fail-fast: false - matrix: - go-version: [ 1.21.x ] - may-fail: [ false ] - - continue-on-error: ${{ matrix.may-fail }} - runs-on: ubuntu-20.04 - - env: - # no `-mod=readonly` to test PRs made by @dependabot; - # `git diff --exit-code` step below still checks what we need - GOPRIVATE: github.com/percona,github.com/percona/everest-operator - - steps: - - name: Configure git for private modules - env: - ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} - run: git config --global url."https://percona-platform-robot:${ROBOT_TOKEN}@github.com".insteadOf "https://github.com" - - - name: Set up Go release - uses: percona-platform/setup-go@v4 - with: - go-version: ${{ matrix.go-version }} - - - name: Set GO_VERSION environment variable - run: | - go version - echo "GO_VERSION=$(go version)" >> $GITHUB_ENV - - - name: Check out code into the Go module directory - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ github.event.pull_request.head.sha }} - - - name: Enable Go modules cache - uses: percona-platform/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ matrix.os }}-go-${{ matrix.go-version }}-modules-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ matrix.os }}-go-${{ matrix.go-version }}-modules- - - - name: Enable Go build cache - uses: percona-platform/cache@v3 - with: - path: ~/.cache/go-build - key: ${{ matrix.os }}-go-${{ matrix.go-version }}-build-${{ github.ref }}-${{ hashFiles('**') }} - restore-keys: | - ${{ matrix.os }}-go-${{ matrix.go-version }}-build-${{ github.ref }}- - ${{ matrix.os }}-go-${{ matrix.go-version }}-build- - - - name: Download Go modules - run: go mod download - - - name: Install development tools - run: make init - - - name: Generate code - run: make gen - - - name: Install binaries - run: make build - - - name: Run tests - run: | - go clean -testcache - make test-crosscover - - - name: Check that there are no source code changes - run: | - # Break job if any files were changed during its run (code generation, etc), except go.sum. - # `go mod tidy` could remove old checksums from that file, and that's okay on CI, - # and actually expected for PRs made by @dependabot. - # Checksums of actually used modules are checked by previous `go` subcommands. - pushd tools && go mod tidy -v && git checkout go.sum - popd && go mod tidy -v && git checkout go.sum - git diff --exit-code - - - name: Run debug commands on failure - if: ${{ failure() }} - run: | - env - go version - go env - pwd - git status - check: - name: Check - timeout-minutes: 10 - if: github.event_name == 'pull_request' - - strategy: - fail-fast: false - matrix: - go-version: [1.21.x] - may-fail: [false] - - continue-on-error: ${{ matrix.may-fail }} - runs-on: ubuntu-20.04 - - env: - GOPRIVATE: github.com/percona,github.com/percona/everest-operator - - steps: - - name: Configure git for private modules - env: - ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} - run: git config --global url."https://percona-platform-robot:${ROBOT_TOKEN}@github.com".insteadOf "https://github.com" - - - name: Set up Go release - uses: percona-platform/setup-go@v4 - with: - go-version: ${{ matrix.go-version }} - - - name: Set GO_VERSION environment variable - run: | - go version - echo "GO_VERSION=$(go version)" >> $GITHUB_ENV - - - name: Check out code into the Go module directory - uses: actions/checkout@v4 - with: - lfs: true - ref: ${{ github.event.pull_request.head.sha }} - - - name: Enable Go modules cache - uses: percona-platform/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ matrix.os }}-go-${{ matrix.go-version }}-modules-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ matrix.os }}-go-${{ matrix.go-version }}-modules- - - - name: Enable Go build cache - uses: percona-platform/cache@v3 - with: - path: ~/.cache/go-build - key: ${{ matrix.os }}-go-${{ matrix.go-version }}-build-${{ github.ref }}-${{ hashFiles('**') }} - restore-keys: | - ${{ matrix.os }}-go-${{ matrix.go-version }}-build-${{ github.ref }}- - ${{ matrix.os }}-go-${{ matrix.go-version }}-build- - - - name: Download Go modules - run: go mod download - - - name: Install tools - run: make init - - - name: Check the latest operator version is used - run: | - go get github.com/percona/everest-operator@main - echo "Checking there is no source code changes" - go mod tidy - git diff --exit-code - - - name: Check the Makefile references dev version - run: | - if ! grep -q "RELEASE_VERSION ?= v0.0.0" Makefile; then - echo "default RELEASE_VERSION in Makefile should be 0.0.0" - exit 1 - fi - - - name: Check the quickstart script references dev version - run: | - if ! grep -q "perconalab/everest:0.0.0" deploy/quickstart-k8s.yaml; then - echo "deploy/quickstart-k8s.yaml should reference 0.0.0 version" - exit 1 - fi - - - name: Run checks/linters - run: | - # use GITHUB_TOKEN because only it has access to GitHub Checks API - bin/golangci-lint run --out-format=line-number | env REVIEWDOG_GITHUB_API_TOKEN=${{ secrets.GITHUB_TOKEN }} bin/reviewdog -f=golangci-lint -reporter=github-pr-review -filter-mode=nofilter -fail-on-error=true - - - name: Check that there are no source code changes - run: | - make format - pushd tools && go mod tidy -v - popd && go mod tidy -v - git status - git diff --exit-code - - - name: Run debug commands on failure - if: ${{ failure() }} - run: | - env - go version - go env - pwd - git status - integration_tests: strategy: fail-fast: false @@ -366,15 +169,6 @@ jobs: # API_TOKEN is used later by "make test" echo "API_TOKEN=$(./bin/everest token reset --json | jq .token -r)" >> $GITHUB_ENV - - name: Port-forwarding - shell: bash - continue-on-error: true - run: | - cd percona-everest-cli - - while true; do kubectl port-forward -n everest-system deployment/percona-everest 8080:8080; done & - - - name: Patch Everest Deployment to use the PR image run: | kubectl -n everest-system patch deployment percona-everest --type strategic --patch-file dev/patch-deployment-image.yaml