Loading .gitlab-ci.yml +50 −45 Original line number Diff line number Diff line .build: &build .changes: &change-files changes: - .gitlab-ci.yml - Dockerfile - data/* - plugins/* - scripts/* .build: stage: build image: docker.kodo.org.uk/ci-images/buildkit/buildctl:latest tags: [buildkit] rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "merge_request_event" - << : *change-files script: - TARGET=${CI_JOB_NAME##*:} - BUILD_TAG=${CI_REGISTRY_IMAGE}/${TARGET}/build:${CI_PIPELINE_ID} - buildctl build --frontend=dockerfile.v0 Loading @@ -15,57 +27,50 @@ ${WORDPRESS_VERSION:+--opt build-arg:wp_version=$WORDPRESS_VERSION} --output type=image,name=${BUILD_TAG},push=true .changes: &only-changes only: &change-files changes: - .gitlab-ci.yml - Dockerfile - data/* - plugins/* - scripts/* .merge-requests: &only-merge-requests only: .tag: stage: deploy image: docker:stable rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" variables: TAG: latest - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH << : *change-files refs: - merge_requests build-master:fastcgi: << : [ *build ] only: [ master, schedules ] build-master:nginx: << : [ *build ] only: [ master, schedules ] variables: TAG: latest - if: $CI_COMMIT_BRANCH == "develop" << : *change-files variables: TAG: unstable script: | BUILD_REPO=${CI_REGISTRY_IMAGE}/${TARGET}/build:${CI_PIPELINE_ID} DEPLOY_REPO=${CI_REGISTRY_IMAGE}/${TARGET} if [ $TAG = latest ]; then VERSION=`eval "docker run --rm ${BUILD_REPO} ${GET_VERSION}"` fi . scripts/deploy.sh $TAG ${VERSION-} build-mr:fastcgi: << : [ *build, *only-merge-requests ] build-mr:nginx: << : [ *build, *only-merge-requests ] build:fastcgi: << : [ *build, *only-changes ] except: [ merge_requests, master, schedules ] build:nginx: << : [ *build, *only-changes ] except: [ merge_requests, master, schedules ] Build Wordpress: extends: [.build] variables: TARGET: fastcgi Build Nginx: extends: [.build] variables: TARGET: nginx .push-tags: &push-tags stage: deploy only: << : *change-files refs: [ master, develop, schedules ] script: | BUILD_REPO=${CI_REGISTRY_IMAGE}/${CI_JOB_NAME##*:}/build:${CI_PIPELINE_ID} DEPLOY_REPO=${CI_REGISTRY_IMAGE}/${CI_JOB_NAME##*:} VERSION=`eval "docker run --rm ${BUILD_REPO} ${GET_VERSION}"` . scripts/deploy.sh push:fastcgi: <<: *push-tags Tag Wordpress Image: extends: [.tag] variables: TARGET: fastcgi GET_VERSION: wp core version push:nginx: <<: *push-tags Tag Nginx Image: extends: [.tag] variables: TARGET: nginx GET_VERSION: nginx -V 2>&1 | sed -n '/nginx version:/s/.*nginx\///p' scripts/deploy.sh +7 −7 Original line number Diff line number Diff line #!/bin/sh # Copyright 2019-2021 Dominik Sekotill <dom.sekotill@kodo.org.uk> # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. set -eu : ${BUILD_REPO?} : ${DEPLOY_REPO?} case ${CI_COMMIT_REF_NAME-develop} in master) tags="latest ${VERSION-}" ;; develop) tags="unstable" ;; *) exit 3 ;; esac set -x docker pull ${BUILD_REPO} for tag in $tags; do for tag in "$@"; do docker tag ${BUILD_REPO} ${DEPLOY_REPO}:${tag} docker push ${DEPLOY_REPO}:${tag} done Loading
.gitlab-ci.yml +50 −45 Original line number Diff line number Diff line .build: &build .changes: &change-files changes: - .gitlab-ci.yml - Dockerfile - data/* - plugins/* - scripts/* .build: stage: build image: docker.kodo.org.uk/ci-images/buildkit/buildctl:latest tags: [buildkit] rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "merge_request_event" - << : *change-files script: - TARGET=${CI_JOB_NAME##*:} - BUILD_TAG=${CI_REGISTRY_IMAGE}/${TARGET}/build:${CI_PIPELINE_ID} - buildctl build --frontend=dockerfile.v0 Loading @@ -15,57 +27,50 @@ ${WORDPRESS_VERSION:+--opt build-arg:wp_version=$WORDPRESS_VERSION} --output type=image,name=${BUILD_TAG},push=true .changes: &only-changes only: &change-files changes: - .gitlab-ci.yml - Dockerfile - data/* - plugins/* - scripts/* .merge-requests: &only-merge-requests only: .tag: stage: deploy image: docker:stable rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" variables: TAG: latest - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH << : *change-files refs: - merge_requests build-master:fastcgi: << : [ *build ] only: [ master, schedules ] build-master:nginx: << : [ *build ] only: [ master, schedules ] variables: TAG: latest - if: $CI_COMMIT_BRANCH == "develop" << : *change-files variables: TAG: unstable script: | BUILD_REPO=${CI_REGISTRY_IMAGE}/${TARGET}/build:${CI_PIPELINE_ID} DEPLOY_REPO=${CI_REGISTRY_IMAGE}/${TARGET} if [ $TAG = latest ]; then VERSION=`eval "docker run --rm ${BUILD_REPO} ${GET_VERSION}"` fi . scripts/deploy.sh $TAG ${VERSION-} build-mr:fastcgi: << : [ *build, *only-merge-requests ] build-mr:nginx: << : [ *build, *only-merge-requests ] build:fastcgi: << : [ *build, *only-changes ] except: [ merge_requests, master, schedules ] build:nginx: << : [ *build, *only-changes ] except: [ merge_requests, master, schedules ] Build Wordpress: extends: [.build] variables: TARGET: fastcgi Build Nginx: extends: [.build] variables: TARGET: nginx .push-tags: &push-tags stage: deploy only: << : *change-files refs: [ master, develop, schedules ] script: | BUILD_REPO=${CI_REGISTRY_IMAGE}/${CI_JOB_NAME##*:}/build:${CI_PIPELINE_ID} DEPLOY_REPO=${CI_REGISTRY_IMAGE}/${CI_JOB_NAME##*:} VERSION=`eval "docker run --rm ${BUILD_REPO} ${GET_VERSION}"` . scripts/deploy.sh push:fastcgi: <<: *push-tags Tag Wordpress Image: extends: [.tag] variables: TARGET: fastcgi GET_VERSION: wp core version push:nginx: <<: *push-tags Tag Nginx Image: extends: [.tag] variables: TARGET: nginx GET_VERSION: nginx -V 2>&1 | sed -n '/nginx version:/s/.*nginx\///p'
scripts/deploy.sh +7 −7 Original line number Diff line number Diff line #!/bin/sh # Copyright 2019-2021 Dominik Sekotill <dom.sekotill@kodo.org.uk> # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. set -eu : ${BUILD_REPO?} : ${DEPLOY_REPO?} case ${CI_COMMIT_REF_NAME-develop} in master) tags="latest ${VERSION-}" ;; develop) tags="unstable" ;; *) exit 3 ;; esac set -x docker pull ${BUILD_REPO} for tag in $tags; do for tag in "$@"; do docker tag ${BUILD_REPO} ${DEPLOY_REPO}:${tag} docker push ${DEPLOY_REPO}:${tag} done