Skip to content

[CI] Pipeline optimisations - #10267

Open
sean-breen wants to merge 40 commits into
mainfrom
chore/sb-ci-updates
Open

[CI] Pipeline optimisations#10267
sean-breen wants to merge 40 commits into
mainfrom
chore/sb-ci-updates

Conversation

@sean-breen

@sean-breen sean-breen commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Description

This PR optimizes and simplifies the GitHub Actions CI pipeline by centralising decision logic, refining docs-only change detection, improving forked workflow test coverage, and introducing local developer preview tooling.

Key Changes

  1. Centralised CI Decision Logic (.github/scripts/variables.sh):

    • Replaced scattered inline bash logic and duplicated job-level if: expressions across .github/workflows/ci.yml with central, testable bash functions.
    • Computes explicit key=value decision flags during the initial checks job (run_tests, docker_build, run_unit_tests, run_e2e, tag_stable, promote).
  2. Docs-Only Fast Path Improvements:

    • Expanded doc-path matching to include metadata files (LICENSE, CODEOWNERS, issue/PR templates, CHANGELOG, site/, docs/, examples/).
    • Removed the --depth=50 shallow fetch limit in get_docs_only() so PR branches older than 50 commits evaluate diffs against GITHUB_BASE_REF accurately.
  3. Forked Workflow Fixes:

    • Re-added if: ${{ inputs.authenticated }} to the Setup netrc step in build-artifacts.yml so unauthenticated fork runs skip Artifactory proxy setup.
    • Enabled e2e/smoke/helm test execution on forked PRs (run_e2e=true) against locally built images in the runner, while strictly keeping GCR image retagging disabled (tag_stable=false).
  4. Required Status Gate (final-results):

    • Added tag-target to the needs: dependency list of final-results.
    • Validates that required jobs succeeded when their corresponding decision flags are true, protecting against silent false-greens from drifted if: conditions.
  5. Developer Tooling & Documentation:

    • Added ./.github/scripts/ci-preview.sh: Dry-run CLI helper to preview CI flags and job execution for any branch diff or simulated scenario.
    • Added ./.github/scripts/variables_test.sh: Unit test suite covering 54 matrix state combinations in variables.sh.
    • Created developer guide at docs/developer/CI-logic.md.
    • Updated skill definition in .agents/skills/nic-ci-pipelines/SKILL.md.

