CI/CD variables
ליצור variable
Section titled “ליצור variable”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 מול project
Section titled “group מול project”| group variable | project variable | |
|---|---|---|
| איפה | Group → Settings → CI/CD → Variables | Project → Settings → CI/CD → Variables |
| נראה ל | כל ה-projects ב-group (וב-subgroups) | project אחד |
| מתאים ל | TRIDENT_GROUP, TRIDENT_GIT_TOKEN (משותף ל-source ול-ci) | ערך ששייך ל-repo אחד |
| ניגוד שמות | project גובר על group |
הרשאה: Maintainer ומעלה (group variables: לפעמים Owner, תלוי גרסה).
Mask מול Protect
Section titled “Mask מול Protect”| Mask | Protect | |
|---|---|---|
| מה עושה | מחליף את הערך ב-[MASKED] ב-job log | ה-variable קיים רק ב-pipelines של branch/tag מוגנים |
| מה לא עושה | לא חוסם גישה, לא מצפין | לא מסתיר ב-log |
| מגבלות | ערך ≥ 8 תווים, שורה אחת, בלי רווחים | תלוי בהגדרת protected branches |
| מתאים ל | כל secret | secret ש-רק main (פרסום) צריך לראות |
איך מוודאים (בלי להדפיס את הערך), בתוך job:
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 לא נראים בטרמינל”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 נכשל”שמות, הרחבה וסוגים
Section titled “שמות, הרחבה וסוגים”- שם: אותיות, ספרות,
_; לא מתחיל בספרה. מקובל UPPER_SNAKE. - שימוש ב-YAML וב-script:
$NAMEאו${NAME}. בתוך מחרוזת עם תווים סמוכים השתמש ב-${NAME}. - Expand variable reference (ON כברירת מחדל):
$Xבתוך הערך מורחב. אם הערך עצמו מכיל$(סיסמה), כבה את הדגל. - Type = File: הערך נכתב לקובץ זמני ו-
$NAMEהוא הנתיב לקובץ (מתאים לתעודות, kubeconfig). - variable שמוגדר בקובץ ה-YAML (
variables:) לא מסתיר ערכים. secrets רק ב-UI. - predefined (אוטומטיים): טבלה ב-ci/overview.