Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
809ad11
Use `nft destroy` to simplify the UDN cleanup code
danwinship Jan 19, 2026
7d408c1
Remove IC zone migration HACK code
Jan 21, 2026
1d5e616
Improve nodenft.MatchNFTRules behavior
danwinship Dec 5, 2024
3e6b2a3
parallelize multi-platform Docker image builds
Soli0222 Jan 15, 2026
9e1889e
use native arm64 runners instead of QEMU emulation
Soli0222 Jan 19, 2026
2c9f051
enable fail-fast to prevent partial releases
Soli0222 Jan 19, 2026
d3b87ad
Add PodSecurity compliance to util.go
jechen0648 Jan 20, 2026
0974f2e
Unify the metrics servers used by ovnkube-node and OVS/OVN metrics
Jan 27, 2026
ee8c0b9
Merge pull request #5862 from jechen0648/add-pod-security
tssurya Jan 28, 2026
50a6412
Merge pull request #5865 from ricky-rav/OCPBUGS-70130
tssurya Jan 28, 2026
acb088c
Fix IC cluster cleanup tests zone configuration
Jan 28, 2026
9156a82
Merge pull request #5889 from ricky-rav/testICUpgradeRemoval
kyrtapz Jan 28, 2026
6379332
Clear stale conntrack UDP entries for nodePorts
pliurh Aug 27, 2025
ea55b70
Add a e2e test for NodePort service
pliurh Sep 8, 2025
e86ea08
Add missing BGP support to kind-helm.sh
trozet Jan 26, 2026
1191db6
Fix kind-helm.sh image
trozet Jan 26, 2026
4330306
Add shell extension to kind-common
trozet Jan 26, 2026
13bcba2
Enable bgp helm lane
trozet Jan 26, 2026
d30130a
Add frr install to helm as well
trozet Jan 27, 2026
aaea191
Consolidate BGP related params into kind-common.sh
trozet Jan 27, 2026
80d5ce4
Consolidate variables between kind-helm.sh and kind.sh
trozet Jan 27, 2026
ed019b6
Remove stale methods from kind-helm.sh
trozet Jan 27, 2026
c26b190
conslidate delete function to kind-common.sh
trozet Jan 27, 2026
701ff43
Add missing Get permissions for RA controller
trozet Jan 27, 2026
4746472
Unify kind create cluster
trozet Jan 27, 2026
1ae9371
E2E skip mulihoming ipv6 and dualstack for ipv4
trozet Jan 27, 2026
364317d
Unify checking depenencies between kind and kind-helm
trozet Jan 27, 2026
10827ae
Align HA labeling and removing taints
trozet Jan 28, 2026
060c0fd
UDN controller: Add EVPN configuration translation to NAD
mattedallo Dec 10, 2025
86c7132
UDN controller: Add cluster-wide VID allocation for EVPN
mattedallo Dec 15, 2025
7c70ab2
UDN controller: Add VTEP validation for EVPN CUDNs
mattedallo Jan 19, 2026
e94bb52
UDN controller: Add EVPN feature flag gating
mattedallo Jan 27, 2026
296f803
Merge pull request #5801 from mattedallo/evpn-udn-controller
kyrtapz Jan 30, 2026
ed1be24
Fix race condition in GetNadNamespaces
kyrtapz Jan 29, 2026
67b1418
Merge pull request #5891 from kyrtapz/concurrent_map_access_fix
trozet Jan 30, 2026
74032ba
Add EVPN support to RouteAdvertisements controller
kyrtapz Dec 17, 2025
197f297
RA controller: require EVPN feature flag for EVPN networks
kyrtapz Jan 30, 2026
af632a9
Merge pull request #5807 from kyrtapz/ra_ctrl_evpn
kyrtapz Feb 2, 2026
b7b7770
fix: panic in runKubeletRestartTracker when reading from closed dbus …
booxter Feb 2, 2026
b35671c
move mtu caculation out of loop
cathy-zhou Jan 7, 2026
0d2e63c
no OVS bridges on dpu-host
cathy-zhou Jan 7, 2026
2b1e7ef
Set always_learn_from_arp_request to false for cluster router
cathy-zhou Jan 8, 2026
e83c0c7
cleanup gateway manager only for primary network
cathy-zhou Jan 8, 2026
5dccd36
update node switch external-ids
cathy-zhou Jan 8, 2026
3ac3513
misc fixes
cathy-zhou Jan 8, 2026
a9e4505
Fixes race with cluster manager UDN test
trozet Feb 2, 2026
721f893
Merge pull request #5837 from cathy-zhou/syncDownstream
trozet Feb 3, 2026
d46df94
Merge pull request #5905 from trozet/fix-issue-5899
trozet Feb 3, 2026
468d472
Remove limit on ovs-node
jtaleric Feb 2, 2026
df4be4e
Merge pull request #5902 from booxter/coredump-issue-5878-dbus
trozet Feb 3, 2026
9a13328
Merge pull request #5904 from jtaleric/remove-limit
trozet Feb 3, 2026
5e66667
Prevent restoration of k8s.ovn.org/egressip-mark annotation
arghosh93 Jan 22, 2026
9fb7e85
Add ValidatingAdmissionPolicy for EgressIP
arghosh93 Nov 18, 2025
ddb32d4
egressip: fix duplicate IP assignment on control-plane restart
cgoncalves Nov 27, 2025
71499fb
Merge pull request #5726 from arghosh93/egressip_validating_admission…
tssurya Feb 4, 2026
1c3a7ce
Merge pull request #5760 from cgoncalves/duplicate-eip
tssurya Feb 4, 2026
f23cf1a
Merge pull request #5850 from Soli0222/enhance/docker-matrix-builds
tssurya Feb 4, 2026
0bf7176
e2e: Collect binaries for collected coredumps
booxter Feb 2, 2026
b8e644b
no-overlay: Add no-overlay and managed BGP configuration options
pliurh Oct 23, 2025
4eee03c
no-overlay: Kind support for deploying no-overlay enabled clusters
pliurh Oct 24, 2025
0c76a90
no-overlay: Helm support for no-overlay enabeld clusters
pliurh Jan 23, 2026
67d3348
no-overlay: Set transport defaults and add validation
pliurh Oct 24, 2025
8312c0e
no-overlay: Implement no-overlay for the default network
pliurh Jan 23, 2026
546328c
no-overlay: add toReceive routes for pod subnets to FrrConfiguration
pliurh Dec 23, 2025
5db3201
no-overlay: add CI test lanes
pliurh Nov 18, 2025
ff07990
test: mark test IP as deprecated to prevent gateway IP selection
pliurh Dec 1, 2025
322e391
ANP: Skip redundant status updates to reduce API server load
tssurya Feb 4, 2026
60b5d7e
Merge pull request #5780 from pliurh/no-overlay-default
trozet Feb 5, 2026
b23de6b
Merge pull request #5912 from tssurya/fix-anp-cpu-spike
tssurya Feb 5, 2026
9f52f29
Merge pull request #5901 from booxter/coredump-binaries-collect
trozet Feb 6, 2026
bc93b2c
Organize and add CUDN/UDN workloads
jtaleric Jan 28, 2026
1d5ee82
EgressFirewall: Use exponential backoff to refresh IP addresses for D…
arkadeepsen Jan 21, 2026
749bedb
Merge pull request #5856 from jtaleric/more-workloads
trozet Feb 9, 2026
9d608cc
Add gateway options for dpu in IC mode
crnithya Dec 11, 2025
bf64ee0
Enable DPUs to watch on a separate DPU Host cluster
crnithya Dec 11, 2025
8043a21
Enable interconnect and networksegmentation in DPU-Hosts podspec
crnithya Dec 11, 2025
d0e79e9
Helm chart changes for supporing DPU in IC mode
crnithya Dec 12, 2025
6882878
Daemonset changes for supporting DPU in IC mode
crnithya Jan 12, 2026
3d71dbc
Documentation for launching DPU and DPU Host clusters
crnithya Jan 14, 2026
2dc1f0f
Add ENABLE_NO_OVERLAY in dpu and dpu host helm charts
crnithya Feb 6, 2026
c44cbbf
nodeallocator: fix subnet leak when hybrid overlay is enabled
Dec 11, 2025
4aed37d
Merge pull request #5867 from arkadeepsen/efw-default-ttl
npinaeva Feb 10, 2026
c7ac8ff
Merge pull request #5839 from crnithya/dpu_ic_changes
trozet Feb 10, 2026
3b14133
Move from chassis hostname -> chassis ID
trozet Feb 4, 2026
396f4a9
Merge pull request #5911 from trozet/fix_chassis_id
trozet Feb 10, 2026
95c0a26
Fix asynchronous race with nad controller UT
trozet Feb 9, 2026
515d4c7
Fixes e2e sflow test
trozet Feb 10, 2026
e527aa8
Adds DPU blog
trozet Feb 11, 2026
b2621f1
Merge pull request #5954 from trozet/issue-4221
npinaeva Feb 12, 2026
0b5af87
Merge pull request #5956 from trozet/dpu-blog
trozet Feb 12, 2026
2edd430
fix kind load docker-image content digest not found
Feb 13, 2026
8dffca2
Merge pull request #5968 from l8huang/kind-vteps-ci
kyrtapz Feb 13, 2026
31ee5d7
Add SAIC Motor to ADOPTERS
fangyuchen86 Feb 13, 2026
6f78d1d
Handle Docker 29+ "invalid IP" response for IP addresses
kyrtapz Feb 13, 2026
e95dc86
Make node gateway Dynamic UDN aware
trozet Feb 5, 2026
e624ec9
Fix GetActiveNetworkForNamespace usage for NetPol
trozet Feb 5, 2026
b79e6f9
Fix Dynamic UDN with services controller
trozet Feb 5, 2026
3ae25d2
Guard GetPrimaryNADForNamespace when netseg not enabled
trozet Feb 5, 2026
f1a65d4
Fix EgressFirewall GetActiveNetworkForNamespace
trozet Feb 6, 2026
9ab81e5
Bring EgressIP inline with NAD Reconciliation
trozet Feb 6, 2026
a114896
E2E: Add integration UDN test
trozet Feb 6, 2026
90e65d6
egressip: force pod assignment reprogram when pod IP changes
trozet Feb 7, 2026
67dfeaf
egressip: trigger immediate retry when UDN pod port cache is populated
trozet Feb 7, 2026
1624049
GetActiveNetworkForNamespace Refactor
trozet Feb 10, 2026
a760e77
Improve EgressFW subnet parsing
trozet Feb 13, 2026
0e44890
EgressIP: Fix crash from mutating node informer object
trozet Feb 9, 2026
3cfbaff
Fix hybrid overlay mutating informer pod object
trozet Feb 11, 2026
b95fc80
Fixes gateway egress IP node update logic
trozet Feb 11, 2026
16480b9
fix issues for adding SAIC Motor to Adopters
fangyuchen86 Feb 14, 2026
3fe75a1
Merge branch 'master' into add-saic-motor-adopter
fangyuchen86 Feb 14, 2026
3444172
Merge pull request #5951 from trozet/coredump_egressip
trozet Feb 14, 2026
1a5c4b6
Merge pull request #5943 from trozet/fix-dudn-startup
trozet Feb 14, 2026
32f5e7c
Fixes Egress IP Tracker UT
trozet Feb 15, 2026
7606fd8
CUDN: cleanup NADs in terminating namespaces without pods
kyrtapz Jan 28, 2026
c2c8e8e
Reduce obj_retry.go log spam
kyrtapz Feb 12, 2026
56f2d8d
Update OVN observability documentation
jotak Feb 16, 2026
777d7bf
Merge pull request #5888 from kyrtapz/cudn_nad_cleanup
kyrtapz Feb 16, 2026
8f35d00
Merge pull request #5964 from kyrtapz/log_spam
kyrtapz Feb 17, 2026
447b8d1
Mention -add-ovs-collector to start sampling
jotak Feb 17, 2026
db0d055
Merge pull request #5982 from trozet/issue-5953
trozet Feb 17, 2026
d9888a1
fix live migration link navigation
Feb 18, 2026
c656ee6
Merge pull request #5991 from ayushich76/fix-live-migration-link-clean
trozet Feb 18, 2026
cda27a6
Merge pull request #5972 from fangyuchen86/add-saic-motor-adopter
trozet Feb 18, 2026
32cbabc
Speed up BGP isolation e2e tests
kyrtapz Feb 12, 2026
24efc26
Reuse test setup across BGP isolation table entries
kyrtapz Feb 12, 2026
d1daa85
E2E: Fixes flaking ANP ACL logging
trozet Feb 18, 2026
9caab0e
cleanup logical entities for stale primary networks
cathy-zhou Feb 6, 2026
005e15b
add unit tests for stale primary UDN cleanup
cathy-zhou Feb 7, 2026
6f5d79a
Merge pull request #5994 from trozet/fix_e2e_anp_test
trozet Feb 18, 2026
9137553
Reduce memory allocation by OpenFlow Manager
trozet Feb 15, 2026
2d3e48b
Adds benchmark test for OpenFlow stream reader
trozet Feb 15, 2026
2b1f4a8
e2e: clean up stale networks before VRF-Lite BGP tests
booxter Feb 4, 2026
9185b71
Merge pull request #5931 from booxter/e2e-clean-up-old-networks-if-cl…
trozet Feb 19, 2026
3b98dae
Fixes race with egress ip + node ip mgr
trozet Feb 13, 2026
7feb123
Continue trying to assign egressIP on conflict
trozet Feb 13, 2026
fd27015
Minimize ACLs by combining ipBlocks into single ACL
pperiyasamy Feb 11, 2026
843ceff
Trivial E2E egress IP fixes
trozet Feb 18, 2026
75d2f8e
e2e: fix static IP collision in ValidatingAdmissionPolicy test
booxter Feb 19, 2026
0231350
Merge pull request #5981 from trozet/openflow_mgr_scale
trozet Feb 19, 2026
625f232
Merge pull request #5944 from cathy-zhou/cleanup
trozet Feb 19, 2026
6abe05d
Merge pull request #5998 from booxter/e2e-fix-ip-allocated-already-error
trozet Feb 19, 2026
6fa4173
Merge pull request #5857 from danwinship/nftables-unit-test-debugging
trozet Feb 20, 2026
92a6268
Merge pull request #5959 from pperiyasamy/reduce-acls-np-ipblocks
trozet Feb 20, 2026
1ae04e5
Merge pull request #5973 from trozet/fix-egress-ip-node-race
trozet Feb 20, 2026
2728e94
Merge pull request #5858 from danwinship/nftables-destroy
npinaeva Feb 20, 2026
58c5dc9
Adds support for bypassing network policy for ICMP/ICMPv6
trozet May 13, 2025
25a4e05
docs: Add section on how to debug coredumps from non-go binaries
booxter Feb 20, 2026
a35227a
Merge pull request #6003 from booxter/debug-gdb
trozet Feb 20, 2026
bcb7ec9
Allow emitting metrics on a single endpoint
Jan 28, 2026
c270210
Merge pull request #5884 from l8huang/metrics-one-ep
npinaeva Feb 23, 2026
8a2ef28
Merge pull request #5992 from trozet/fix_e2e_egressip_frag
trozet Feb 23, 2026
6b86da4
Merge pull request #5986 from jotak/ovnkobserv-doc
trozet Feb 23, 2026
63468cc
Adds kind.sh and helm support for --allow-icmp-network-policy
trozet May 14, 2025
69afd47
Adds E2E testing for ICMP NP bypass
trozet Jan 30, 2026
ca967b8
Adds unit test for stale ICMP network policy ACL
trozet Feb 23, 2026
d033767
Add Nutanix to adopters page
Aminiok Feb 24, 2026
158c9c2
Merge pull request #6008 from Aminiok/patch-2
trozet Feb 24, 2026
533f66e
Fix UDN network controller deadlock due to stopChan nil race
trozet Feb 23, 2026
9d7b70f
docs: user-defined-networks: Fix markdown syntax
tonejito Feb 25, 2026
0b82e64
docs: user-defined-network: Fix 'l2-UDN' image link
tonejito Feb 25, 2026
8c2c758
Merge pull request #6005 from trozet/fix_stop_channel_race
npinaeva Feb 25, 2026
3c67139
(B)ANP conformance: update framework to use retries
npinaeva Feb 25, 2026
15d73b3
Revert "(B)ANP conformance: update framework to use retries"
npinaeva Feb 25, 2026
b254782
Merge pull request #6015 from tonejito/tonejito-6014-udn-markdown
trozet Feb 25, 2026
7e7538d
Merge pull request #5247 from trozet/allow_global_icmp_netpol
trozet Feb 25, 2026
3a52871
Merge remote-tracking branch 'upstream/master' into d/s-merge-02-25-2026
Feb 25, 2026
2126516
sync test annotations with upstream changes
Feb 25, 2026
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
224 changes: 206 additions & 18 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,24 @@ env:
UBUNTU_IMAGE_NAME: ovn-kube-ubuntu
BUILDER_IMAGE: quay.io/projectquay/golang:1.24
jobs:
build:
name: Build Images
runs-on: ubuntu-latest
# Build Fedora image for each platform
build-fedora:
name: Build Fedora (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: true
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV

- name: Check out code into the Go module directory
uses: actions/checkout@v4

Expand All @@ -39,8 +53,8 @@ jobs:
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up environment
run: |
export GOPATH=$(go env GOPATH)
Expand All @@ -64,23 +78,19 @@ jobs:
pushd dist/images
echo "ref: ${BRANCH} commit: ${COMMIT}" > git_info
popd

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3

- name: Extract metadata (tags, labels) for fedora ovn-k image
id: meta-fedora
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.FEDORA_IMAGE_NAME }}

