Skip to content

Commit a45dbca

Browse files
bug fixes and usability improvements
1 parent eae6d2b commit a45dbca

2 files changed

Lines changed: 48 additions & 26 deletions

File tree

Gitlab-Templatized/scripts/generate_pipeline.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ def load_dotenv(path=None):
106106
DOTENV_FILE = os.environ.get("DOTENV_FILE", "generate.env")
107107
HASH_FILE = os.environ.get("HASH_FILE", ".targets_hash")
108108

109+
# Variable names used for target DB credentials in the generated child pipeline.
110+
# Override to point at environment-specific CI/CD variables.
111+
# e.g. TARGET_USER_VAR=QA_TARGET_DATABASE_USER
112+
TARGET_USER_VAR = os.environ.get("TARGET_USER_VAR", "TARGET_DATABASE_USER")
113+
TARGET_PASSWORD_VAR = os.environ.get("TARGET_PASSWORD_VAR", "TARGET_DATABASE_PASSWORD")
114+
109115
# For the child pipeline's include directive
110116
TEMPLATE_PROJECT = os.environ.get("TEMPLATE_PROJECT", "")
111117
TEMPLATE_REF = os.environ.get("TEMPLATE_REF", "main")
@@ -269,8 +275,8 @@ def build_pipeline(targets):
269275

270276
shared_vars = {
271277
"FLYWAY_URL": target["jdbc_url"],
272-
"FLYWAY_USER": "${TARGET_DATABASE_USER}",
273-
"FLYWAY_PASSWORD": "${TARGET_DATABASE_PASSWORD}",
278+
"FLYWAY_USER": "${" + TARGET_USER_VAR + "}",
279+
"FLYWAY_PASSWORD": "${" + TARGET_PASSWORD_VAR + "}",
274280
}
275281

276282
# --- check job (runs first) ---

