diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e394259f..c438c0b1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,11 @@ on: description: "Force rebuild" required: false default: false + run_tests: + type: boolean + description: "Run unit & e2e tests" + required: false + default: true defaults: run: @@ -35,7 +40,7 @@ jobs: id-token: write outputs: docs_only: ${{ github.event.pull_request && steps.docs.outputs.docs_only == 'true' }} - k8s_latest: "1.32.0" + k8s_latest: ${{ steps.vars.outputs.k8s_latest }} go_path: ${{ steps.vars.outputs.go_path }} go_code_md5: ${{ steps.vars.outputs.go_code_md5 }} binary_cache_hit: ${{ steps.binary-cache.outputs.cache-hit }} @@ -215,25 +220,25 @@ jobs: uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version-file: go.mod - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ needs.checks.outputs.binary_cache_hit != 'true' && (inputs.run_tests && inputs.run_tests || true) }} - name: Run Tests run: make cover - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ needs.checks.outputs.binary_cache_hit != 'true' && (inputs.run_tests && inputs.run_tests || true) }} - name: Upload coverage to Codecov uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: files: ./coverage.txt token: ${{ secrets.CODECOV_TOKEN }} # required - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ needs.checks.outputs.binary_cache_hit != 'true' && (inputs.run_tests && inputs.run_tests || true) }} - name: Run static check uses: dominikh/staticcheck-action@024238d2898c874f26d723e7d0ff4308c35589a2 # v1.4.0 with: version: "v0.6.0" install-go: false - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ needs.checks.outputs.binary_cache_hit != 'true' && (inputs.run_tests && inputs.run_tests || true) }} binaries: name: Build Binaries @@ -253,7 +258,7 @@ jobs: uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version-file: go.mod - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ (inputs.force && inputs.force || false) || needs.checks.outputs.binary_cache_hit != 'true' }} - name: Build binaries uses: goreleaser/goreleaser-action@9c156ee8a17a598857849441385a2041ef570552 # v6.3.0 @@ -272,14 +277,14 @@ jobs: AWS_NAP_WAF_DOS_PRODUCT_CODE: ${{ secrets.AWS_NAP_WAF_DOS_PRODUCT_CODE }} AWS_NAP_WAF_DOS_PUB_KEY: ${{ secrets.AWS_NAP_WAF_DOS_PUB_KEY }} GORELEASER_CURRENT_TAG: "v${{ needs.checks.outputs.ic_version }}" - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ (inputs.force && inputs.force || false) || needs.checks.outputs.binary_cache_hit != 'true' }} - name: Store Artifacts in Cache uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ${{ github.workspace }}/dist key: nginx-ingress-${{ needs.checks.outputs.go_code_md5 }} - if: ${{ needs.checks.outputs.binary_cache_hit != 'true' }} + if: ${{ (inputs.force && inputs.force || false) || needs.checks.outputs.binary_cache_hit != 'true' }} build-docker: name: Build Docker OSS @@ -373,7 +378,7 @@ jobs: if: ${{ inputs.force || (needs.checks.outputs.forked_workflow == 'true' && needs.checks.outputs.docs_only == 'false') || (needs.checks.outputs.forked_workflow == 'false' && needs.checks.outputs.stable_image_exists != 'true' && needs.checks.outputs.docs_only == 'false') }} helm-tests: - if: ${{ needs.checks.outputs.docs_only != 'true' }} + if: ${{ needs.checks.outputs.docs_only != 'true' && (inputs.run_tests && inputs.run_tests || true) }} name: Helm Tests ${{ matrix.base-os }} runs-on: ubuntu-22.04 needs: [checks, binaries, build-docker, build-docker-plus] @@ -512,7 +517,7 @@ jobs: if: ${{ steps.stable_exists.outputs.exists != 'true' && needs.checks.outputs.docs_only == 'false' }} setup-matrix: - if: ${{ inputs.force || needs.checks.outputs.docs_only != 'true' }} + if: ${{ inputs.force || (inputs.run_tests && inputs.run_tests || true) || needs.checks.outputs.docs_only != 'true' }} name: Setup Matrix for Smoke Tests runs-on: ubuntu-22.04 needs: [binaries, checks] @@ -574,7 +579,7 @@ jobs: if: ${{ steps.check-image.outcome == 'failure' && needs.checks.outputs.docs_only == 'false' }} smoke-tests-oss: - if: ${{ inputs.force || needs.checks.outputs.docs_only != 'true' }} + if: ${{ inputs.force || (inputs.run_tests && inputs.run_tests || true) || needs.checks.outputs.docs_only != 'true' }} name: ${{ matrix.images.label }} ${{ matrix.images.image }} ${{ matrix.k8s }} smoke tests needs: - checks @@ -601,7 +606,7 @@ jobs: k8s-version: ${{ matrix.k8s }} smoke-tests-plus: - if: ${{ inputs.force || needs.checks.outputs.docs_only != 'true' }} + if: ${{ inputs.force || (inputs.run_tests && inputs.run_tests || true) || needs.checks.outputs.docs_only != 'true' }} name: ${{ matrix.images.label }} ${{ matrix.images.image }} ${{ matrix.k8s }} smoke tests needs: - checks @@ -628,7 +633,7 @@ jobs: k8s-version: ${{ matrix.k8s }} smoke-tests-nap: - if: ${{ inputs.force || needs.checks.outputs.docs_only != 'true' }} + if: ${{ inputs.force || (inputs.run_tests && inputs.run_tests || true) || needs.checks.outputs.docs_only != 'true' }} name: ${{ matrix.images.label }} ${{ matrix.images.image }} ${{ matrix.k8s }} smoke tests needs: - checks