summaryrefslogtreecommitdiff
path: root/.gitlab/ci/review-apps/main.gitlab-ci.yml
blob: 16ef3c82cda5269a0ec6cfe4ab6811b8e166d448 (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
stages:
  - prepare
  - deploy
  - qa
  - post-qa
  - dast

include:
  - local: .gitlab/ci/global.gitlab-ci.yml
  - local: .gitlab/ci/rules.gitlab-ci.yml
  - local: .gitlab/ci/review-apps/qa.gitlab-ci.yml
  - local: .gitlab/ci/review-apps/dast.gitlab-ci.yml

.base-before_script: &base-before_script
  - source ./scripts/utils.sh
  - source ./scripts/review_apps/review-apps.sh
  - install_api_client_dependencies_with_apk

review-build-cng:
  extends:
    - .default-retry
    - .review:rules:review-build-cng
  image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
  stage: prepare
  variables:
    CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}"  # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens
    CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror"
  before_script:
    - source ./scripts/utils.sh
    - install_gitlab_gem
  script:
    - ./scripts/trigger-build cng

.review-workflow-base:
  extends:
    - .default-retry
  image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:gitlab-helm3.5-kubectl1.17
  resource_group: "review/${CI_COMMIT_REF_NAME}"
  variables:
    HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
    DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
    GITLAB_HELM_CHART_REF: "v5.5.0"
  environment:
    name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY}
    url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}
    on_stop: review-stop
    auto_stop_in: 48 hours

review-deploy:
  extends:
    - .review-workflow-base
    - .review:rules:review-deploy
  stage: deploy
  needs: ["review-build-cng"]
  before_script:
    - export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION)
    - export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
    - export GITLAB_WORKHORSE_VERSION=$(<GITLAB_WORKHORSE_VERSION)
    - echo "${CI_ENVIRONMENT_URL}" > environment_url.txt
    - *base-before_script
  script:
    - check_kube_domain
    - download_chart
    - date
    - deploy || (display_deployment_debug && exit 1)
    - verify_deploy || exit 1
    - disable_sign_ups || (delete_release && exit 1)
    - create_sample_projects
  after_script:
    # Run seed-dast-test-data.sh only when DAST_RUN is set to true. This is to pupulate review app with data for DAST scan.
    # Set DAST_RUN to true when jobs are manually scheduled.
    - if [ "$DAST_RUN" == "true" ]; then source scripts/review_apps/seed-dast-test-data.sh; TRACE=1 trigger_proj_user_creation; fi
  artifacts:
    paths:
      - environment_url.txt
      - curl_output.txt
    expire_in: 7 days
    when: always

.review-stop-base:
  extends: .review-workflow-base
  environment:
    action: stop
  dependencies: []
  variables:
    # We're cloning the repo instead of downloading the script for now
    # because some repos are private and CI_JOB_TOKEN cannot access files.
    # See https://gitlab.com/gitlab-org/gitlab/issues/191273
    GIT_DEPTH: 1
  before_script:
    - *base-before_script

review-delete-deployment:
  extends:
    - .review-stop-base
    - .review:rules:review-delete-deployment
  stage: prepare
  script:
    - delete_release

review-stop:
  extends:
    - .review-stop-base
    - .review:rules:review-stop
  stage: deploy
  needs: []
  script:
    - delete_namespace