Gitlab-Templatized/usage-examples/staging-and-production.gitlab-ci.yml

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
# QA_REGISTRY_SERVER SQL Server for QA registry
3232
# QA_REGISTRY_USER Login for the QA registry
3333
# QA_REGISTRY_PASSWORD *** (Protected + Masked)
34+
# QA_TARGET_DATABASE_USER Login for QA target databases
35+
# QA_TARGET_DATABASE_PASSWORD *** (Protected + Masked)
3436
# PROD_REGISTRY_SERVER SQL Server for Prod registry
3537
# PROD_REGISTRY_USER Login for the Prod registry
3638
# PROD_REGISTRY_PASSWORD *** (Protected + Masked)
@@ -123,6 +125,12 @@ commit:scripts:
123125
"http://gitlab-ci-token:${CI_JOB_TOKEN}@172.30.0.2/${TEMPLATE_PROJECT}.git"
124126
/tmp/templates
125127
- pip install --quiet -r /tmp/templates/scripts/requirements.txt
128+
# Force registry variables — project-level REGISTRY_SERVER would
129+
# otherwise override the job-level value due to GitLab precedence.
130+
- export REGISTRY_SERVER="${OVERRIDE_REGISTRY_SERVER}"
131+
- export REGISTRY_USER="${OVERRIDE_REGISTRY_USER}"
132+
- export REGISTRY_PASSWORD="${OVERRIDE_REGISTRY_PASSWORD}"
133+
- echo "Registry server=${REGISTRY_SERVER}"
126134
- echo "Generating pipeline for ${FILTER_LOCATION} → ${OUTPUT_FILE}"
127135
- python /tmp/templates/scripts/generate_pipeline.py
128136
- cat "${OUTPUT_FILE}"
@@ -135,9 +143,11 @@ commit:scripts:
135143
generate:qa:all:
136144
extends: .generate_base
137145
variables:
138-
REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
139-
REGISTRY_USER: "$QA_REGISTRY_USER"
140-
REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
146+
OVERRIDE_REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
147+
OVERRIDE_REGISTRY_USER: "$QA_REGISTRY_USER"
148+
OVERRIDE_REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
149+
TARGET_USER_VAR: "QA_TARGET_DATABASE_USER"
150+
TARGET_PASSWORD_VAR: "QA_TARGET_DATABASE_PASSWORD"
141151
FILTER_LOCATION: "all"
142152
OUTPUT_FILE: "dynamic-pipeline-qa-all.yml"
143153
artifacts:
@@ -149,9 +159,11 @@ generate:qa:all:
149159
generate:qa:london:
150160
extends: .generate_base
151161
variables:
152-
REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
153-
REGISTRY_USER: "$QA_REGISTRY_USER"
154-
REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
162+
OVERRIDE_REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
163+
OVERRIDE_REGISTRY_USER: "$QA_REGISTRY_USER"
164+
OVERRIDE_REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
165+
TARGET_USER_VAR: "QA_TARGET_DATABASE_USER"
166+
TARGET_PASSWORD_VAR: "QA_TARGET_DATABASE_PASSWORD"
155167
FILTER_LOCATION: "London"
156168
OUTPUT_FILE: "dynamic-pipeline-qa-london.yml"
157169
artifacts:
@@ -163,9 +175,11 @@ generate:qa:london:
163175
generate:qa:new-york:
164176
extends: .generate_base
165177
variables:
166-
REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
167-
REGISTRY_USER: "$QA_REGISTRY_USER"
168-
REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
178+
OVERRIDE_REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
179+
OVERRIDE_REGISTRY_USER: "$QA_REGISTRY_USER"
180+
OVERRIDE_REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
181+
TARGET_USER_VAR: "QA_TARGET_DATABASE_USER"
182+
TARGET_PASSWORD_VAR: "QA_TARGET_DATABASE_PASSWORD"
169183
FILTER_LOCATION: "New York"
170184
OUTPUT_FILE: "dynamic-pipeline-qa-new-york.yml"
171185
artifacts:
@@ -177,9 +191,11 @@ generate:qa:new-york:
177191
generate:qa:tokyo:
178192
extends: .generate_base
179193
variables:
180-
REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
181-
REGISTRY_USER: "$QA_REGISTRY_USER"
182-
REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
194+
OVERRIDE_REGISTRY_SERVER: "$QA_REGISTRY_SERVER"
195+
OVERRIDE_REGISTRY_USER: "$QA_REGISTRY_USER"
196+
OVERRIDE_REGISTRY_PASSWORD: "$QA_REGISTRY_PASSWORD"
197+
TARGET_USER_VAR: "QA_TARGET_DATABASE_USER"
198+
TARGET_PASSWORD_VAR: "QA_TARGET_DATABASE_PASSWORD"
183199
FILTER_LOCATION: "Tokyo"
184200
OUTPUT_FILE: "dynamic-pipeline-qa-tokyo.yml"
185201
artifacts:
@@ -248,9 +264,9 @@ deploy:qa:tokyo:
248264
generate:prod:all:
249265
extends: .generate_base
250266
variables:
251-
REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
252-
REGISTRY_USER: "$PROD_REGISTRY_USER"
253-
REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
267+
OVERRIDE_REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
268+
OVERRIDE_REGISTRY_USER: "$PROD_REGISTRY_USER"
269+
OVERRIDE_REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
254270
FILTER_LOCATION: "all"
255271
OUTPUT_FILE: "dynamic-pipeline-prod-all.yml"
256272
artifacts:
@@ -262,9 +278,9 @@ generate:prod:all:
262278
generate:prod:london:
263279
extends: .generate_base
264280
variables:
265-
REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
266-
REGISTRY_USER: "$PROD_REGISTRY_USER"
267-
REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
281+
OVERRIDE_REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
282+
OVERRIDE_REGISTRY_USER: "$PROD_REGISTRY_USER"
283+
OVERRIDE_REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
268284
FILTER_LOCATION: "London"
269285
OUTPUT_FILE: "dynamic-pipeline-prod-london.yml"
270286
artifacts:
@@ -276,9 +292,9 @@ generate:prod:london:
276292
generate:prod:new-york:
277293
extends: .generate_base
278294
variables:
279-
REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
280-
REGISTRY_USER: "$PROD_REGISTRY_USER"
281-
REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
295+
OVERRIDE_REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
296+
OVERRIDE_REGISTRY_USER: "$PROD_REGISTRY_USER"
297+
OVERRIDE_REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
282298
FILTER_LOCATION: "New York"
283299
OUTPUT_FILE: "dynamic-pipeline-prod-new-york.yml"
284300
artifacts:
@@ -290,9 +306,9 @@ generate:prod:new-york:
290306
generate:prod:tokyo:
291307
extends: .generate_base
292308
variables:
293-
REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
294-
REGISTRY_USER: "$PROD_REGISTRY_USER"
295-
REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
309+
OVERRIDE_REGISTRY_SERVER: "$PROD_REGISTRY_SERVER"
310+
OVERRIDE_REGISTRY_USER: "$PROD_REGISTRY_USER"
311+
OVERRIDE_REGISTRY_PASSWORD: "$PROD_REGISTRY_PASSWORD"
296312
FILTER_LOCATION: "Tokyo"
297313
OUTPUT_FILE: "dynamic-pipeline-prod-tokyo.yml"
298314
artifacts:

0 commit comments

Comments
 (0)