هذا الجزء لم يُترجم بعد. أنت ترى النص الإنجليزي.
ماذا يفعل
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--nameNAME/--all-runners- Remove a runner.
execdockerJOB- Run a job locally (old, limited).
الخيارات 7
الأكثر استخدامًا
register flags
لا يوجد شيء يطابق هذا الفلتر.
أمثلة 10
$ مستخدم عادي# بصلاحية root (أو مع sudo)
1Install on RHEL
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 list3A 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_SHA4Add 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.yml5Deploy 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/prod6Read the runner config
cat /etc/gitlab-runner/config.toml concurrent = 4 [[runners]] name = "lab-docker" executor = "docker" [runners.docker] image = "alpine:3.20" privileged = false7Check and fix runners
gitlab-runner verify gitlab-runner status journalctl -u gitlab-runner -f8Run the runner on Kubernetes with Helm
9Remove a runner
gitlab-runner unregister --name lab-docker10Build 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-runneruser 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.
رموز الخروج
0 | Success. |
1 | Error. |