דלגו לתוכן

CI/CD variables

GitLab UI
Project (or Group) → Settings → CI/CD → Variables → Expand → Add variable
Type: Variable | File
Environments: All (default)
Visibility: Visible | Masked | Masked and hidden (older UI: a "Mask variable" checkbox)
Flags: Protect variable Expand variable reference
Key: TRIDENT_GIT_TOKEN
Value: <paste>
→ Add variable

ניסוח הדגלים משתנה בין גרסאות (checkboxes ישנים מול Visibility חדש). המשמעות זהה.

group variableproject variable
איפהGroup → Settings → CI/CD → VariablesProject → Settings → CI/CD → Variables
נראה לכל ה-projects ב-group (וב-subgroups)project אחד
מתאים לTRIDENT_GROUP, TRIDENT_GIT_TOKEN (משותף ל-source ול-ci)ערך ששייך ל-repo אחד
ניגוד שמותproject גובר על group

הרשאה: Maintainer ומעלה (group variables: לפעמים Owner, תלוי גרסה).

MaskProtect
מה עושהמחליף את הערך ב-[MASKED] ב-job logה-variable קיים רק ב-pipelines של branch/tag מוגנים
מה לא עושהלא חוסם גישה, לא מצפיןלא מסתיר ב-log
מגבלותערך ≥ 8 תווים, שורה אחת, בלי רווחיםתלוי בהגדרת protected branches
מתאים לכל secretsecret ש-רק main (פרסום) צריך לראות

איך מוודאים (בלי להדפיס את הערך), בתוך job:

file: .gitlab-ci.yml
var-check:
script:
- 'test -n "$TRIDENT_GIT_TOKEN" && echo "token: set" || echo "token: EMPTY"'
- 'echo "protected branch: $CI_COMMIT_REF_PROTECTED"'

token: EMPTY + protected branch: false = ה-variable מוגן וה-branch לא. תיקון: לכבות Protect, או להגן על ה-branch.

variables ב-CI לא נראים בטרמינל

Section titled “variables ב-CI לא נראים בטרמינל”
runs on: VM
export TRIDENT_GITOPS_URL="https://<GITLAB_HOST>/<GROUP>/<REPO>.git"
echo "${TRIDENT_GITOPS_URL:-EMPTY}"
env | grep -c '^TRIDENT_GITOPS_URL='

איך מוודאים: echo מדפיס את ה-URL ו-grep -c מחזיר 1.

variable חסר גורם ל-include נכשל

Section titled “variable חסר גורם ל-include נכשל”
  • שם: אותיות, ספרות, _; לא מתחיל בספרה. מקובל UPPER_SNAKE.
  • שימוש ב-YAML וב-script: $NAME או ${NAME}. בתוך מחרוזת עם תווים סמוכים השתמש ב-${NAME}.
  • Expand variable reference (ON כברירת מחדל): $X בתוך הערך מורחב. אם הערך עצמו מכיל $ (סיסמה), כבה את הדגל.
  • Type = File: הערך נכתב לקובץ זמני ו-$NAME הוא הנתיב לקובץ (מתאים לתעודות, kubeconfig).
  • variable שמוגדר בקובץ ה-YAML (variables:) לא מסתיר ערכים. secrets רק ב-UI.
  • predefined (אוטומטיים): טבלה ב-ci/overview.