runners
ליצור runner ב-UI
Section titled “ליצור runner ב-UI”Project → Settings → CI/CD → Runners → Expand → New project runner Operating systems: Linux Tags: trident (the exact tag the jobs request in "tags:") Run untagged jobs: leave OFF if you want tags to be required Runner description: trident → Create runnerNext page shows the runner authentication token glrt-… (copy it now) and a register command.(אם יש לך Owner על ה-group, נסה גם Group → Build → Runners → New group runner. בתרגול ב-Free הכפתור חסר.) ניסוח התפריט עשוי להשתנות בין גרסאות.
לרשום על ה-VM
Section titled “לרשום על ה-VM”read -rs RUNNER_TOKEN # paste the glrt- token (not echoed), then Entersudo gitlab-runner register --non-interactive --url https://<GITLAB_HOST> --token "$RUNNER_TOKEN" --executor shell --description tridentsudoכי הפקודה כותבת את/etc/gitlab-runner/config.toml(שייך ל-root).- הדגלים אומתו מול
gitlab-runner register --help:--non-interactive,--url,--token,--executor,--description. - לא מעבירים
--tag-list,--run-untagged,--locked. עםglrt-token הפקודה נעצרת ב-FATAL: Runner configuration other than name and executor configuration is reserved. את אלה קובעים ב-UI. --executor shell: ה-jobs רצים כמשתמשgitlab-runnerעל אותה מכונה ואותו docker daemon.
sudo gitlab-runner listsudo gitlab-runner verifysystemctl status gitlab-runner --no-pagerאיך מוודאים: list מציג את ה-runner, verify מדווח is valid, ו-status הוא active (running). ב-UI: Settings → CI/CD → Runners מציג נקודה ירוקה (online).
בלי sudo, gitlab-runner list קורא את ~/.gitlab-runner/config.toml האישי ולא את זה של ה-service.
tags ו-scope חייבים להתאים (pending / stuck)
Section titled “tags ו-scope חייבים להתאים (pending / stuck)”job ב-pending עם "no runner for tags trident" / "stuck" אומר שאין runner שמתאים. שני תנאים בו-זמנית:
| תנאי | איפה | בדיקה |
|---|---|---|
| scope: ה-runner משויך ל-project של ה-pipeline | Project → Settings → CI/CD → Runners | ה-runner ברשימת ה-project |
| tag: ה-tag ב-job קיים ב-runner | tags: ב-YAML מול tags של ה-runner | מול Tags ב-UI |
Unlock + share between projects: Project A → Settings → CI/CD → Runners → (runner) → Edit (pencil) untick "Lock to current projects" → Save changesEnable in project B: Project B → Settings → CI/CD → Runners → "Other available project runners" → Enable for this project (needs Maintainer in both projects)Tags / untagged: same Edit page → Tags, "Run untagged jobs"| תסמין | סיבה | תיקון |
|---|---|---|
pending / stuck, "no runner for tags X" | tag לא תואם או scope שגוי | להתאים tags: ו-scope כנ"ל |
job בלי tags: נתקע | ה-runner לא מקבל untagged | default: tags: ב-YAML, או Run untagged jobs ON |
| runner offline | ה-service לא רץ | sudo systemctl restart gitlab-runner |
pending על runner שנרשם מחדש | ה-token הישן נמחק | להוציא runner חדש ב-UI ולרשום |
אחרי runner shell: מה לדעת
Section titled “אחרי runner shell: מה לדעת”- Images נשארים בין jobs (אותו daemon). artifacts מעבירים קבצים, לא images. פירוט ב-docker/overview.
- אין container שנזרק, לכן
rm -rfל-clones זמניים בתחילת וסוף job. - למשתמש
gitlab-runnerלא אמור להיות kubeconfig (CI כותב רק ל-Git):
sudo -u gitlab-runner bash -lc 'echo "KUBECONFIG=${KUBECONFIG:-unset}"; ls ~/.kube 2>&1'איך מוודאים: KUBECONFIG=unset ו-No such file or directory.
ל-runner צריכה להיות גישה ל-docker
Section titled “ל-runner צריכה להיות גישה ל-docker”jobs של build ו-publish מריצים docker. ה-user gitlab-runner חייב להיות מורשה ל-daemon.
sudo -u gitlab-runner docker info --format '{{.ServerVersion}}'איך מוודאים: מודפסת גרסה. permission denied while trying to connect to the docker API = המשתמש לא בקבוצת docker:
sudo usermod -aG docker gitlab-runnersudo systemctl restart gitlab-runner