Gitlab CI/CD Auto -Pull – Community Dev

Gitlab CI/CD خودکار تکنیکی است که به سرور از راه دور شما اجازه می دهد تا هر زمان که به روزرسانی ها به یک مخزن GitLab منتقل شوند ، آخرین تغییر کد را به طور خودکار بکشید. این امر نیاز به مداخله دستی در استقرار را از بین می برد و این روند را یکپارچه و کارآمد می کند.
چرا از کشش خودکار در Gitlab CI/CD استفاده می کنید؟ 🚀
ورود دستی به سرور و کشیدن به روزرسانی های کد جدید می تواند خسته کننده و مستعد خطا باشد. خودکار سازی این فرآیند مزایای مختلفی را ارائه می دهد:
- ✅ کارآیی – نیازی به کشیدن دستی پس از هر تعهد نیست.
- ✅ قوام – تضمین می کند که نسخه صحیح کد مستقر شود.
- intain خطای انسانی را کاهش داد – خطر فراموش کردن به روزرسانی ها را از بین می برد.
- ✅ استقرار سریعتر – به روزرسانی کد به محض فشار در سرور موجود است.
1. دسترسی SSH را دریافت کنید:
چگونه می توان کلید Openssh-Private را دریافت کرد
دسترسی SSH را آزمایش کنید
ssh @
بدست آوردن Openssh-Private-Key
ssh -o StrictHostKeyChecking=no ssh @ "cat ~/.ssh/id_rsa"
مقدار باید باشد:
-----BEGIN OPENSSH PRIVATE KEY-----
....
-----END OPENSSH PRIVATE KEY-----
2. تنظیم اعتبار متغیرها:
رفتن به پروژه Gitlab → تنظیمات → CI/CD → متغیرها
می توانید متغیر اعتبار را در آنجا اضافه کنید.
به عنوان مثال: openssh-private-key
(prod_ssh_private_key).
prod_ssh_private_key: باید openssh-private-key
از
که قابل دسترسی به Directory Project ، نباید کاربر اصلی باشد.
Key: PROD_SSH_PRIVATE_KEY
Value:
Type: Variable
Environment scope: All (default)
Protect variable: Checked
Mask variable: Checked
ایجاد کردن .gitlab-ci.yml
رفتن به پروژه Gitlab → ساخت → ویرایشگر خط لوله
variables:
DOCKER_HOST: tcp://docker:2375
SSH_USER:
PRODUCTION_IP:
services:
- docker:dind
stages:
- deploy_production
deploy-prod:
stage: deploy_production
image: alpine:latest
before_script:
- apk add openssh-client openssh
- eval $(ssh-agent -s)
- echo "$PROD_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
script:
- echo -e "This CI job deploys Stage= [$CI_JOB_STAGE], Branch= [$CI_COMMIT_BRANCH], Server IP= [$PRODUCTION_IP]"
- ssh -o StrictHostKeyChecking=no ${SSH_USER}@${PRODUCTION_IP} -p 22 "cd && git pull origin "
- echo -e "\033[0;32mPulled [$CI_COMMIT_BRANCH] \033[0m"
rules:
- if: '$CI_COMMIT_BRANCH == ""'
when: manual
🌟 با ما همراه باشید