دیپلوی پروژه های 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 $SSH_USER@$SSH_HOST ssh" dist/ $SSH_DEPLOY_USER@"$SSH_DEPLOY_HOST":$PROJECT_ON_SERVERاگر متوجه نشدید این فایل چی هست و چی میکنه لطفا به پست قبلی من که راجب دیپلوی VUEJS هست مراجعه کنید. اونجا کاملا توضیح دادم.تنها کاری که من اینجا کردم اینه که خط آخر خودمو به چیزی که این زیر نوشتم تغییر دادم:rsync -ravzhP --delete -e "ssh $SSH_USER@$SSH_HOST ssh" dist/ $SSH_DEPLOY_USER@"$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 (اگه دوست داشتید و وقت پیاده سازی رو خودتون نداشتید میتونید به تلگرام من که تو بیو هست پیام بدید که با توافقاتی اوکی کنم براتون)