דלגו לתוכן

runners

GitLab 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 runner
Next page shows the runner authentication token glrt-… (copy it now) and a register command.

(אם יש לך Owner על ה-group, נסה גם Group → Build → Runners → New group runner. בתרגול ב-Free הכפתור חסר.) ניסוח התפריט עשוי להשתנות בין גרסאות.

runs on: VM
read -rs RUNNER_TOKEN # paste the glrt- token (not echoed), then Enter
sudo gitlab-runner register --non-interactive --url https://<GITLAB_HOST> --token "$RUNNER_TOKEN" --executor shell --description trident
  • sudo כי הפקודה כותבת את /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.
runs on: VM
sudo gitlab-runner list
sudo gitlab-runner verify
systemctl 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 של ה-pipelineProject → Settings → CI/CD → Runnersה-runner ברשימת ה-project
tag: ה-tag ב-job קיים ב-runnertags: ב-YAML מול tags של ה-runnerמול Tags ב-UI
GitLab UI
Unlock + share between projects:
Project A → Settings → CI/CD → Runners → (runner) → Edit (pencil)
untick "Lock to current projects" → Save changes
Enable 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 לא מקבל untaggeddefault: tags: ב-YAML, או Run untagged jobs ON
runner offlineה-service לא רץsudo systemctl restart gitlab-runner
pending על runner שנרשם מחדשה-token הישן נמחקלהוציא runner חדש ב-UI ולרשום
  • Images נשארים בין jobs (אותו daemon). artifacts מעבירים קבצים, לא images. פירוט ב-docker/overview.
  • אין container שנזרק, לכן rm -rf ל-clones זמניים בתחילת וסוף job.
  • למשתמש gitlab-runner לא אמור להיות kubeconfig (CI כותב רק ל-Git):
runs on: VM
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.

runs on: VM
sudo -u gitlab-runner docker info --format '{{.ServerVersion}}'

איך מוודאים: מודפסת גרסה. permission denied while trying to connect to the docker API = המשתמש לא בקבוצת docker:

runs on: VM
sudo usermod -aG docker gitlab-runner
sudo systemctl restart gitlab-runner