@@ -1,7 +1,7 @@
arm_unit_tests_task:
arm_container:
- image: ghcr.io/ovn-org/ovn-tests:fedora
+ image: ghcr.io/ovn-org/ovn-tests:main-fedora
memory: 4G
cpu: 2
@@ -7,9 +7,6 @@ on:
- cron: '0 0 * * 1'
env:
- IMAGE_REGISTRY: ghcr.io
- IMAGE_NAMESPACE: ovn-org
- IMAGE_NAME: ovn-tests
CONTAINERS_PATH: ./utilities/containers
DEPENDENCIES: podman
@@ -31,13 +28,24 @@ jobs:
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
+ - name: Build image name
+ run: |
+ echo "IMAGE_BRANCH=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" \
+ >> $GITHUB_ENV
+ echo "IMAGE_REGISTRY=ghcr.io" \
+ >> $GITHUB_ENV
+ echo "IMAGE_NAME=ovn-tests" \
+ >> $GITHUB_ENV
+ echo "IMAGE_NAMESPACE=$GITHUB_REPOSITORY_OWNER" \
+ >> $GITHUB_ENV
+
- name: Build container images
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: ${{ env.IMAGE_NAME }}
archs: amd64, arm64
- tags: ${{ matrix.distro }}
+ tags: ${{ env.IMAGE_BRANCH }}-${{ matrix.distro }}
build-args: CONTAINERS_PATH=${{ env.CONTAINERS_PATH }}
dockerfiles: ${{ env.CONTAINERS_PATH }}/${{ matrix.distro }}/Dockerfile
@@ -83,7 +83,6 @@ jobs:
build-linux:
needs: build-dpdk
env:
- IMAGE_NAME: ghcr.io/ovn-org/ovn-tests:ubuntu
ARCH: ${{ matrix.cfg.arch }}
CC: ${{ matrix.cfg.compiler }}
DPDK: ${{ matrix.cfg.dpdk }}
@@ -128,6 +127,21 @@ jobs:
with:
submodules: recursive
+ - name: get CI container image name
+ run: |
+ image_branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}
+ image="ghcr.io/$GITHUB_REPOSITORY_OWNER/ovn-tests:${image_branch}-ubuntu"
+ if ! podman pull $image; then
+ # Fall back to the main branch if the current branch image doesn't
+ # exist.
+ image="ghcr.io/$GITHUB_REPOSITORY_OWNER/ovn-tests:main-ubuntu"
+ if ! podman pull $image; then
+ # Fall back to the old way of using the single per-repo image.
+ image="ghcr.io/$GITHUB_REPOSITORY_OWNER/ovn-tests:ubuntu"
+ fi
+ fi
+ echo "IMAGE_NAME=$image" >> "$GITHUB_ENV"
+
# For weekly runs, don't update submodules
- name: checkout without submodule
if: github.event_name == 'schedule'
@@ -58,6 +58,12 @@ Scheduling`_ for the timing of each stage:
bug fixes to the main branch, except for bugs present only on release
branches (which are rare in practice).
+ When a release branch is created it might be beneficial to manually trigger
+ a run of the `containers.yml` GitHub actions workflow on this new branch.
+ This ensures that a branch-specific CI container image is built. This
+ image will be used by subsequent CI runs on this branch (otherwise the main
+ branch image is used by default).
+
At this stage, sometimes there can be exceptions to the rule that a release
branch receives only bug fixes. Like bug fixes, new features on release
branches should be backports of the corresponding commits on the main
@@ -1,5 +1,5 @@
CONTAINER_CMD ?= podman
-IMAGE_NAME ?= "ovn-org/ovn-tests"
+IMAGE_NAME ?= "ovn-org/ovn-tests:main"
CONTAINERS_PATH ?= "."
distros := fedora ubuntu
@@ -7,5 +7,5 @@ distros := fedora ubuntu
.PHONY: $(distros)
$(distros):
- $(CONTAINER_CMD) build --no-cache --rm -t $(IMAGE_NAME):$@ \
+ $(CONTAINER_CMD) build --no-cache --rm -t $(IMAGE_NAME)-$@ \
-f $@/Dockerfile . --build-arg=CONTAINERS_PATH=$(CONTAINERS_PATH)
That allows us to use different distro bases for different stable branches. Fixes: 60a53abaa38a ("ci: Add automation for building the containers") Signed-off-by: Dumitru Ceara <dceara@redhat.com> --- .cirrus.yml | 2 +- .github/workflows/containers.yml | 16 ++++++++++++---- .github/workflows/test.yml | 16 +++++++++++++++- Documentation/internals/release-process.rst | 6 ++++++ utilities/containers/Makefile | 4 ++-- 5 files changed, 36 insertions(+), 8 deletions(-)