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