- name: Build and push Fedora based Docker image
id: build
uses: docker/build-push-action@v5
with:
builder: ${{ steps.buildx.outputs.name }}
Expand All @@ -89,23 +99,201 @@ jobs:
push: true
build-args: |
BUILDER_IMAGE=${{ env.BUILDER_IMAGE }}
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta-fedora.outputs.tags }}
labels: ${{ steps.meta-fedora.outputs.labels }}
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=fedora-${{ env.PLATFORM_PAIR }}
cache-to: type=gha,mode=max,scope=fedora-${{ env.PLATFORM_PAIR }}
outputs: type=image,name=${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.FEDORA_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-fedora-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

# Merge Fedora multi-platform images
merge-fedora:
name: Merge Fedora
runs-on: ubuntu-latest
needs: build-fedora
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-fedora-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the GH Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for fedora ovn-k image
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.FEDORA_IMAGE_NAME }}

- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.FEDORA_IMAGE_NAME }}@sha256:%s ' *)

- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.FEDORA_IMAGE_NAME }}:${{ steps.meta.outputs.version }}

# Build Ubuntu image for each platform
build-ubuntu:
name: Build Ubuntu (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: true
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV

- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go-controller/go.mod'
# Disabling cache to avoid warnings until these two issues are fixed
# https://github.com/actions/setup-go/issues/424
# https://github.com/actions/setup-go/issues/403
# cache-dependency-path: "**/*.sum"
cache: false
id: go

- name: Log in to the GH Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up environment
run: |
export GOPATH=$(go env GOPATH)
echo "GOPATH=$GOPATH" >> $GITHUB_ENV
echo "$GOPATH/bin" >> $GITHUB_PATH

- name: Build ovnkube-binaries copy to context
run: |
pushd go-controller
make
popd

pushd dist/images
cp -r ../../go-controller/_output/go/bin/* .
popd

- name: Generate git-info to write to image
run: |
BRANCH=$(git rev-parse --short "$GITHUB_SHA")
COMMIT=$(git rev-parse HEAD)
pushd dist/images
echo "ref: ${BRANCH} commit: ${COMMIT}" > git_info
popd

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3

- name: Extract metadata (tags, labels) for ubuntu ovn-k image
id: meta-ubuntu
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.UBUNTU_IMAGE_NAME }}

- name: Build and push Ubuntu based Docker image
id: build
uses: docker/build-push-action@v5
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./dist/images
file: ./dist/images/Dockerfile.ubuntu
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta-ubuntu.outputs.tags }}
labels: ${{ steps.meta-ubuntu.outputs.labels }}
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=ubuntu-${{ env.PLATFORM_PAIR }}
cache-to: type=gha,mode=max,scope=ubuntu-${{ env.PLATFORM_PAIR }}
outputs: type=image,name=${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.UBUNTU_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-ubuntu-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

# Merge Ubuntu multi-platform images
merge-ubuntu:
name: Merge Ubuntu
runs-on: ubuntu-latest
needs: build-ubuntu
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-ubuntu-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the GH Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for ubuntu ovn-k image
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.UBUNTU_IMAGE_NAME }}

- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.UBUNTU_IMAGE_NAME }}@sha256:%s ' *)

- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.REPOSITORY }}/${{ env.UBUNTU_IMAGE_NAME }}:${{ steps.meta.outputs.version }}
Loading