Skip to content
Merged
Show file tree
Hide file tree
Changes from 107 commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
58d9674
Add initial Dockerfile to build NGINX OSS images based on ubi9-minimal
shaun-nx Sep 22, 2025
20d131e
Update repo files and use red hat registered ubi-minimal
shaun-nx Sep 22, 2025
3022205
Merge branch 'main' into feat/ubi-base-image
shaun-nx Sep 22, 2025
f154680
Get required UBI packages for NGINX and install agent
shaun-nx Sep 23, 2025
42c4cec
Merge branch 'main' into feat/ubi-base-image
shaun-nx Sep 23, 2025
b880fc7
Update entrypoint to find NGINX master process. Ensure `/tmp` is writ…
shaun-nx Sep 24, 2025
c46e928
Merge branch 'main' into feat/ubi-base-image
shaun-nx Sep 24, 2025
caaf91a
Build control plane from UBI base image. Move current Alpine dockerfi…
shaun-nx Sep 24, 2025
88b25a0
Operator-SDK skeleton (#3944)
tataruty Sep 24, 2025
25cee52
Add Dockerfile to build NGINX Plus image based on ubi9-minimal
shaun-nx Sep 24, 2025
fd1498c
Fix eof errors
shaun-nx Sep 24, 2025
2e9bac0
Merge branch 'feat/openshift-support' into feat/ubi-base-image
shaun-nx Sep 24, 2025
85d8358
Move alpine base Dockerfiles back to build dir
shaun-nx Sep 25, 2025
e229ae1
Merge branch 'main' into feat/openshift-support
shaun-nx Sep 25, 2025
0f03b47
Merge branch 'feat/openshift-support' into feat/ubi-base-image
shaun-nx Sep 25, 2025
d28416a
Fix merge conflict
shaun-nx Sep 25, 2025
523ebd1
Update labels
shaun-nx Sep 25, 2025
31750dd
Update lables for plus builds
shaun-nx Sep 25, 2025
7146752
Update lables to distinguish between OSS and Plus
shaun-nx Sep 25, 2025
e776ae1
Make NGINX Plus version configurable
shaun-nx Sep 25, 2025
0746604
Update pipeline to build and publish UBI images
shaun-nx Sep 25, 2025
31f0e52
Update UBI Dockerfile for NGINX Plus to use certs and keys from pipeline
shaun-nx Sep 25, 2025
cb75255
Ensure build_os is added as a suffix to our tags
shaun-nx Sep 25, 2025
c5e49a3
Update build/ubi/Dockerfile.nginx
shaun-nx Sep 25, 2025
bc7c10f
Update lables and remove BASE_IMAGE
shaun-nx Sep 25, 2025
1c76006
Merge branch 'feat/ubi-base-image' into feat/pipeline-ubi-builds
shaun-nx Sep 25, 2025
6eefb2e
Add suffix to all types in Docker meta build stage
shaun-nx Sep 25, 2025
cbcd7ca
Remove local reference to crt and key files
shaun-nx Sep 25, 2025
4924f3c
Merge branch 'feat/ubi-base-image' into feat/pipeline-ubi-builds
shaun-nx Sep 25, 2025
0a624fd
Add bundle, update RBAC, use root helm chart (#3961)
ciarams87 Sep 25, 2025
048c38c
Merge branch 'feat/openshift-support' into feat/ubi-base-image
shaun-nx Sep 26, 2025
d9155b2
Set permissions on required directories. Update lables
shaun-nx Sep 26, 2025
c2c0f47
Merge branch 'feat/ubi-base-image' into feat/pipeline-ubi-builds
shaun-nx Sep 26, 2025
5cb3854
Add build_os to conformance and functional test matrix. Update tags f…
shaun-nx Sep 26, 2025
a89cc6f
Ensure unique conformance profile name based on build os
shaun-nx Sep 26, 2025
d71f895
Fix pre-commit errors
shaun-nx Sep 26, 2025
0190c83
Update conformance profile output with additional inputs
shaun-nx Sep 26, 2025
c4c696f
Use ngf meta output in fonromance profile name
shaun-nx Sep 26, 2025
a418b6f
Update conformance test name
shaun-nx Sep 26, 2025
214d789
Ensure build os is passed to functional and conformance tests
shaun-nx Sep 26, 2025
42a3505
Use ngf-meta.output.version in place of build os
shaun-nx Sep 26, 2025
2636921
Move base dockerfiles back to root build dir
shaun-nx Sep 26, 2025
be670b0
Update .github/workflows/conformance.yml
shaun-nx Sep 26, 2025
c1cb9bc
Update .github/workflows/functional.yml
shaun-nx Sep 26, 2025
8f3d872
Update .github/workflows/conformance.yml
shaun-nx Sep 26, 2025
66ce6a2
Update .github/workflows/functional.yml
shaun-nx Sep 26, 2025
873d56f
Update .github/workflows/functional.yml
shaun-nx Sep 26, 2025
8f1a6f7
Update .github/workflows/functional.yml
shaun-nx Sep 26, 2025
168e2b0
Update Makefile
shaun-nx Sep 26, 2025
f653702
Merge branch 'feat/ubi-base-image' into feat/pipeline-ubi-builds
shaun-nx Sep 26, 2025
00dbbc6
Ensure subscription manage and shadowutils are removed
shaun-nx Sep 26, 2025
16e71b9
Merge branch 'feat/ubi-base-image' into feat/pipeline-ubi-builds
shaun-nx Sep 26, 2025
c08dfeb
Debug conformance test name
shaun-nx Sep 29, 2025
bf3f138
Add production-release as an input for functional tests
shaun-nx Sep 29, 2025
ff6a102
Update .github/workflows/functional.yml
shaun-nx Sep 29, 2025
a6a21aa
Add tag_suffix to workflow call for conformance and functional workflows
shaun-nx Sep 29, 2025
6aed809
Remove tag_suffix and updated build-os variable
shaun-nx Sep 29, 2025
99a75d6
Fix NFG docker meta
shaun-nx Sep 29, 2025
d424ca1
Fix tags and add BUILD_OS to build args
shaun-nx Sep 29, 2025
eb6991f
Revert makefile
shaun-nx Sep 29, 2025
d911c35
Eneusre right dockerfile is used at build stage
shaun-nx Sep 29, 2025
54c1fa1
Fix forward-slash placement
shaun-nx Sep 29, 2025
b0cf702
Add Dockerfiles to build images from UBI9 minimal (#3941)
shaun-nx Sep 29, 2025
399d258
Merge branch 'feat/openshift-support' into feat/pipeline-ubi-builds
shaun-nx Sep 29, 2025
c1ee265
Update `cache-froma for functional and conformance tests
shaun-nx Sep 30, 2025
3207622
Temp - Remove build OS from functional test. Revert back to main for …
shaun-nx Sep 30, 2025
6350f68
Fix pre-commit error
shaun-nx Sep 30, 2025
5590673
Add repo secrets to functional and conformance tests
shaun-nx Sep 30, 2025
9f9cc89
Update `cache-from` and `cache-to` in `build.yml`
shaun-nx Sep 30, 2025
35540b1
Add build-operator step to ci
shaun-nx Sep 30, 2025
4962d4b
Fix build-os naming
shaun-nx Sep 30, 2025
917d7c4
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Sep 30, 2025
83666f0
Use build.yml for operator build
shaun-nx Sep 30, 2025
f4b6cbd
re-add secrets to functional and conformance tests
shaun-nx Sep 30, 2025
5a5a9ff
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Sep 30, 2025
07eb4c1
Update dockerfile path for functional tests
shaun-nx Sep 30, 2025
699d285
Remove build os from build args
shaun-nx Sep 30, 2025
c657b4a
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Sep 30, 2025
4f9b51b
Remove secrets from build step
shaun-nx Oct 1, 2025
8e1bd2f
test: Update both UBI dockerfiles to use `redhat/ubi9` instead of `ub…
shaun-nx Oct 1, 2025
ffe3cfb
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Oct 1, 2025
e78dac2
Revert back to ubi9 minimal. test install procps-ng iproute iputils c…
shaun-nx Oct 1, 2025
9f36704
Remove curl and corutils from install
shaun-nx Oct 1, 2025
d26e736
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Oct 1, 2025
cb5061b
Remove additioanl libraries
shaun-nx Oct 1, 2025
4ae026a
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Oct 1, 2025
6a9b11d
Update main temaplte to use full path to otel module
shaun-nx Oct 1, 2025
481b00d
Fix unit test
shaun-nx Oct 1, 2025
b14df6c
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Oct 1, 2025
867c5a0
Copy modules from `/usr/lib64/nginx/modules/` to `/usr/lib/nginx/modu…
shaun-nx Oct 1, 2025
b039022
Merge branch 'feat/pipeline-ubi-builds' into feat/pipeline-openshift-…
shaun-nx Oct 1, 2025
0189049
Update pipeline to build and publish UBI images (#3958)
shaun-nx Oct 2, 2025
b5d5a3d
Merge branch 'feat/openshift-support' into feat/pipeline-openshift-op…
shaun-nx Oct 2, 2025
a0584eb
Operator-SDK skeleton (#3944)
tataruty Sep 24, 2025
dae978d
Add bundle, update RBAC, use root helm chart (#3961)
ciarams87 Sep 25, 2025
d2fffc9
Add Dockerfiles to build images from UBI9 minimal (#3941)
shaun-nx Sep 29, 2025
9a4d4f7
Update pipeline to build and publish UBI images (#3958)
shaun-nx Oct 2, 2025
4504014
Update readmes and makefiles (#3989)
ciarams87 Oct 2, 2025
7e91d74
Merge branch 'feat/openshift-support' into feat/pipeline-openshift-op…
shaun-nx Oct 2, 2025
250b394
Resolve additional conflicts
shaun-nx Oct 2, 2025
633b235
Add input for operator version
shaun-nx Oct 2, 2025
e89d849
Merge branch 'feat/openshift-support' into feat/pipeline-openshift-op…
shaun-nx Oct 2, 2025
6b1c6ec
Update .github/workflows/production-release.yml
shaun-nx Oct 2, 2025
77de6aa
Update .github/workflows/production-release.yml
shaun-nx Oct 2, 2025
7ed9c85
Update .github/workflows/production-release.yml
shaun-nx Oct 2, 2025
904d24e
Merge branch 'feat/openshift-support' into feat/pipeline-openshift-op…
shaun-nx Oct 2, 2025
0ed069c
Update release process docs to include steps for operator version
shaun-nx Oct 2, 2025
62dc230
Define operator version as optional
shaun-nx Oct 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ jobs:
name=ghcr.io/${{ github.repository_owner }}/nginx-gateway-fabric/nginx,enable=${{ inputs.image == 'nginx' && github.event_name != 'pull_request' }}
name=docker-mgmt.nginx.com/nginx-gateway-fabric/nginx-plus,enable=${{ inputs.image == 'plus' && github.event_name != 'pull_request' }}
name=us-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/nginx-gateway-fabric/nginx-plus,enable=${{ inputs.image == 'plus' && github.event_name != 'pull_request' }}
name=ghcr.io/${{ github.repository_owner }}/nginx-gateway-fabric/operator,enable=${{ inputs.image == 'operator' && github.event_name != 'pull_request' }}
name=localhost:5000/nginx-gateway-fabric/${{ inputs.image }}
flavor: |
latest=${{ (inputs.tag != '' && 'true') || 'auto' }}
Expand Down Expand Up @@ -147,7 +148,7 @@ jobs:
- name: Build Docker Image
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
file: ${{ inputs.build-os != '' && format('build/{0}/Dockerfile{1}', inputs.build-os, inputs.image == 'nginx' && '.nginx' || inputs.image == 'plus' && '.nginxplus' || '') || format('build/Dockerfile{0}', inputs.image == 'nginx' && '.nginx' || inputs.image == 'plus' && '.nginxplus' || '') }}
file: ${{ inputs.image == 'operator' && 'operators/Dockerfile' || (inputs.build-os != '' && format('build/{0}/Dockerfile{1}', inputs.build-os, inputs.image == 'nginx' && '.nginx' || inputs.image == 'plus' && '.nginxplus' || '') || format('build/Dockerfile{0}', inputs.image == 'nginx' && '.nginx' || inputs.image == 'plus' && '.nginxplus' || '')) }}
context: "."
target: ${{ inputs.image == 'ngf' && 'goreleaser' || '' }}
tags: ${{ steps.meta.outputs.tags }}
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ on:
required: false
type: string
default: ''
operator_version:
required: false
type: string
default: ''
dry_run:
required: false
type: boolean
Expand Down Expand Up @@ -388,6 +392,23 @@ jobs:
id-token: write # for docker/login to login to NGINX registry
secrets: inherit

build-operator:
name: Build Operator images
needs: [vars, binary]
uses: ./.github/workflows/build.yml
with:
image: operator
platforms: "linux/arm64, linux/amd64"
tag: ${{ inputs.operator_version || '' }}
dry_run: ${{ inputs.dry_run || false }}
runner: ${{ github.repository_owner == 'nginx' && (inputs.is_production_release || (github.event_name == 'push' && github.ref == 'refs/heads/main')) && 'ubuntu-24.04-amd64' || 'ubuntu-24.04' }}
permissions:
contents: read # for docker/build-push-action to read repo content
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
packages: write # for docker/build-push-action to push to GHCR
id-token: write # for docker/login to login to NGINX registry
secrets: inherit

functional-tests:
name: Functional tests
needs: [vars, build-oss, build-plus]
Expand Down
18 changes: 17 additions & 1 deletion .github/workflows/production-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ on:
description: 'Release version (e.g., v2.0.3)'
required: true
type: string
operator-version:
description: 'Operator release version (e.g., v1.0.0). If not provided, defaults to the same as version'
required: false
type: string
default: ''
dry_run:
description: 'If true, does a dry run of the production workflow'
required: false
Expand All @@ -33,6 +38,7 @@ jobs:
echo "Validating release from: ${GITHUB_REF}"

INPUT_VERSION="${{ github.event.inputs.version }}"
INPUT_OPERATOR_VERSION="${{ github.event.inputs.operator-version }}"

# Validate version format
if [[ ! "${INPUT_VERSION}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
Expand All @@ -41,8 +47,17 @@ jobs:
exit 1
fi

# Validate version format if operator version is provided
if [[ -n "${INPUT_OPERATOR_VERSION}" && ! "${INPUT_OPERATOR_VERSION}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "❌ Invalid operator version format: ${INPUT_OPERATOR_VERSION}"
echo "Expected format: v1.2.3"
exit 1
fi


echo "✅ Valid release branch: ${GITHUB_REF}"
echo "✅ Valid version format: ${INPUT_VERSION}"
[[ -n "${INPUT_OPERATOR_VERSION}" ]] && echo "✅ Valid operator version format: ${INPUT_OPERATOR_VERSION}"

- name: Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
Expand All @@ -62,7 +77,7 @@ jobs:
git tag -a "${VERSION}" -m "Release ${VERSION}"

if [[ "${{ inputs.dry_run }}" == "true" ]]; then
echo "DRY RUN: Would push tag ${VERSION}"
echo "DRY RUN: Would push tag ${VERSION} and operator tag ${{ github.event.inputs.operator-version || '' }}"
git push --dry-run origin "${VERSION}"
else
git push origin "${VERSION}"
Expand All @@ -76,6 +91,7 @@ jobs:
with:
is_production_release: true
release_version: ${{ github.event.inputs.version }}
operator_version: ${{ github.event.inputs.operator-version }}
dry_run: ${{ github.event.inputs.dry_run }}
secrets: inherit
permissions:
Expand Down
1 change: 1 addition & 0 deletions docs/developer/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ To create a new release, follow these steps:
- If the supported Gateway API minor version has changed since the last release, add a note to the release notes explaining if the previous version is no longer supported.
- Merge the release PR once it has received all necessary approvals.
6. Once you are ready to release, run the [Production Release](https://github.com/nginx/nginx-gateway-fabric/actions/workflows/production-release.yml) workflow with the correct tag e.g. `v2.1.0`. (Note: It is also possible to do a dry run of the production release workflow for verification if required. This will not push the tag, images, and chart, and won't publish the release)
If this release includes an updated release of our [Operator](https://github.com/nginx/nginx-gateway-fabric/tree/main/operators), include the new version as well e.g. `v1.0.1`
As a result, the CI/CD pipeline will:
- Create and push the tag
- Build NGF, NGINX and NGINX Plus container images with the release tag `X.Y.Z` and push them to the registries.
Expand Down