Welcome to mirror list, hosted at ThFree Co, Russian Federation.

as-if-foss.gitlab-ci.yml « ci « .gitlab - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: fc8db3ba9748099f6d5f1ad06e07066b90effc34 (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
.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/gitlab-org/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_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: gitlab-org/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}"