summaryrefslogtreecommitdiff
path: root/.gitlab/ci/release-environments/main.gitlab-ci.yml
blob: 982329646a704a07598e80e6472d89913bce964a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
---
default:
  interruptible: true

stages:
  - prepare
  - deploy

include:
  - local: .gitlab/ci/global.gitlab-ci.yml

release-environments-build-cng-env:
  allow_failure: true
  image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine3.16
  stage: prepare
  needs:
    # We need this job because we need its `cached-assets-hash.txt` artifact, so that we can pass the assets image tag to the downstream CNG pipeline.
    - pipeline: $PARENT_PIPELINE_ID
      job: build-assets-image
  variables:
    BUILD_ENV: build.env
  before_script:
    - source ./scripts/utils.sh
    - install_gitlab_gem
  script:
    - 'ruby -r./scripts/trigger-build.rb -e "puts Trigger.variables_for_env_file(Trigger::CNG.new.variables)" > $BUILD_ENV'
    - echo "GITLAB_ASSETS_TAG=$(assets_image_tag)" >> $BUILD_ENV
    - ruby -e 'puts "FULL_RUBY_VERSION=#{RUBY_VERSION}"' >> build.env
    - cat $BUILD_ENV
  artifacts:
    reports:
      dotenv: $BUILD_ENV
    paths:
      - $BUILD_ENV
    expire_in: 7 days
    when: always

release-environments-build-cng:
  allow_failure: true
  stage: prepare
  needs: ["release-environments-build-cng-env"]
  inherit:
    variables: false
  variables:
    GITLAB_REF_SLUG: "${GITLAB_REF_SLUG}"
    # CNG pipeline specific variables
    GITLAB_VERSION: "${GITLAB_VERSION}"
    GITLAB_TAG: "${GITLAB_TAG}"
    GITLAB_ASSETS_TAG: "${GITLAB_ASSETS_TAG}"
    FORCE_RAILS_IMAGE_BUILDS: "${FORCE_RAILS_IMAGE_BUILDS}"
    CE_PIPELINE: "${CE_PIPELINE}"  # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$CE_PIPELINE'` will evaluate to `false` when this variable is empty
    EE_PIPELINE: "${EE_PIPELINE}"  # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$EE_PIPELINE'` will evaluate to `false` when this variable is empty
    GITLAB_ELASTICSEARCH_INDEXER_VERSION: "${GITLAB_ELASTICSEARCH_INDEXER_VERSION}"
    GITLAB_KAS_VERSION: "${GITLAB_KAS_VERSION}"
    GITLAB_METRICS_EXPORTER_VERSION: "${GITLAB_METRICS_EXPORTER_VERSION}"
    GITLAB_PAGES_VERSION: "${GITLAB_PAGES_VERSION}"
    GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}"
    GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
    RUBY_VERSION: "${FULL_RUBY_VERSION}"
    IMAGE_TAG_EXT: "-${CI_COMMIT_SHORT_SHA}"
  trigger:
    project: gitlab-org/build/CNG-mirror
    branch: $TRIGGER_BRANCH
    strategy: depend

release-environments-deploy-env:
  allow_failure: true
  stage: deploy
  needs: ["release-environments-build-cng"]
  variables:
    DEPLOY_ENV: deploy.env
  script:
    - ./scripts/construct-release-environments-versions.rb > $DEPLOY_ENV
  artifacts:
    reports:
      dotenv: $DEPLOY_ENV
    paths:
      - $DEPLOY_ENV
    expire_in: 7 days
    when: always

release-environments-deploy:
  allow_failure: true
  stage: deploy
  needs: ["release-environments-deploy-env"]
  inherit:
    variables: false
  variables:
    VERSIONS: "${VERSIONS}"
    ENVIRONMENT: "${ENVIRONMENT}"
  trigger:
    project: gl-infra/release-environments
    branch: main
    strategy: depend