image_builds: simplify the tags

We can use docker labels to pass the metadata we want
and make the tag simpoler.

also small fixup, make it so buildah it uses chroot isolation
and update the base image

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/308>
This commit is contained in:
Jordan Petridis 2020-06-10 14:39:32 +03:00 committed by Jordan Petridis
parent 87208fdf53
commit c731fab0ca

View file

@ -25,7 +25,7 @@ test manifest:
- "junit.xml" - "junit.xml"
.base: .base:
image: 'registry.fedoraproject.org/fedora:31' image: 'registry.fedoraproject.org/fedora:32'
extends: extends:
- '.global_ci_policy' - '.global_ci_policy'
tags: ['gstreamer'] tags: ['gstreamer']
@ -35,42 +35,58 @@ test manifest:
variables: variables:
STORAGE_DRIVER: 'vfs' STORAGE_DRIVER: 'vfs'
BUILDAH_FORMAT: 'docker' BUILDAH_FORMAT: 'docker'
BUILDAH_ISOLATION: 'chroot'
GIT_STRATEGY: fetch GIT_STRATEGY: fetch
script: script:
- export DATE=$(date +"%Y-%m-%d") - export DATE=$(date +"%Y-%m-%d")
- export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}" - export IMAGE="$CI_REGISTRY_IMAGE/${ARCH:=amd64}/$TAG"
- export _UID="${IMAGE}:${DATE}-${CI_JOB_ID}" - export _UID="$IMAGE:$DATE-$GST_UPSTREAM_BRANCH"
- export LATEST="${IMAGE}:latest" - export LATEST="$IMAGE:latest"
- dnf install -y buildah runc - dnf install -y buildah runc
# Newer versions of podman/buildah try to set overlayfs mount options when # Newer versions of podman/buildah try to set overlayfs mount options when
# using the vfs driver, and this causes errors. # using the vfs driver, and this causes errors.
- sed -i '/^mountopt =.*/d' /etc/containers/storage.conf - sed -i '/^mountopt =.*/d' /etc/containers/storage.conf
- buildah bud --build-arg DEFAULT_BRANCH=${GST_UPSTREAM_BRANCH} -f ${DOCKERFILE} -t ${LATEST} ${CONTEXT_DIR} - echo "Building image $_UID"
- >
buildah bud
--build-arg DEFAULT_BRANCH=$GST_UPSTREAM_BRANCH
--arch=${ARCH:=amd64}
--label ci.job_id=$CI_JOB_ID
--label pipeline.url=$CI_PIPELINE_URL
--label git.ref_name=$CI_COMMIT_REF_NAME
--label git.sha=$CI_COMMIT_SHA
--label gitlab.project_path=$CI_PROJECT_PATH
--label gitlab.project_url=$CI_PROJECT_URL
-f $DOCKERFILE
-t $IMAGE
$CONTEXT_DIR
- buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# If we are in a fork, push the image to the reigstry regardless the branch # If we are in a fork, push the image to the reigstry regardless the branch
- | - |
if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then
buildah login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # Tag the image with the git ref
buildah push ${LATEST} buildah tag $_UID $LATEST
# Only push the :latest so with each push the previous
# image in the forked registry gets overrwritten
# to avoid bloating the registry and making
# pruning easier for the gitlab admins
buildah push $LATEST
fi fi
# Push the images to the upstream registry # Push the images to the upstream registry
- | - |
if [ "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then if [ "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
# Tag the image with the git ref buildah push $_UID
buildah tag ${LATEST} ${_UID}-${CI_COMMIT_REF_NAME}
# Push the tags
buildah login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
buildah push ${_UID}-${CI_COMMIT_REF_NAME}
buildah push ${LATEST}
fi fi
alpine amd64 manifest builder docker: alpine amd64 manifest builder docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "build-manifest" TAG: "build-manifest"
CONTEXT_DIR: "docker/build_manifest/" CONTEXT_DIR: "docker/build_manifest/"
DOCKERFILE: "docker/build_manifest/Dockerfile" DOCKERFILE: "docker/build_manifest/Dockerfile"
@ -79,7 +95,6 @@ alpine amd64 manifest builder docker:
test manifest amd64 docker: test manifest amd64 docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "test-manifest" TAG: "test-manifest"
CONTEXT_DIR: "docker/test_manifest/" CONTEXT_DIR: "docker/test_manifest/"
DOCKERFILE: "docker/test_manifest/Dockerfile" DOCKERFILE: "docker/test_manifest/Dockerfile"
@ -88,7 +103,6 @@ test manifest amd64 docker:
gst-indent amd64 docker: gst-indent amd64 docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "gst-indent" TAG: "gst-indent"
CONTEXT_DIR: "docker/indent/" CONTEXT_DIR: "docker/indent/"
DOCKERFILE: "docker/indent/Dockerfile" DOCKERFILE: "docker/indent/Dockerfile"
@ -97,7 +111,6 @@ gst-indent amd64 docker:
fedora amd64 docker: fedora amd64 docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "fedora" TAG: "fedora"
CONTEXT_DIR: "docker/fedora/" CONTEXT_DIR: "docker/fedora/"
DOCKERFILE: "docker/fedora/Dockerfile" DOCKERFILE: "docker/fedora/Dockerfile"
@ -106,7 +119,6 @@ fedora amd64 docker:
cerbero fedora amd64 docker: cerbero fedora amd64 docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "cerbero-fedora" TAG: "cerbero-fedora"
CONTEXT_DIR: "docker/cerbero/" CONTEXT_DIR: "docker/cerbero/"
DOCKERFILE: "docker/cerbero/Dockerfile-fedora" DOCKERFILE: "docker/cerbero/Dockerfile-fedora"
@ -115,7 +127,6 @@ cerbero fedora amd64 docker:
android docker: android docker:
stage: "build docker" stage: "build docker"
variables: variables:
ARCH: "amd64"
TAG: "android" TAG: "android"
CONTEXT_DIR: "docker/android/" CONTEXT_DIR: "docker/android/"
DOCKERFILE: "docker/android/Dockerfile" DOCKERFILE: "docker/android/Dockerfile"