دیپلوی پروژه های ReactJs یا VUEJS بر روی سرور ایران با استفاده از Gitlab CI/CD

در پست قبلی من توضیح دادم که گیت لب چیه. این پست ادامه سری پست های دیپلوی روی سرور ایران هست که توضیح میدم چطوری پروژه VUEJS یا REACTJS رو با گیت لب دیپلوی کنیم.

اگر پست قبلی رو نخوندید قویا توصیه میکنم یه نگاهی بهش بندازید:

https://virgool.io/@aminkt/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-gitlab-cicd-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-xdxkvsfwyshh

(اگه دوست داشتید و وقت پیاده سازی رو خودتون نداشتید میتونید به تلگرام من که تو بیو هست پیام بدید که با توافقاتی اوکی کنم براتون)

قسمت دوم:

تو این پست کار زیادی نداریم. اکثر توضیحات رو تو پست زیری دادم:

https://virgool.io/@aminkt/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%BE%D8%B1%D9%88%DA%98%D9%87-vuejs-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-ssh-%D9%88-gitlab-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-deploy-%DA%A9%D9%86%DB%8C%D9%85-f0vr9ancpbhh

تمام کاری که باید بکنید تو این پست توضیح داده شده ولی اینجا کلید اصلی رو بهتون معرفی میکنم.

منظورم از کلید اصلی اینه که چطوری رو سرور ایران خودمون از طریق گیت لب که ما رو تحریم کرده دیپلوی کنیم.


برای این کار فایل .gitlab-ci.yml خودمونو باید یکم تغییر بدیم.

build site:
  image: node:6
  stage: build
  only:
    - master
  script:
    - npm install --progress=false
    - npm run build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

unit test:
  image: node:6
  stage: test
 only:
   - master
  script:
    - npm install --progress=false
    - npm run unit

deploy:
  environment:
    name: production
    url: http://domain.example/
  image: ubuntu
  stage: deploy
  variables:
    PROJECT_ON_SERVER: "/path/to/your/public/folder"
  only:
    - master
  script:
    - apt-get update -yqq
    ##
    ## Install ssh-agent if not already installed, it is required by Docker.
    ## (change apt-get to yum if you use an RPM-based image)
    ##
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

    ## Install resync to create mirror between runner and host.
    - apt-get install -y rsync

    ##
    ## Run ssh-agent (inside the build environment)
    ##
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 700 ~/.ssh/id_rsa
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_rsa
    - ssh-keyscan -H $SERVER >> ~/.ssh/known_hosts
    - rsync -ravzhP --delete -e "ssh [email protected]$SSH_HOST ssh" dist/ [email protected]"$SSH_DEPLOY_HOST":$PROJECT_ON_SERVER

اگر متوجه نشدید این فایل چی هست و چی میکنه لطفا به پست قبلی من که راجب دیپلوی VUEJS هست مراجعه کنید. اونجا کاملا توضیح دادم.

تنها کاری که من اینجا کردم اینه که خط آخر خودمو به چیزی که این زیر نوشتم تغییر دادم:

rsync -ravzhP --delete -e "ssh [email protected]$SSH_HOST ssh" dist/ [email protected]"$SSH_DEPLOY_HOST":$PROJECT_ON_SERVER

این قطعه کد میگه که از همون rsync برای جابجایی فایل ها از سرور گیت لب به سرور من استفاده کن ولی نکته ای که داره اینه که من از یه سرور تو یه جای دگ دنیا به عنوان پراکسی استفاده کردم.

یعنی به جای اینکه اطلاعات مستقیم به سرور ایران فرستاده بشه مثلا اول میره تو کانادا به سرور پراکسی من بعد از کانادا میاد ایران تا تحریم رو دور بزنه.

متغیر هایی که تو کد استفاده شده به صورت Private تعریف شدن که چطوری این کارو بکنید هم تو پست قبلی توضیح دادم. بذارید فقط بگم هر کدوم از این متغیر ها چی داخل خودشون دارند:

SSH_USER : نام کاربری اس اس اچ من تو سرور پراکسی یا همون سرور کانادام

SSH_HOST : آی پی یا آدرس سرور پراکسی

SSH_DEPLOY_USER : نام کاربری اس اس اچ من تو سرور اصلیم که تو ایران هست

SSH_DEPLOY_HOST: آی پی یا آدرس سرور اصلی

PROJECT_ON_SERVER : آدرس پوشه دیپلویم رو سرور اصلی


دم شما گرم.

برای مطالعه بیشتر میتونید به نوشته های دیگه من مراجعه کنید

https://virgool.io/@aminkt/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-gitlab-cicd-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-xdxkvsfwyshh
https://virgool.io/@aminkt/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%BE%D8%B1%D9%88%DA%98%D9%87-vuejs-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-ssh-%D9%88-gitlab-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-deploy-%DA%A9%D9%86%DB%8C%D9%85-f0vr9ancpbhh


(اگه دوست داشتید و وقت پیاده سازی رو خودتون نداشتید میتونید به تلگرام من که تو بیو هست پیام بدید که با توافقاتی اوکی کنم براتون)