الفلاتر
طريقة البحث
  • الكلمات العادية تجد الأسماء والنصوص والأمثلة.
  • "كلمتان" تجد العبارة بالضبط.
  • --name أو -x تجد خيارًا.
  • #كلمة تبحث داخل الأوامر فقط.
  • @grep تجد الدروس والمعامل التي تستخدم grep.
  • الفلاتر: cat:network · in:labs · level:rhcsa · ch:8 · root:yes. ضع ! قبل كلمة لاستبعادها. OR بين الكلمات تعني إحداها.
  • ↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق · / للبحث

gitlab-runner

The agent that runs GitLab CI/CD jobs on your own servers — with a shell, Docker or Kubernetes executor.

المستوى
خدمة DevSecOps
المجموعة
Git و CI/CD
يحتاج root
نعم
الحزمة
gitlab-runner

هذا الجزء لم يُترجم بعد. أنت ترى النص الإنجليزي.

ماذا يفعل

GitLab reads .gitlab-ci.yml from the repository and sends each job to a runner. A self-hosted gitlab-runner registers with a token, picks up jobs and runs them with an executor: shell (on the host), docker (each job in a fresh container — most used) or kubernetes (each job as a pod). The service is gitlab-runner.service; the config is /etc/gitlab-runner/config.toml.

طريقة الكتابة

gitlab-runner COMMAND [OPTIONS]

الأجزاء الرئيسية

Commands

register
Connect the runner to GitLab.
list
Show registered runners.
verify [--delete]
Check runners (remove dead ones).
run
Run in the foreground.
start / stop / restart / status
Control the service.
unregister --name NAME / --all-runners
Remove a runner.
exec docker JOB
Run a job locally (old, limited).

الخيارات 7

الأكثر استخدامًا

register flags

--url https://gitlab.com
GitLab address.
--token glrt-…
Runner authentication token (from the GitLab UI).
--executor docker|shell|kubernetes
How jobs run.
--docker-image IMG
Default image for jobs.
--docker-privileged
Privileged containers (for docker-in-docker; risky).
--non-interactive
No questions.
--description TEXT
Name in the UI.

أمثلة 10

$ مستخدم عادي# بصلاحية root (أو مع sudo)

  1. 1Install on RHEL

    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | bash
    dnf install -y gitlab-runner
    systemctl enable --now gitlab-runner
  2. 2Register a Docker runner

    gitlab-runner register --non-interactive --url https://gitlab.com --token glrt-xxxxxxxxxxxx --executor docker --docker-image alpine:3.20 --description lab-docker
    gitlab-runner list
  3. 3A simple pipeline

    cat .gitlab-ci.yml
    stages: [test, build, deploy]
    test:
      stage: test
      image: python:3.12-slim
      script:
        - pip install -r requirements.txt
        - pytest -q
    build:
      stage: build
      image: docker:27
      services: [docker:27-dind]
      script:
        - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
  4. 4Add security scans from GitLab templates

    cat .gitlab-ci.yml
    include:
      - template: Jobs/SAST.gitlab-ci.yml
      - template: Jobs/Secret-Detection.gitlab-ci.yml
      - template: Jobs/Container-Scanning.gitlab-ci.yml
  5. 5Deploy only from main with a protected environment

    cat .gitlab-ci.yml
    deploy:
      stage: deploy
      environment: production
      rules:
        - if: $CI_COMMIT_BRANCH == "main"
      script:
        - kubectl apply -k deploy/overlays/prod
  6. 6Read the runner config

    cat /etc/gitlab-runner/config.toml
    concurrent = 4
    [[runners]]
      name = "lab-docker"
      executor = "docker"
      [runners.docker]
        image = "alpine:3.20"
        privileged = false
  7. 7Check and fix runners

    gitlab-runner verify
    gitlab-runner status
    journalctl -u gitlab-runner -f
  8. 8Run the runner on Kubernetes with Helm

    helm repo add gitlab https://charts.gitlab.io
    helm install runner gitlab/gitlab-runner -n gitlab-runner --create-namespace --set gitlabUrl=https://gitlab.com --set runnerToken=glrt-xxxxxxxxxxxx
  9. 9Remove a runner

    gitlab-runner unregister --name lab-docker
  10. 10Build images without privileged mode (kaniko)

    cat .gitlab-ci.yml
    build:
      image: { name: gcr.io/kaniko-project/executor:v1.23.2-debug, entrypoint: [""] }
      script:
        - /kaniko/executor --context $CI_PROJECT_DIR --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA

انتبه

  • privileged = true (docker-in-docker) lets jobs take over the host. Prefer kaniko or buildah.
  • The shell executor runs jobs as the gitlab-runner user on the host — do not use it for untrusted code.
  • Store tokens as masked, protected CI/CD variables, not in .gitlab-ci.yml.

الملفات

/etc/gitlab-runner/config.toml
Runner configuration (contains tokens, rights 600).
.gitlab-ci.yml
The pipeline in the repository.

نصائح للحفظ

  • Use tags (tags: [docker]) to send jobs to the right runner.

رموز الخروج

0Success.
1Error.

الدليل الكامل

هذه الصفحة تشرح الأمر بكلمات بسيطة. الدليل الأصلي فيه كل التفاصيل.

في الطرفية: man gitlab-runner