برنامه نویسی

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
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🌟 با ما همراه باشید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا