From e83fd0994952b14ea36bf040105f380b13a8367b Mon Sep 17 00:00:00 2001 From: Iain Lane Date: Wed, 20 Feb 2019 11:14:09 +0000 Subject: [PATCH] ci: Rebuild docker images any time a commit touches the dockerfile Currently they are built from cron, but we can use Gitlab's only: changes: - path support to also trigger on path changes. This is restricted to only work for pushes for master, so that branches / merge requests don't attempt to rebuild the image. --- .gitlab-ci.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 80e946127..18d67ce6b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -354,6 +354,9 @@ ppc64le: only: variables: - $CRON_TASK == "BUILD_CI_IMAGES" + changes: + - build-aux/ci/Dockerfile.* + script: # Skip the build (if requested) @@ -363,6 +366,19 @@ ppc64le: exit 0 fi + - | + if [[ "${CI_COMMIT_REF_NAME}" != "master" ]]; then + echo "== Exiting, will only build CI images when pushing to master. ==" + exit 0 + fi + + # Only when we have somewhere to publish to + - | + if [[ -z "${CI_REGISTRY}${CI_REGISTRY_IMAGE}${CI_REGISTRY_USER}${CI_REGISTRY_PASSWORD}" ]]; then + echo "== Exiting, CI registry not configured. ==" + exit 0 + fi + # Get multiarch stuff - | if [[ -n "${TARGET_ARCH}" ]]; then @@ -373,16 +389,11 @@ ppc64le: # Build using the Dockerfile - docker build -f "$DOCKERFILE" -t "$CI_REGISTRY_IMAGE:$NAME" . - # Prepare to publish + # Publish - docker tag "$CI_REGISTRY_IMAGE:$NAME" "$CI_REGISTRY_IMAGE:job-"$CI_JOB_ID"_$NAME" - docker images - docker login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} - - # Publish (if running on a schedule) - - | - if [[ "${CI_PIPELINE_SOURCE}" == "schedule" ]]; then - docker push "$CI_REGISTRY_IMAGE" - fi + - docker push "$CI_REGISTRY_IMAGE" fedora.dev: <<: *create_docker_image