feat: make VM reboot timeout configurable via --vm-reboot-timeout #1640
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: { } | |
| workflow_dispatch: { } | |
| permissions: | |
| contents: read | |
| env: | |
| GOLANGCI_VERSION: 'v2.11.4' | |
| DOCKER_BUILDX_VERSION: 'v0.20.1' | |
| jobs: | |
| detect-noop: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| noop: ${{ steps.noop.outputs.should_skip }} | |
| steps: | |
| - name: Detect No-op Changes | |
| id: noop | |
| uses: fkirc/skip-duplicate-actions@v2.1.0 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| paths_ignore: '["**.md", "**.png", "**.jpg","docs/**.md", "examples/**.yaml"]' | |
| do_not_skip: '["workflow_dispatch", "schedule", "push"]' | |
| concurrent_skipping: false | |
| lint: | |
| runs-on: ubuntu-latest | |
| needs: detect-noop | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set up Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Find the Go Build Cache | |
| id: go | |
| run: echo "::set-output name=cache::$(make go.cachedir)" | |
| - name: Cache the Go Build Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.go.outputs.cache }} | |
| key: ${{ runner.os }}-build-lint-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-build-lint- | |
| - name: Cache Go Dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .work/pkg | |
| key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-pkg- | |
| - name: Vendor Dependencies | |
| run: make vendor vendor.check | |
| - name: Lint | |
| uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0 | |
| with: | |
| version: ${{ env.GOLANGCI_VERSION }} | |
| skip-cache: true | |
| only-new-issues: true | |
| args: --timeout 10m0s --verbose | |
| unit-tests: | |
| runs-on: ubuntu-latest | |
| needs: detect-noop | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set up Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Vendor Dependencies | |
| run: make vendor vendor.check | |
| - name: Run Unit Tests | |
| run: make test | |
| e2e-tests: | |
| runs-on: ubuntu-latest | |
| needs: detect-noop | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| steps: | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 | |
| with: | |
| platforms: all | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 | |
| with: | |
| version: ${{ env.DOCKER_BUILDX_VERSION }} | |
| install: true | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Fetch History | |
| run: git fetch --prune --unshallow | |
| - name: Set up Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Find the Go Build Cache | |
| id: go | |
| run: echo "::set-output name=cache::$(make go.cachedir)" | |
| - name: Cache the Go Build Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.go.outputs.cache }} | |
| key: ${{ runner.os }}-build-e2e-tests-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-build-e2e-tests- | |
| - name: Cache Go Dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .work/pkg | |
| key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pkg- | |
| - name: Vendor Dependencies | |
| run: make vendor vendor.check | |
| - name: Build Helm Chart | |
| run: make build --debug | |
| env: | |
| # We're using docker buildx, which doesn't actually load the images it | |
| # builds by default. Specifying --load does so. | |
| BUILD_ARGS: "--load" | |
| - name: Run E2E Tests | |
| run: make e2e | |
| env: | |
| IONOS_TOKEN: ${{ secrets.IONOS_TOKEN }} | |
| TEST_IMAGE_PASSWORD: ${{ secrets.TEST_IMAGE_PASSWORD }} | |
| - name: Run StatefulServerset E2E Tests | |
| run: make sss_e2e | |
| env: | |
| IONOS_TOKEN: ${{ secrets.IONOS_TOKEN }} | |
| TEST_IMAGE_PASSWORD: ${{ secrets.TEST_IMAGE_PASSWORD }} | |
| trivy: | |
| runs-on: ubuntu-latest | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| permissions: | |
| security-events: write | |
| steps: | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 | |
| with: | |
| platforms: all | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 | |
| with: | |
| version: ${{ env.DOCKER_BUILDX_VERSION }} | |
| install: true | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Fetch History | |
| run: git fetch --prune --unshallow | |
| - name: Set up Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Find the Go Build Cache | |
| id: go | |
| run: echo "::set-output name=cache::$(make go.cachedir)" | |
| - name: Cache the Go Build Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.go.outputs.cache }} | |
| key: ${{ runner.os }}-build-trivy-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-trivy- | |
| - name: Cache Go Dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .work/pkg | |
| key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-pkg- | |
| - name: Vendor Dependencies | |
| run: make vendor vendor.check | |
| - name: Build Artifacts | |
| run: make build | |
| env: | |
| BUILD_ARGS: "--load" | |
| - name: Get Provider Image ID | |
| run: echo "IMAGE_ID=$(make docker.list | grep "crossplane-provider-ionoscloud" | tr -s ' ' | cut -d' ' -f3)" >> $GITHUB_ENV | |
| - name: Run Trivy vulnerability scan | |
| id: trivy-scan | |
| uses: aquasecurity/trivy-action@0.35.0 | |
| with: | |
| image-ref: ${{ env.IMAGE_ID }} | |
| format: 'sarif' | |
| exit-code: 1 | |
| severity: 'CRITICAL,HIGH' | |
| limit-severities-for-sarif: true | |
| output: 'trivy-results.sarif' | |
| - name: Upload Trivy scan results to GitHub Security tab | |
| if: ${{ failure() && steps.trivy-scan.conclusion == 'failure' }} | |
| uses: github/codeql-action/upload-sarif@v3 | |
| with: | |
| sarif_file: 'trivy-results.sarif' | |
| govulncheck: | |
| runs-on: ubuntu-latest | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| permissions: | |
| security-events: write | |
| steps: | |
| - name: Run govulncheck vulnerability scan | |
| uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee | |
| id: govulncheck-scan | |
| with: | |
| # go-version-input is left empty to ensure the action uses the Go version from go.mod | |
| go-version-input: '' | |
| go-version-file: 'go.mod' | |
| go-package: './...' | |
| output-format: 'sarif' | |
| output-file: 'govulncheck-results.sarif' | |
| - name: Upload govulncheck scan results to GitHub Security tab | |
| if: ${{ failure() && steps.govulncheck-scan.conclusion == 'failure' }} | |
| uses: github/codeql-action/upload-sarif@v3 | |
| with: | |
| sarif_file: 'govulncheck-results.sarif' | |
| publish-artifacts: | |
| runs-on: ubuntu-latest | |
| needs: [ detect-noop, trivy, govulncheck ] | |
| if: needs.detect-noop.outputs.noop != 'true' | |
| steps: | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 | |
| with: | |
| platforms: all | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 | |
| with: | |
| version: ${{ env.DOCKER_BUILDX_VERSION }} | |
| install: true | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Fetch History | |
| run: git fetch --prune --unshallow | |
| - name: Set up Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Find the Go Build Cache | |
| id: go | |
| run: echo "::set-output name=cache::$(make go.cachedir)" | |
| - name: Cache the Go Build Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.go.outputs.cache }} | |
| key: ${{ runner.os }}-build-publish-artifacts-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-build-publish-artifacts- | |
| - name: Cache Go Dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: .work/pkg | |
| key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} | |
| restore-keys: ${{ runner.os }}-pkg- | |
| - name: Vendor Dependencies | |
| run: make vendor vendor.check | |
| - name: Build Artifacts | |
| run: make build | |
| env: | |
| BUILD_ARGS: "--load" | |
| - name: Publish Artifacts to GitHub | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output | |
| path: _output/** |