name: Builds on: pull_request: defaults: run: # reference: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell shell: bash --noprofile --norc -eo pipefail -x {0} # cancel the in-progress workflow when PR is refreshed. concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} cancel-in-progress: true permissions: contents: read jobs: macos-build: runs-on: macos-12 if: "!contains(github.event.pull_request.labels.*.name, 'skip-ci')" steps: - name: checkout uses: actions/checkout@v3 with: fetch-depth: 0 - uses: actions/setup-go@v3 with: go-version: 1.19 - name: Set up Helm uses: azure/setup-helm@v3 with: version: v3.6.2 - name: build rook run: | # Install kubectl binary as required for generating csv curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl sudo chown root: /usr/local/bin/kubectl GOPATH=$(go env GOPATH) make clean && make -j$nproc IMAGES='ceph' BUILD_CONTAINER_IMAGE=false build - name: validate build run: tests/scripts/validate_modified_files.sh build - name: run codegen run: GOPATH=$(go env GOPATH) make codegen - name: validate codegen run: tests/scripts/validate_modified_files.sh codegen - name: run mod check run: GOPATH=$(go env GOPATH) make -j $(nproc) mod.check - name: validate modcheck run: tests/scripts/validate_modified_files.sh modcheck - name: run crds-gen run: make csv-clean && GOPATH=$(go env GOPATH) make crds - name: validate crds-gen run: tests/scripts/validate_modified_files.sh crd - name: run gen-rbac run: GOPATH=$(go env GOPATH) make gen-rbac - name: validate gen-rbac run: tests/scripts/validate_modified_files.sh gen-rbac - name: consider debugging if: failure() run: | # Enable tmate only in the Rook fork, where the USE_TMATE secret is set in the repo, or if the action is re-run if [ "$GITHUB_REPOSITORY_OWNER" = "rook" ] || [ -n "${{ secrets.USE_TMATE }}" ] || [ "$GITHUB_RUN_ATTEMPT" -gt 1 ]; then echo USE_TMATE=1 >> $GITHUB_ENV fi - name: set up tmate session for debugging if: failure() && env.USE_TMATE uses: mxschmitt/action-tmate@v3 timeout-minutes: 60 linux-build-all: runs-on: ubuntu-20.04 if: "!contains(github.event.pull_request.labels.*.name, 'skip-ci')" strategy: fail-fast: false matrix: go-version: ["1.19", "1.20"] steps: - name: checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: setup golang ${{ matrix.go-version }} uses: actions/setup-go@v3 with: go-version: ${{ matrix.go-version }} - name: set up QEMU uses: docker/setup-qemu-action@master with: platforms: all - name: build.all rook with go ${{ matrix.go-version }} run: | tests/scripts/github-action-helper.sh build_rook_all - name: consider debugging if: failure() run: | # Enable tmate only in the Rook fork, where the USE_TMATE secret is set in the repo, or if the action is re-run if [ "$GITHUB_REPOSITORY_OWNER" = "rook" ] || [ -n "${{ secrets.USE_TMATE }}" ] || [ "$GITHUB_RUN_ATTEMPT" -gt 1 ]; then echo USE_TMATE=1 >> $GITHUB_ENV fi - name: set up tmate session for debugging if: failure() && env.USE_TMATE uses: mxschmitt/action-tmate@v3 timeout-minutes: 60