توی این مقاله قصد دارم که شما رو با سناریو هایی در حول محور Continues integration و Continues Deployment & Delivery آشنا کنم و سعی کنیم که این موارد رو با گیت لب روی سرور خودمون پیاده سازی کنیم.
برای شروع باید موارد زیر رو آماده داشته باشید:
اگر سرور ندارید! و میخواید از روش های Pay as you go استفاده کنید(بدین معنی که هرچقدر منابع مصرف کردید پول بدید) میتونید از زیرساخت های آروان کلاد کمک بگیرید که خیلی قدرتمند عمل کردن(از روی تجربه ای که باهاشون داشتم میگم)
هدف نهایی:
دیپلوی شدن پروژه Reactjs بر حسب نوع کامیت ها و برنچ ها روی یک ساب دامنه اختصاصی و اجراء تمامی تست ها بعد از کامیت روی هر برنچ. بدین معنی که اگر روی برنچ feature/test کامیت کردین٬ سیستم بیاد اتوماتیک تست ها رو اجراءکنه و در صورت pass شدن همه تست ها٬ در انتها بیاد سیستم رو دیپلوی کنه و روی ادرس زیر بالا بیاره
https://test.feat.domain.ir
یا مثال های دیگه ای از این قبیل:
Branch name: hotfix/test
URL: https://test.fix.domain.ir
Branch name: develop
URL: https://stg.domain.ir
Branch name: master
URL: https://prod.domain.ir
تکنولوژی هایی که میخوایم باهاشون کار کنیم:
مراحل در پیش رو:
۱. در ابتدا باینری فایلش رو میتونید از اینجا طبق مشخصات سیستم عامل ubuntu خودتون دانلود کنید:
# Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Linux x86 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386 # Linux arm sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm # Linux arm64 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64
۲. دسترسی های لازم رو بهش بدیم
sudo chmod +x /usr/local/bin/gitlab-runner
۳. یک یوزر اختصاصی براش بسازیم
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
۳. سرویسش رو اجراء کنیم
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start
بدین منظور به صفحه اصلی پروژتون برید و به settings > CI / CD settings > Runner مراجعه کنید.
توی این صفحه اگر روی تب Runners کلیک کنید دوتا باکس میبینید به عناوین:
که باید روی دکمه Disable shared runners کلیک کنید و غیرفعال کنید این ویژگی رو(خودم به باگی روی همین یه تیکه کوچیک خورده بودم که سه روز از وقتم رو درگیرش بودم تا فهمیدم مشکل shared runner ها هستن که باید غیرفعال میشدن).
ما از ویژگی Specific runners استفاده خواهیم کرد طبق تصویر زیر
حالا برگردید به سرور خودتون و کامند زیر رو اجراء کنید توی ترمینال:
sudo gitlab-runner register
بعد از اجراء کردن دستور بالا٬ ازتون میخواد که آدرس گیت لبتون رو وارد کنید که مقدار زیر رو وارد کنید:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.com/
Please enter the gitlab-ci token for this runner:
در مرحله بعد ازتون توکن میخواد. توکن توی صفحه specific runners هستش که توی عکس بالا من هایلایتش کردم چون برای هر ریپازیتوری فرق میکنه این توکن. مقدارش رو کپی کنید و توی ترمینالتون وارد کنید.
Please enter the gitlab-ci description for this runner:
توی مرحله بعدی ازتون میخواد که یک توضیحی حتی کوتاه درباره این runner بنویسید
Please enter the gitlab-ci tags for this runner (comma separated):
مرحله بعدش میگه یکسری تگ که با comma جدا شدن برای دسته بندی بنویس که نمیخواد چیزی بنویسید و Enter رو بزنید و برید به مرحله بعد.
Please enter the executor: custom, docker-ssh, shell, docker+machine, docker-ssh+machine, docker, parallels, ssh, virtualbox, kubernetes:
توی این مرحله میگه میخواین executor این runner چی باشه که پیشنهاد میکنم shell رو بنویسید براش و Enter رو بزنید.
تمام. با موفقیت runner شما رجیستر شد و به اکانت گیت لب شما وصل شد.
برای نصب این دو مورد هم مراحل زیر رو طی کنید:
۱. بروزرسانی دیتابیس پکیج های نصب شده
sudo apt update
۲. نصب پکیج های پیش نیاز apt برای نصب پکیج های روی بستر https
sudo apt install apt-transport-https ca-certificates curl software-properties-common
۳. نصب کلید GPG برای docker official
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
۴. اضافه کردن ریپازیتوری داکر به منابع apt
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
۵. بروز رسانی کردن دیتابیس پکیج های همراه با ریپازیتوری داکر که اضافش کردیم
sudo apt update
اطمینال از این که میخوایم داکر رو از روی ریپازیتوری خودش نصب کنیم نه ریپازیتوری پیش فرض اوبونتو
apt-cache policy docker-ce
نتیجه اجراء کامند بالا
docker-ce: Installed: (none) Candidate: 18.03.1~ce~3-0~ubuntu Version table: 18.03.1~ce~3-0~ubuntu 500 500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
تا اینجا ما هنوز Docker-ce رو نصب نکردیم بلکه اون رو یه کاندید برای نصب میدونیم
۶. در نهایت نصب خود داکر
sudo apt install docker-ce
۷. بعد از اجراء کامند بالا دستور زیر رو وارد کنید که از صحت سلامت اجراء داکر مطمئن بشید.
sudo systemctl status docker
نتیجه دستور بالا باید همچین چیزی باشه:
docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 10096 (dockerd) Tasks: 16 CGroup: /system.slice/docker.service ├─10096 /usr/bin/dockerd -H fd:// └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml
برای نصب Nodejs مراحل زیر رو طی کنید
۱. بروزرسانی دیتابیس پکیج های نصب شده
sudo apt update
۲. نصب Nodejs و npm
sudo apt install nodejs npm
۳. اطمینان از نصب nodejs و npm
nodejs -v npm -v
مابقی مراحل رو هم در پست بعدی براتون کامل شرح میدم.