From eedc8e2b0ce48963d699b75776b727bcd46fa727 Mon Sep 17 00:00:00 2001 From: Chris Coley <chris@codingallnight.com> Date: Sun, 23 Apr 2023 16:18:00 -0700 Subject: [PATCH] Finalizing on variable substituion in .pre stage job --- .gitlab-ci.yml | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 055cb1e..589aada 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,15 @@ workflow: rules: - if: $CI_COMMIT_BRANCH +# We can't do variable substitution in a job and then also use that computed +# variable in the Environment URL of the same job, so we have to do the +# substitution in an earlier stage. All of this variable substitution is only +# required for projects in sub-groups because GitLab doesn't have a predefined +# variable that contains the project namespace relative to the root namespace. +# +# For example, if the project path is "/group/subgroup-1" then we need just the +# "/subgroup-1" portion because that is used in the Environment URL path, while +# the "/group" root namespace is used as the subdomain. setup: stage: .pre tags: @@ -16,16 +25,14 @@ setup: dotenv: build.env # We can't deploy multiple different variants of GitLab Pages sites (e.g. one -# per branch), so we use this quick instead. GitLab has a special browsable URL -# for job artifacts on public projects, and we can create an Environment that -# points to that URL so it's easy for devs to know what the current Environment -# URL for their branch is. +# per branch), so we use this workaround instead. GitLab has a special browsable +# URL for job artifacts on public projects, and we can create an Environment +# that points to that URL so it's easy for devs to know what the current +# Environment URL for their branch is. .deploy: stage: deploy tags: - docker - variables: - PROJECT_SUB_NAMESPACE: / script: - sed -i "s/%%BRANCH%%/$CI_COMMIT_BRANCH/g" src/index.html - mv src public @@ -40,15 +47,7 @@ setup: # Deploy a review environment for any push to a branch that is not the default # branch -review-sub: - extends: .deploy - rules: - - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH - environment: - name: "review-sub $CI_COMMIT_BRANCH" - url: "https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-${PROJECT_SUB_NAMESPACE}${CI_PROJECT_NAME}/-/jobs/$CI_JOB_ID/artifacts/public/index.html" - -review-rel: +review: extends: .deploy rules: - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH -- GitLab