diff options
Diffstat (limited to '.gitlab/ci/as-if-foss.gitlab-ci.yml')
-rw-r--r-- | .gitlab/ci/as-if-foss.gitlab-ci.yml | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/.gitlab/ci/as-if-foss.gitlab-ci.yml b/.gitlab/ci/as-if-foss.gitlab-ci.yml new file mode 100644 index 00000000000..fc8db3ba974 --- /dev/null +++ b/.gitlab/ci/as-if-foss.gitlab-ci.yml @@ -0,0 +1,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}" |