Testing & Verification

  • Decision Logic Unit Tests: Executed bash .github/scripts/variables_test.sh (54/54 tests passed).
  • Workflow Gating Validation: Executed bash .github/scripts/validate-workflow-gating.sh (all public workflows strictly gated).
  • CI Dry-Run Preview: Executed bash .github/scripts/ci-preview.sh across standard, forked, docs-only, and force scenarios.
  • Workflow Linting: Ran actionlint .github/workflows/*.yml with 0 errors.

@github-actions github-actions Bot added github_actions Pull requests that update Github_actions code chore Pull requests for routine tasks labels Jun 24, 2026
@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 57.51%. Comparing base (3d91941) to head (e952897).

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #10267   +/-   ##
=======================================
  Coverage   57.51%   57.51%           
=======================================
  Files         103      103           
  Lines       22857    22857           
=======================================
  Hits        13147    13147           
  Misses       8913     8913           
  Partials      797      797           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Package Report

Details gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx, 1.31.3-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-module-njs, 1.31.3+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-module-otel, 1.31.3+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 3.11.3~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx, 1.31.3-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-module-njs, 1.31.3+1.0.0-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-module-otel, 1.31.3+0.1.2-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 3.11.3~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 3.11.3~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 3.11.3~trixie, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 2.46.7~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-module-plus, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-plugin, 6.30.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 2.46.7~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-dos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 2.46.7~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, app-protect-dos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4, nginx-agent, 2.46.7~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx, 1.31.3-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-module-njs, 1.31.3.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-module-otel, 1.31.3.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-agent, 3.11.3, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx, 1.31.3-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-module-njs, 1.31.3.1.0.0-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-module-otel, 1.31.3.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-agent, 3.11.3, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-agent, 3.11.3, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus, 37.0.4-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-njs, 37.0.1.0.0-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-otel, 37.0.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-plus-module-fips-check, 37.0.0.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine, nginx-agent, 3.11.3, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-agent, 3.11.3, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus, 37.0.4-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-agent, 3.11.3, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-agent, 2.46.7, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect-ip-intelligence, 1.59.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect-attack-signatures, 2026.08.07-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect-threat-campaigns, 2026.08.06-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-agent, 2.46.7, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect-module-plus, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips, app-protect-plugin, 6.30.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx, 1.31.3-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-module-njs, 1.31.3+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-module-otel, 1.31.3+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 3.11.3-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx, 1.31.3-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-module-njs, 1.31.3+1.0.0-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-module-otel, 1.31.3+0.1.2-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 3.11.3-1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 3.11.3-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 3.11.3-1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 2.46.7-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 2.46.7-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-module-plus, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-plugin, 6.30.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 2.46.7-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, nginx-agent, 2.46.7-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-agent, 3.11.3~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-agent, 3.11.3-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect-attack-signatures, 2026.08.07-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect-threat-campaigns, 2026.08.06-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect-ip-intelligence, 1.59.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-agent, 3.11.3, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-module-plus, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-plugin, 6.30.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-agent, 3.11.3~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-module-plus, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-plugin, 6.30.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-agent, 3.11.3-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus, 37.0.4-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect-module-plus, 37.0.5.690.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, app-protect-plugin, 6.30.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-alpine-fips-agent, nginx-agent, 3.11.3, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus, 37.0.4-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, nginx-agent, 3.11.3~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect, 37.0+5.690.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-agent, app-protect-dos, 37+4.9.6-1~trixie, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, nginx-agent, 3.11.3-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-f61464bdc44257da4a62cc6a154e79a4-ubi-agent, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64

@sean-breen sean-breen changed the title Fix check for run_tests [CI] Pipeline optimisations Jun 25, 2026
@sean-breen
sean-breen requested a review from Copilot June 25, 2026 11:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR optimizes the GitHub Actions CI pipeline by refining when “docs-only” changes skip heavier CI work and by tightening the logic that decides when unit tests should run, especially in PR and merge queue contexts.

Changes:

  • Updates docs_only detection to compare against the PR/merge base and expands the set of “docs-only” paths to include repo metadata files (e.g., LICENSE, CODEOWNERS, templates).
  • Fixes run_tests skip logic to use the “stable image exists” check and restructures conditional execution to job-level gating for unit tests.
  • Improves CI result aggregation by including additional job results in the final summary gate.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/ci.yml Adjusts docs-only evaluation, test/build gating, and final-results dependency/result checks.
.github/scripts/variables.sh Enhances docs-only diff range logic and expands the whitelist of doc-only file patterns.

Comment thread .github/scripts/variables.sh Outdated
Comment thread .github/workflows/ci.yml Outdated
@sean-breen
sean-breen marked this pull request as ready for review July 2, 2026 14:47
@sean-breen
sean-breen requested a review from a team as a code owner July 2, 2026 14:47
@vepatel
vepatel requested a review from Copilot July 2, 2026 14:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (6)

.github/workflows/ci.yml:117

  • This Key Vault lookup step will fail on fork PRs because it requires Azure credentials from repo secrets. Gate it on steps.vars.outputs.forked_workflow == 'false' (and keep downstream steps consistent) so fork CI doesn't hard-fail.
      - name: Setup secrets
        id: secrets
        run: |

.github/workflows/ci.yml:129

  • google-github-actions/auth depends on the Key Vault outputs and should be skipped on fork PRs (no secrets/OIDC context). Without gating, the workflow will fail before it can decide whether to build/run tests.
      - name: Authenticate to Google Cloud
        id: auth
        uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
        with:

.github/workflows/ci.yml:136

  • Logging into the private GCR registry will fail on forks because the preceding auth step can't run. Add the same forked_workflow gate here to prevent the checks job from failing on external contributions.
      - name: Login to GCR
        uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
        with:

.github/workflows/ci.yml:143

  • This docker pull against a private registry will fail on forks (no registry auth). Skipping it when forked_workflow == 'true' is safe because the fork path already forces docker_build=true when non-doc changes are present.
      - name: Check if stable image exists
        id: stable_exists
        run: |

.github/workflows/ci.yml:267

  • unit-tests runs for fork PRs (which is good), but azure/login will fail there because repo secrets aren't available. Gate Azure login (and the following Key Vault / Codecov upload steps) on needs.checks.outputs.forked_workflow == 'false' so forks can still run tests without coverage upload.
      - name: Azure login
        uses: azure/login@532459ea530d8321f2fb9bb10d1e0bcf23869a43 # v3.0.0
        with:

.github/workflows/ci.yml:274

  • This Key Vault access for the Codecov token will fail on fork PRs. Add a fork gate; otherwise the whole unit-tests job fails instead of just skipping coverage upload for forks.
      - name: Setup secrets
        id: secrets
        run: |

Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/scripts/validate-workflow-gating.sh Outdated
Comment thread .github/workflows/ci.yml
AlexFenlon
AlexFenlon previously approved these changes Jul 2, 2026

@javorszky javorszky left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One change for request, and two question 🙂

Comment thread .github/scripts/validate-workflow-gating.sh Outdated
Comment thread .github/scripts/validate-workflow-gating.sh Outdated
Comment thread .github/scripts/validate-workflow-gating.sh Outdated
@github-project-automation github-project-automation Bot moved this from Todo ☑ to In Progress 🛠 in NGINX Ingress Controller Jul 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/ci.yml
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Sean Breen <101327931+sean-breen@users.noreply.github.com>
@vepatel
vepatel requested a review from javorszky July 22, 2026 08:37
Comment thread .github/scripts/variables.sh Outdated
local range
if [ -n "${GITHUB_BASE_REF:-}" ]; then
# PR or merge_group event: compare against the target branch.
git fetch --quiet --depth=50 origin "${GITHUB_BASE_REF}" 2>/dev/null || true

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any specific reason for 50 commit depth?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we rely on the the checkout action using a fetch depth of 0 here?


# Emits every CI decision flag as key=value lines for $GITHUB_OUTPUT.
get_ci_flags() {
echo "run_tests=$(get_run_tests)"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this still needed?

Comment thread .github/workflows/ci.yml Outdated
github.repository == 'nginx/kubernetes-ingress' && (
!cancelled() )
runs-on: ubuntu-24.04
needs: [checks, setup-matrix, tag-stable, build-artifacts, smoke-tests-oss, smoke-tests-plus, smoke-tests-nap, package-tests, helm-tests, staticcheck, govulncheck, unit-tests, verify-codegen]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we include tag-target?

password ${{ secrets.ARTIFACTORY_TOKEN }}
EOF
chmod 600 $HOME/.netrc
if: ${{ inputs.force || inputs.authenticated == 'true' }}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we removing the check for authenticated users? It will try to setup the go proxy credential for forked workflows which will never work

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the check to the top of the step at line 88

Comment thread .github/scripts/variables.sh Outdated
Comment on lines +182 to +183
# Forks cannot access the authenticated registry, so they build artifacts but
# skip the e2e workflow.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This statement is incorrect, forked workflows do run e2e tests, they just need to build the image under test in that job. Unless we are changing this behaviour?

@sean-breen

Copy link
Copy Markdown
Contributor Author

Just getting back to this now, addressing feedback!


### Centralized CI Decision Logic

CI execution flags are computed during the `checks` job via [`.github/scripts/variables.sh`](file:///Users/s.breen/work/src/github.com/nginx/nic/.github/scripts/variables.sh) and consumed by downstream jobs:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with a repo link

Comment thread docs/developer/CI-logic.md Outdated

| Feature | The Legacy Approach | The New Architecture |
| --- | --- | --- |
| **Logic Location** | Scattered inline bash scripts & duplicated `if:` expressions inside `.github/workflows/ci.yml` | Centralized in pure bash functions inside [`.github/scripts/variables.sh`](file:///Users/s.breen/work/src/github.com/nginx/nic/.github/scripts/variables.sh) |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with repo links in this table

- `tag_stable`: Gates image retagging in GCR (`false` for forks).
- `promote`: Gates image promotion on forced release branch runs.

Detailed architecture and decision diagrams are documented in [docs/developer/CI-logic.md](file:///Users/s.breen/work/src/github.com/nginx/nic/docs/developer/CI-logic.md).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with a repo link

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops! Updated 👍

@github-actions github-actions Bot added the python Pull requests that update Python code label Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Pull requests for routine tasks github_actions Pull requests that update Github_actions code python Pull requests that update Python code

Projects

Status: In Progress 🛠

Development

Successfully merging this pull request may close these issues.

Release stages modification Modify pipeline to avoid running full e2e test

6 participants