blob: 5bcf1ff696c0cc362fdaab47ed1ba8c06175b6c8 (
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
.as-if-foss-variables:
variables:
AS_IF_FOSS_BRANCH: "as-if-foss/${CI_COMMIT_REF_NAME}"
FOSS_REPOSITORY: "https://dummy:${AS_IF_FOSS_TOKEN}@gitlab.com/${CI_PROJECT_NAMESPACE}/gitlab-foss.git"
prepare-as-if-foss-branch:
extends:
- .as-if-foss:rules:start-as-if-foss
- .as-if-foss-variables
stage: prepare
needs: []
environment:
name: "as-if-foss/${CI_MERGE_REQUEST_IID}"
on_stop: delete-as-if-foss-branch
before_script:
- git clone --single-branch --branch master "${FOSS_REPOSITORY}" gitlab-foss
- git -C gitlab-foss checkout -b "${AS_IF_FOSS_BRANCH}" master
- rm -r .git/
- mv gitlab-foss/.git .
- rm -r gitlab-foss
script:
# See: https://gitlab.com/gitlab-org/merge-train/-/blob/041d942ae1b5615703b7a786982340b61620e7c5/bin/merge-train#L228-239
- git checkout VERSION
- rm -rf ee
- rm -rf qa/spec/ee
- rm -rf qa/qa/specs/features/ee
- rm -rf qa/qa/ee
- rm -f qa/qa/ee.rb
- rm -f CHANGELOG-EE.md
- rm -f changelogs/*-ee.md
- git add -A
- git commit -m 'Update from merge request' # TODO: Mark which SHA we add
- git push -f "${FOSS_REPOSITORY}" "${AS_IF_FOSS_BRANCH}"
prepare-as-if-foss-env:
extends:
- .as-if-foss:rules:start-as-if-foss
- .fast-no-clone-job
stage: prepare
needs: []
variables:
BUILD_ENV: build.env
FILES_TO_DOWNLOAD: >
scripts/setup/generate-as-if-foss-env.rb
script:
- install_gitlab_gem
- ruby scripts/setup/generate-as-if-foss-env.rb | tee "${BUILD_ENV}"
artifacts:
expire_in: 3 days
reports:
dotenv: $BUILD_ENV
paths:
- $BUILD_ENV
start-as-if-foss:
extends:
- .as-if-foss:rules:start-as-if-foss
stage: prepare
needs:
- prepare-as-if-foss-branch
- prepare-as-if-foss-env
inherit:
variables: false # Otherwise variables will be messed up
variables:
START_AS_IF_FOSS: $START_AS_IF_FOSS
RUBY_VERSION: $RUBY_VERSION
ENABLE_RSPEC: $ENABLE_RSPEC
ENABLE_RSPEC_FAST_SPEC_HELPER: $ENABLE_RSPEC_FAST_SPEC_HELPER
ENABLE_RSPEC_PRAEFECT: $ENABLE_RSPEC_PRAEFECT
ENABLE_RSPEC_SINGLE_DB: $ENABLE_RSPEC_SINGLE_DB
ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION: $ENABLE_RSPEC_SINGLE_DB_CI_CONNECTION
ENABLE_RSPEC_SINGLE_REDIS: $ENABLE_RSPEC_SINGLE_REDIS
ENABLE_RSPEC_UNIT: $ENABLE_RSPEC_UNIT
ENABLE_RSPEC_INTEGRATION: $ENABLE_RSPEC_INTEGRATION
ENABLE_RSPEC_SYSTEM: $ENABLE_RSPEC_SYSTEM
ENABLE_RSPEC_MIGRATION: $ENABLE_RSPEC_MIGRATION
ENABLE_RSPEC_BACKGROUND_MIGRATION: $ENABLE_RSPEC_BACKGROUND_MIGRATION
ENABLE_RSPEC_FRONTEND_FIXTURE: $ENABLE_RSPEC_FRONTEND_FIXTURE
ENABLE_BUILD_ASSETS_IMAGE: $ENABLE_BUILD_ASSETS_IMAGE
ENABLE_BUILD_QA_IMAGE: $ENABLE_BUILD_QA_IMAGE
ENABLE_COMPILE_PRODUCTION_ASSETS: $ENABLE_COMPILE_PRODUCTION_ASSETS
ENABLE_COMPILE_STORYBOOK: $ENABLE_COMPILE_STORYBOOK
ENABLE_COMPILE_TEST_ASSETS: $ENABLE_COMPILE_TEST_ASSETS
ENABLE_ESLINT: $ENABLE_ESLINT
ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA: $ENABLE_GENERATE_APOLLO_GRAPHQL_SCHEMA
ENABLE_GRAPHQL_SCHEMA_DUMP: $ENABLE_GRAPHQL_SCHEMA_DUMP
ENABLE_JEST: $ENABLE_JEST
ENABLE_JEST_INTEGRATION: $ENABLE_JEST_INTEGRATION
ENABLE_QA_INTERNAL: $ENABLE_QA_INTERNAL
ENABLE_QA_SELECTORS: $ENABLE_QA_SELECTORS
ENABLE_STATIC_ANALYSIS: $ENABLE_STATIC_ANALYSIS
trigger:
project: ${CI_PROJECT_NAMESPACE}/gitlab-foss
branch: as-if-foss/${CI_COMMIT_REF_NAME}
strategy: depend
delete-as-if-foss-branch:
extends:
- .as-if-foss:rules:start-as-if-foss:allow-failure:manual
- .as-if-foss-variables
image:
name: alpine/git
entrypoint: [""]
stage: prepare
needs:
- prepare-as-if-foss-branch
environment:
name: "as-if-foss/${CI_MERGE_REQUEST_IID}"
action: stop
variables:
GIT_STRATEGY: "none"
script:
- |
git init
git push -d "${FOSS_REPOSITORY}" "${AS_IF_FOSS_BRANCH}"
# We can only delete the environment after it's stopped, therefore
# we need to use another job to delete the environment, not in the
# job where it's stopping the environment. See:
# https://docs.gitlab.com/ee/ci/environments/#delete-an-environment
delete-as-if-foss-environment:
extends:
- .as-if-foss:rules:start-as-if-foss:allow-failure
image: alpine:latest
stage: prepare
needs:
- delete-as-if-foss-branch
variables:
GIT_STRATEGY: "none"
ESCAPED_ENVIRONMENT_NAME: "as-if-foss%2f${CI_MERGE_REQUEST_IID}"
ENVIRONMENT_API_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/environments"
before_script:
- apk add jq curl
script:
- |
ENV_ID=$(curl --silent --fail --request GET --header "Private-Token: ${PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE}" "${ENVIRONMENT_API_URL}?name=${ESCAPED_ENVIRONMENT_NAME}" | jq '.[0].id')
curl --silent --request DELETE --header "Private-Token: $PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE" "${ENVIRONMENT_API_URL}/${ENV_ID}"
|