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