omnibus-gitlab/gitlab-ci-config/dev-gitlab-org.yml

1168 lines
34 KiB
YAML

# This config lists the jobs that will be run on omnibus-gitlab project in
# dev.gitlab.org.
#############
# Templates #
#############
.default_rules:
rules:
- if: '$SKIP_JOB_REGEX && $CI_JOB_NAME =~ $SKIP_JOB_REGEX'
when: never
.skip_release_jobs:
rules:
- if: '$SKIP_RELEASE == "true"'
when: never
.package-artifacts: &package-artifacts
when: always
expire_in: 1 day
paths:
- pkg/
.package-artifacts-release: &package-artifacts-release
<<: *package-artifacts
expire_in: 7 days
.cache-paths:
- cache
- gems
- assets_cache
- node_modules
.branch-cache: &branch-cache
key: "${CI_JOB_NAME}-${BUILDER_IMAGE_REVISION}-${CACHE_EDITION}${CACHE_KEY_SUFFIX}"
paths: !reference [.cache-paths]
policy: $CACHE_POLICY
.tag-cache: &tag-cache
# Use the same cache key as branch builds, by manually appending `-branch` substring.
key: "${CI_JOB_NAME}-branch-${BUILDER_IMAGE_REVISION}-${CACHE_EDITION}${CACHE_KEY_SUFFIX}"
paths: !reference [.cache-paths]
policy: $CACHE_POLICY
.branch_template: &branch_build
stage: package
script:
- support/import_gpg_secrets.sh
- !reference [.build-package]
# Run package size checks on nightlies. The job will create alerts, so we
# don't need it to fail and block the pipeline. Hence the `|| true`.
- if [ -n "$NIGHTLY" ]; then
bundle exec rake check:package_size || true;
fi
tags: !reference [.distribution-amd64-tags]
artifacts: !reference [.package-artifacts]
needs:
- job: fetch-assets
optional: true
- job: generate-facts
optional: true
artifacts: true
cache: !reference [.branch-cache]
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
.fips_branch_template: &fips_branch_build
extends: .branch_template
variables:
USE_SYSTEM_SSL: "true"
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
- if: '$PIPELINE_TYPE == "EE_BRANCH_BUILD_PIPELINE"'
when: manual
allow_failure: true
.arm64_branch_template: &arm64_branch_build
extends: .branch_template
tags: !reference [.distribution-arm64-tags]
.rpi_branch_template: &rpi_branch_build
extends: .branch_template
variables:
NO_SOURCEMAPS: "true"
tags: !reference [.distribution-armhf-tags]
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE == "CE_BRANCH_BUILD_PIPELINE"'
- if: '$PIPELINE_TYPE == "CE_NIGHTLY_BUILD_PIPELINE"'
- if: '$PIPELINE_TYPE == "EE_BRANCH_BUILD_PIPELINE" && $CI_PIPELINE_SOURCE == "parent_pipeline"'
.tag_template: &tag_build
stage: package
script:
# Always compile assets for auto-deploy builds,
# this is done for auto-deploy builds
# so that we do not have to wait for the compile assets job
# in the gitlab-ee pipeline.
#
# NOTE (rspeicher): Checking `$AUTO_DEPLOY_COMPILE_ASSETS` as a feature flag
# See https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5805
- |
if [ -n "$AUTO_DEPLOY_COMPILE_ASSETS" ] && echo $CI_COMMIT_TAG | grep -P -q "$AUTO_DEPLOY_TAG_REGEX"; then
echo "Setting COMPILE_ASSETS env variable for auto-deploy"
export COMPILE_ASSETS='true';
fi
- support/import_gpg_secrets.sh
- bundle exec rake cache:populate
- bundle exec rake cache:restore
- bundle exec rake release:package
- bundle exec rake cache:bundle
- bundle exec rake build:component_shas
tags: !reference [.distribution-amd64-tags]
artifacts: !reference [.package-artifacts-release]
needs:
- job: fetch-assets
optional: true
- job: generate-facts
optional: true
artifacts: true
cache: !reference [.tag-cache]
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
.fips_tag_template: &fips_tag_build
extends: .tag_template
variables:
USE_SYSTEM_SSL: "true"
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
.arm64_tag_template: &arm64_tag_build
extends: .tag_template
tags: !reference [.distribution-arm64-tags]
.rpi_tag_template: &rpi_tag_build
extends: .tag_template
variables:
NO_SOURCEMAPS: "true"
tags: !reference [.distribution-armhf-tags]
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^CE_(RC|TAG)_BUILD_PIPELINE$/'
### This stage is used for uploading packages
### 1. To a staging package repository
### 2. Always ran on dev.gitlab.org
.staging_upload_template: &staging_upload
stage: staging_upload
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
variables:
INCLUDE_PACKAGECLOUD: "true"
script:
- if [[ "${USE_SYSTEM_SSL}" == "true" ]]; then export STAGING_REPO=${FIPS_STAGING_REPO}; fi
- bundle exec rake repository:upload:staging[$STAGING_REPO]
cache: !reference [.tag-cache]
retry: 2
tags:
- ${PACKAGE_PROMOTION_RUNNER_TAG}
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
.fips_staging_upload_template: &fips_staging_upload
extends: .staging_upload_template
variables:
USE_SYSTEM_SSL: "true"
INCLUDE_PACKAGECLOUD: "true"
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
- if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
.staging_upload_with_deployment_template: &staging_upload_with_deployment
extends: .staging_upload_template
script:
- bundle exec rake repository:upload:staging[$STAGING_REPO]
- if [ -n "$DEPLOYER_TRIGGER_TOKEN" ]; then bundle exec rake gitlab_com:deployer; fi
### This stage is ran only on tag:
### 1. It is a manual action
### 2. It will upload the package to public, user facing repositories
### 3. Only ran on dev.gitlab.org
.production_release_template: &production_release
stage: package-and-image-release
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
variables:
INCLUDE_PACKAGECLOUD: "true"
script:
- bundle exec rake repository:upload:production
retry: 2
cache: !reference [.tag-cache]
tags:
- ${PACKAGE_PROMOTION_RUNNER_TAG}
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
.fips_release_template: &fips_release
extends: .production_release_template
variables:
USE_SYSTEM_SSL: "true"
INCLUDE_PACKAGECLOUD: "true"
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
.raspbian_release_template: &raspbian_release
extends: .production_release_template
variables:
RASPBERRY_REPO: "raspberry-pi2"
INCLUDE_PACKAGECLOUD: "true"
retry: 2
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /^CE_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
.aws_ami_build: &aws_ami_build
stage: package-and-image-release
image: "${BUILDER_IMAGE_REGISTRY}/debian_packer:${BUILDER_IMAGE_REVISION}"
script:
# aws-sdk gem gives priority to environment variables over config file. So, using correct values for those variables.
- export AWS_ACCESS_KEY_ID=$AWS_AMI_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_AMI_SECRET_ACCESS_KEY
- bundle exec rake aws:ami:create
tags: !reference [.distribution-amd64-tags]
cache: !reference [.tag-cache]
artifacts:
paths:
- support/packer/manifests
needs:
- Ubuntu-20.04
retry: 1
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_TAG_BUILD_PIPELINE$/'
when: manual
.aws_marketplace_release: &aws_marketplace_release
image: "${BUILDER_IMAGE_REGISTRY}/distribution_ci_tools:${BUILDER_IMAGE_REVISION}"
stage: aws-marketplace-release
script:
- export AWS_ACCESS_KEY_ID=$AWS_AMI_ACCESS_KEY_ID
- export AWS_SECRET_ACCESS_KEY=$AWS_AMI_SECRET_ACCESS_KEY
- bundle exec rake aws:marketplace:release
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE == "EE_TAG_BUILD_PIPELINE"'
###########################
# Branch pipeline #
###########################
# fetch-assets job from .gitlab-ci.yml file runs here
# generate-assets job from .gitlab-ci.yml file runs here
Ubuntu-18.04-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
Ubuntu-20.04-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
Ubuntu-22.04-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
- if: '$PIPELINE_TYPE =~ /TRIGGERED_(CE|EE)_PIPELINE/'
- if: '$PIPELINE_TYPE == "TRIGGER_CACHE_UPDATE_PIPELINE"'
Debian-10-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_10:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
Debian-10-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_10_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
Debian-11-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_11:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
Debian-11-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_11_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
Debian-12-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_12:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
Debian-12-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/debian_12_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
Ubuntu-20.04-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
Ubuntu-22.04-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
- if: '$PIPELINE_TYPE =~ /TRIGGERED_(CE|EE)_PIPELINE/'
# TODO: When multi-arch images are built by default, make this an
# automatic job
when: manual
allow_failure: true
CentOS-7-branch:
image: "${BUILDER_IMAGE_REGISTRY}/centos_7:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
AlmaLinux-8-branch:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
AlmaLinux-8-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
AlmaLinux-9-branch:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_9:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
AlmaLinux-9-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_9_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
OpenSUSE-15.5-branch:
image: "${BUILDER_IMAGE_REGISTRY}/opensuse_15.5:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
OpenSUSE-15.5-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/opensuse_15.5_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
AmazonLinux-2-branch:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
AmazonLinux-2-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
AmazonLinux-2023-branch:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2023:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
AmazonLinux-2023-arm64-branch:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2023_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_branch_template
SLES-12.5-branch:
image: "${DEV_BUILDER_IMAGE_REGISTRY}/sles_12sp5:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
variables:
DOCKER_AUTH_CONFIG: $DEV_BUILDER_DOCKER_AUTH_CONFIG
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /EE_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
SLES-15.2-branch:
image: "${DEV_BUILDER_IMAGE_REGISTRY}/sles_15sp2:${BUILDER_IMAGE_REVISION}"
extends: .branch_template
variables:
DOCKER_AUTH_CONFIG: $DEV_BUILDER_DOCKER_AUTH_CONFIG
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /EE_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
AmazonLinux-2-fips-branch:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_branch_template
AlmaLinux-8-fips-branch:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_branch_template
Ubuntu-18.04-fips-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_branch_template
Ubuntu-20.04-fips-branch:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_branch_template
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"'
- if: '$PIPELINE_TYPE == "EE_BRANCH_BUILD_PIPELINE"'
when: manual
allow_failure: true
- if: '$PIPELINE_TYPE =~ /TRIGGERED_(CE|EE)_PIPELINE/'
when: manual
allow_failure: true
Docker-branch:
extends: .docker_job
stage: image
script:
- bundle exec rake docker:build:image
- bundle exec rake docker:push:staging
- bundle exec rake docker:push:nightly
tags: !reference [.distribution-amd64-tags]
cache: !reference [.branch-cache]
needs:
- job: Ubuntu-22.04-branch
artifacts: false
- job: generate-facts
optional: true
artifacts: true
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
- if: '$PIPELINE_TYPE =~ /TRIGGERED_(CE|EE)_PIPELINE/'
- if: '$PIPELINE_TYPE == "TRIGGER_CACHE_UPDATE_PIPELINE"'
QA-branch:
extends: .docker_job
stage: image
variables:
QA_SCREENSHOTS_DIR: $CI_PROJECT_DIR/screenshots
script:
# For downstream users like JiHu to retain original behavior
- if [ "$BUILD_GITLAB_QA_IMAGE" == "true" ]; then
bundle exec rake qa:build;
bundle exec rake qa:push:nightly;
bundle exec rake qa:push:staging;
else
bundle exec rake qa:copy:nightly;
fi
artifacts:
when: on_failure
expire_in: 7d
paths:
- screenshots/
tags: !reference [.distribution-amd64-tags]
cache: !reference [.branch-cache]
needs:
- job: Ubuntu-22.04-branch
artifacts: false
- job: generate-facts
optional: true
artifacts: true
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_(NIGHTLY|BRANCH)_BUILD_PIPELINE$/'
Raspberry-Pi-2-Buster-branch:
image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}"
extends: .rpi_branch_template
Raspberry-Pi-2-Bullseye-branch:
image: "${BUILDER_IMAGE_REGISTRY}/rpi_11:${BUILDER_IMAGE_REVISION}"
extends: .rpi_branch_template
Raspberry-Pi-2-Bookworm-branch:
image: "${BUILDER_IMAGE_REGISTRY}/rpi_12:${BUILDER_IMAGE_REVISION}"
extends: .rpi_branch_template
############################
# Release pipeline #
############################
# fetch-assets job from .gitlab-ci.yml file runs here
Ubuntu-18.04:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04:${BUILDER_IMAGE_REVISION}"
stage: package
extends: .tag_template
rules:
- !reference [.default_rules, rules]
# Also build for auto-deploy tags
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY)_BUILD_PIPELINE$/'
Ubuntu-20.04:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04:${BUILDER_IMAGE_REVISION}"
stage: package
extends: .tag_template
rules:
- !reference [.default_rules, rules]
# Also build for auto-deploy tags
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY)_BUILD_PIPELINE$/'
Ubuntu-22.04:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
stage: package
extends: .tag_template
rules:
- !reference [.default_rules, rules]
# Also build for auto-deploy tags
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY)_BUILD_PIPELINE$/'
## Build the docker image for QA
## This is necessary for the deployment
## pipeline so it must happen before
## the upload and deploy stage for GitLab.com
Docker-QA:
extends: .docker_job
stage: image
script:
- bundle exec rake qa:build
- bundle exec rake qa:push:staging
cache: !reference [.tag-cache]
tags: !reference [.distribution-amd64-tags]
needs:
- job: generate-facts
optional: true
artifacts: true
retry: 1
rules:
- !reference [.default_rules, rules]
# For downstream users like JiHu to retain original behavior
- if: '$BUILD_GITLAB_QA_IMAGE != "true"'
when: never
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG)_BUILD_PIPELINE$/'
###########################################################
## Upload and deploy to staging or preprod for GitLab.com
## * Regular tagged releases are deployed to staging
## * Regular patch releases, RCs and tags that are
## not auto-deploys are deployed to
## $PATCH_DEPLOY_ENVIRONMENT, set in CI vars
##
## Ubuntu 22.04: used for all omnibus installation
## Ubuntu 18.04: used on some non-omnibus infrastructure, we
## will eventually need to trigger deployments
## after this package is built
Ubuntu-18.04-staging:
extends: .staging_upload_with_deployment_template
needs:
- job: Ubuntu-18.04
optional: true
- job: Ubuntu-18.04-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY|NIGHTLY)_BUILD_PIPELINE$/'
Ubuntu-20.04-staging:
extends: .staging_upload_with_deployment_template
needs:
- job: Ubuntu-20.04
optional: true
- job: Ubuntu-20.04-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY|NIGHTLY)_BUILD_PIPELINE$/'
Ubuntu-22.04-staging:
extends: .staging_upload_template
needs:
- job: Ubuntu-22.04
optional: true
- job: Ubuntu-22.04-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY|NIGHTLY)_BUILD_PIPELINE$/'
Ubuntu-22.04-arm64-staging:
extends: .staging_upload_template
needs:
- job: Ubuntu-22.04-arm64
optional: true
- job: Ubuntu-22.04-arm64-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|NIGHTLY)_BUILD_PIPELINE$/'
### Package builds
Debian-10:
image: "${BUILDER_IMAGE_REGISTRY}/debian_10:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
Debian-10-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/debian_10_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
Debian-11:
image: "${BUILDER_IMAGE_REGISTRY}/debian_11:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
Debian-11-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/debian_11_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
Debian-12:
image: "${BUILDER_IMAGE_REGISTRY}/debian_12:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
Debian-12-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/debian_12_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
Ubuntu-20.04-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
Ubuntu-22.04-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_22.04_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
CentOS-7:
image: "${BUILDER_IMAGE_REGISTRY}/centos_7:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
AlmaLinux-8:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
AlmaLinux-8-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
AlmaLinux-9:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_9:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
AlmaLinux-9-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_9_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
OpenSUSE-15.5:
image: "${BUILDER_IMAGE_REGISTRY}/opensuse_15.5:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
OpenSUSE-15.5-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/opensuse_15.5_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
AmazonLinux-2:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
AmazonLinux-2-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
AmazonLinux-2023:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2023:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
AmazonLinux-2023-arm64:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2023_arm64:${BUILDER_IMAGE_REVISION}"
extends: .arm64_tag_template
SLES-12.5:
image: "${BUILDER_IMAGE_REGISTRY}/sles_12sp5:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
SLES-15.2:
image: "${BUILDER_IMAGE_REGISTRY}/sles_15sp2:${BUILDER_IMAGE_REVISION}"
extends: .tag_template
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
AmazonLinux-2-fips:
image: "${BUILDER_IMAGE_REGISTRY}/amazonlinux_2_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_tag_template
AlmaLinux-8-fips:
image: "${BUILDER_IMAGE_REGISTRY}/almalinux_8_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_tag_template
Ubuntu-18.04-fips:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_tag_template
Ubuntu-20.04-fips:
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04_fips:${BUILDER_IMAGE_REVISION}"
extends: .fips_tag_template
Docker:
extends: .docker_job
stage: image
script:
- bundle exec rake docker:build:image
- bundle exec rake docker:push:staging
tags: !reference [.distribution-amd64-tags]
cache: !reference [.tag-cache]
needs:
- job: Ubuntu-22.04
artifacts: false
- job: generate-facts
optional: true
artifacts: true
retry: 1
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(_RC|_TAG|AUTO_DEPLOY)_BUILD_PIPELINE$/'
### Staging uploads
Debian-10-staging:
extends: .staging_upload_template
needs:
- job: Debian-10
optional: true
- job: Debian-10-branch
optional: true
Debian-10-arm64-staging:
extends: .staging_upload_template
needs:
- job: Debian-10-arm64
optional: true
- job: Debian-10-arm64-branch
optional: true
Debian-11-staging:
extends: .staging_upload_template
needs:
- job: Debian-11
optional: true
- job: Debian-11-branch
optional: true
Debian-11-arm64-staging:
extends: .staging_upload_template
needs:
- job: Debian-11-arm64
optional: true
- job: Debian-11-arm64-branch
optional: true
Debian-12-staging:
extends: .staging_upload_template
needs:
- job: Debian-12
optional: true
- job: Debian-12-branch
optional: true
Debian-12-arm64-staging:
extends: .staging_upload_template
needs:
- job: Debian-12-arm64
optional: true
- job: Debian-12-arm64-branch
optional: true
Ubuntu-20.04-arm64-staging:
extends: .staging_upload_template
needs:
- job: Ubuntu-20.04-arm64
optional: true
- job: Ubuntu-20.04-arm64-branch
optional: true
CentOS-7-staging:
extends: .staging_upload_template
needs:
- job: CentOS-7
optional: true
- job: CentOS-7-branch
optional: true
AlmaLinux-8-staging:
extends: .staging_upload_template
needs:
- job: AlmaLinux-8
optional: true
- job: AlmaLinux-8-branch
optional: true
AlmaLinux-8-arm64-staging:
extends: .staging_upload_template
needs:
- job: AlmaLinux-8-arm64
optional: true
- job: AlmaLinux-8-arm64-branch
optional: true
AlmaLinux-9-staging:
extends: .staging_upload_template
needs:
- job: AlmaLinux-9
optional: true
- job: AlmaLinux-9-branch
optional: true
AlmaLinux-9-arm64-staging:
extends: .staging_upload_template
needs:
- job: AlmaLinux-9-arm64
optional: true
- job: AlmaLinux-9-arm64-branch
optional: true
OpenSUSE-15.5-staging:
extends: .staging_upload_template
needs:
- job: OpenSUSE-15.5
optional: true
- job: OpenSUSE-15.5-branch
optional: true
OpenSUSE-15.5-arm64-staging:
extends: .staging_upload_template
needs:
- job: OpenSUSE-15.5-arm64
optional: true
- job: OpenSUSE-15.5-arm64-branch
optional: true
AmazonLinux-2-staging:
extends: .staging_upload_template
needs:
- job: AmazonLinux-2
optional: true
- job: AmazonLinux-2-branch
optional: true
AmazonLinux-2-arm64-staging:
extends: .staging_upload_template
needs:
- job: AmazonLinux-2-arm64
optional: true
- job: AmazonLinux-2-arm64-branch
optional: true
AmazonLinux-2023-staging:
extends: .staging_upload_template
needs:
- job: AmazonLinux-2023
optional: true
- job: AmazonLinux-2023-branch
optional: true
AmazonLinux-2023-arm64-staging:
extends: .staging_upload_template
needs:
- job: AmazonLinux-2023-arm64
optional: true
- job: AmazonLinux-2023-arm64-branch
optional: true
SLES-12.5-staging:
extends: .staging_upload_template
needs:
- job: SLES-12.5
optional: true
- job: SLES-12.5-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
SLES-15.2-staging:
extends: .staging_upload_template
needs:
- job: SLES-15.2
optional: true
- job: SLES-15.2-branch
optional: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
AmazonLinux-2-fips-staging:
extends: .fips_staging_upload_template
needs:
- job: AmazonLinux-2-fips
optional: true
- job: AmazonLinux-2-fips-branch
optional: true
AlmaLinux-8-fips-staging:
extends: .fips_staging_upload_template
needs:
- job: AlmaLinux-8-fips
optional: true
- job: AlmaLinux-8-fips-branch
optional: true
Ubuntu-18.04-fips-staging:
extends: .fips_staging_upload_template
needs:
- job: Ubuntu-18.04-fips
optional: true
- job: Ubuntu-18.04-fips-branch
optional: true
Ubuntu-20.04-fips-staging:
extends: .fips_staging_upload_template
needs:
- job: Ubuntu-20.04-fips
optional: true
- job: Ubuntu-20.04-fips-branch
optional: true
### Package releases
Ubuntu-18.04-release:
extends: .production_release_template
needs:
- Ubuntu-18.04
Ubuntu-20.04-release:
extends: .production_release_template
needs:
- Ubuntu-20.04
Ubuntu-22.04-release:
extends: .production_release_template
needs:
- Ubuntu-22.04
Ubuntu-20.04-arm64-release:
extends: .production_release_template
needs:
- Ubuntu-20.04-arm64
Ubuntu-22.04-arm64-release:
extends: .production_release_template
needs:
- Ubuntu-22.04-arm64
Debian-10-release:
extends: .production_release_template
needs:
- Debian-10
Debian-10-arm64-release:
extends: .production_release_template
needs:
- Debian-10-arm64
Debian-11-release:
extends: .production_release_template
needs:
- Debian-11
Debian-11-arm64-release:
extends: .production_release_template
needs:
- Debian-11-arm64
Debian-12-release:
extends: .production_release_template
needs:
- Debian-12
Debian-12-arm64-release:
extends: .production_release_template
needs:
- Debian-12-arm64
CentOS-7-release:
extends: .production_release_template
needs:
- CentOS-7
AlmaLinux-8-release:
extends: .production_release_template
needs:
- AlmaLinux-8
AlmaLinux-8-arm64-release:
extends: .production_release_template
needs:
- AlmaLinux-8-arm64
AlmaLinux-9-release:
extends: .production_release_template
needs:
- AlmaLinux-9
AlmaLinux-9-arm64-release:
extends: .production_release_template
needs:
- AlmaLinux-9-arm64
OpenSUSE-15.5-release:
extends: .production_release_template
needs:
- OpenSUSE-15.5
OpenSUSE-15.5-arm64-release:
extends: .production_release_template
needs:
- OpenSUSE-15.5-arm64
AmazonLinux-2-release:
extends: .production_release_template
needs:
- AmazonLinux-2
AmazonLinux-2-arm64-release:
extends: .production_release_template
needs:
- AmazonLinux-2-arm64
AmazonLinux-2023-release:
extends: .production_release_template
needs:
- AmazonLinux-2023
AmazonLinux-2023-arm64-release:
extends: .production_release_template
needs:
- AmazonLinux-2023-arm64
SLES-12.5-release:
extends: .production_release_template
needs:
- SLES-12.5
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
SLES-15.2-release:
extends: .production_release_template
needs:
- SLES-15.2
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
AmazonLinux-2-fips-release:
extends: .fips_release_template
needs:
- AmazonLinux-2-fips
AlmaLinux-8-fips-release:
extends: .fips_release_template
needs:
- AlmaLinux-8-fips
Ubuntu-18.04-fips-release:
extends: .fips_release_template
needs:
- Ubuntu-18.04-fips
Ubuntu-20.04-fips-release:
extends: .fips_release_template
needs:
- Ubuntu-20.04-fips
Docker-Release:
extends: .docker_job
stage: package-and-image-release
script:
- bundle exec rake release:docker
cache: !reference [.tag-cache]
needs:
- Docker
- job: generate-facts
optional: true
artifacts: true
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
tags: !reference [.distribution-amd64-tags]
AWS:
extends: .aws_ami_build
AWS-ARM64:
extends: .aws_ami_build
variables:
AWS_ARCHITECTURE: 'arm64'
AWS-Ultimate:
extends: .aws_ami_build
variables:
AWS_RELEASE_TYPE: "ultimate"
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE == "EE_TAG_BUILD_PIPELINE"'
when: manual
AWS-Premium:
extends: .aws_ami_build
variables:
AWS_RELEASE_TYPE: "premium"
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE == "EE_TAG_BUILD_PIPELINE"'
when: manual
QA-Tag:
extends: .docker_job
stage: qa-release
variables:
QA_SCREENSHOTS_DIR: $CI_PROJECT_DIR/screenshots
script:
- bundle exec rake release:qa
artifacts:
when: on_failure
expire_in: 7d
paths:
- screenshots/
tags: !reference [.distribution-amd64-tags]
cache: !reference [.tag-cache]
needs:
- job: generate-facts
optional: true
artifacts: true
retry: 1
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
# For downstream users like JiHu to retain original behavior
- if: '$BUILD_GITLAB_QA_IMAGE != "true"'
when: never
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
allow_failure: true
license-upload:
stage: metrics
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04:${BUILDER_IMAGE_REVISION}"
script:
- bundle exec rake license:upload
tags: !reference [.distribution-amd64-tags]
cache: !reference [.tag-cache]
needs:
- Ubuntu-18.04
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
manifest-upload:
stage: metrics
image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_18.04:${BUILDER_IMAGE_REVISION}"
script:
- bundle exec rake manifest:upload
tags: !reference [.distribution-amd64-tags]
cache: !reference [.tag-cache]
needs:
- Ubuntu-18.04
allow_failure: true
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/'
when: manual
RAT-Tag:
stage: qa
image: "dev.gitlab.org:5005/cookbooks/gitlab-omnibus-builder/ubuntu_22.04:${BUILDER_IMAGE_REVISION}"
script:
- bundle exec rake qa:rat:tag
cache: !reference [.tag-cache]
needs:
- Ubuntu-22.04
allow_failure: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/'
Raspberry-Pi-2-Buster:
extends: .rpi_tag_template
image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}"
Raspberry-Pi-2-Bullseye:
extends: .rpi_tag_template
image: "${BUILDER_IMAGE_REGISTRY}/rpi_11:${BUILDER_IMAGE_REVISION}"
Raspberry-Pi-2-Buster-release:
extends: .raspbian_release_template
needs:
- Raspberry-Pi-2-Buster
Raspberry-Pi-2-Bullseye-release:
extends: .raspbian_release_template
needs:
- Raspberry-Pi-2-Bullseye
AWS-CE-Release:
variables:
AWS_LISTING_NAME: "GitLab Community Edition"
extends: .aws_marketplace_release
needs:
- AWS
rules:
- !reference [.default_rules, rules]
- !reference [.skip_release_jobs, rules]
- if: '$PIPELINE_TYPE == "CE_TAG_BUILD_PIPELINE"'
AWS-EE-Ultimate-Release:
variables:
AWS_LISTING_NAME: "GitLab Ultimate"
extends: .aws_marketplace_release
needs:
- AWS-Ultimate
AWS-EE-Premium-Release:
variables:
AWS_LISTING_NAME: "GitLab Premium"
extends: .aws_marketplace_release
needs:
- AWS-Premium
check-packages:
stage: verify
trigger:
include: '/gitlab-ci-config/check-packages.yml'
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /_TAG_BUILD_PIPELINE$/'
create-gitlab-release:
stage: package-and-image-release
image: "${BUILDER_IMAGE_REGISTRY}/distribution_ci_tools:${BUILDER_IMAGE_REVISION}"
needs:
- job: AWS
artifacts: true
- job: AWS-ARM64
artifacts: true
- job: AWS-Premium
artifacts: true
optional: true
- job: AWS-Ultimate
artifacts: true
optional: true
script:
- bundle exec rake release:print_details | tee release_info.txt
release:
name: "GitLab ${GITLAB_EDITION} ${CI_COMMIT_TAG}"
tag_name: $CI_COMMIT_TAG
description: './release_info.txt'
allow_failure: true
rules:
- !reference [.default_rules, rules]
- if: '$PIPELINE_TYPE =~ /(CE|EE)_TAG_BUILD_PIPELINE$/'