GitLab یک پلتفرم ابری بر پایه گیت و برای توسعه نرمافزار و دواپس است که به توسعهدهندهها در زمینه مانیتورینگ، تست و انتشار برنامه کمک میکند. این ابزار همچنین یک ابزار متن-باز تعاملی است که میتواند در پروژههای بزرگ دواپس و DevSecOps به تیمها کمک کند.
گیتلب یک ابزار آنلاین است که علاوه بر امکاناتی مانند ذخیره کد آنلاین و ردیابی اشکالات، امکانات CI/CD، مدیریت فرایندهای دواپس و امکانات امنیتی هم به کاربر ارائه میدهد. استفاده از GitLab به صورت فردی رایگان است، اما برای تیمها و برخی از ویژگیها و امکانات، باید نسخه اشتراکی آن را تهیه کنید.
پیشنیازها
اگر از نسخه ۱۶.۰۴ یا پایینتر Ubuntu استفاده میکنید، توصیه میشود به نسخه جدیدتری ارتقا دهید زیرا Ubuntu دیگر از این نسخهها پشتیبانی نمیکند. این مجموعه راهنماها به شما در ارتقاء نسخه Ubuntu کمک خواهد کرد.
برای دنبال کردن این آموزش، به موارد زیر نیاز دارید:
- یک سرور Ubuntu همراه با یک کاربر غیر روت (non-root) با قابلیت sudo و یک فایروال فعال نیاز است .
- الزامات سختافزاری منتشر شده GitLab توصیه میکند از یک سرور با حداقل موارد زیر استفاده کنید:
- ۴ هسته برای پردازنده
- ۴ گیگابایت رم برای حافظه
مرحله ۱ – نصب Dependencies
قبل از نصب GitLab، نصب نرمافزارهایی که در طول نصب و به طور مداوم از آنها استفاده میشود، مهم است. نرمافزار مورد نیاز را میتوان از مخازن بسته پیشفرض Ubuntu نصب کرد.
ابتدا فهرست بستههای محلی را بهروزرسانی کنید:
sudo apt update
سپس با وارد کردن این دستور، بسته های مورد نیاز را نصب کنید:
sudo apt install ca-certificates curl openssh-server postfix tzdata perl
احتمالاً برخی از این نرمافزارها از قبل نصب شدهاند. برای نصب postfix ، هنگام درخواست، Internet Site را انتخاب کنید. در صفحه بعدی، نام دامنه سرور خود را برای پیکربندی نحوه ارسال ایمیل توسط سیستم وارد کنید.
حالا که وابستگیها نصب شدند، آماده نصب GitLab هستید.
مرحله ۲ – نصب GitLab
با وجود وابستگیها، میتوانید GitLab را نصب کنید. این فرآیند از یک اسکریپت نصب برای پیکربندی سیستم شما با ریپازیتوریهای GitLab استفاده میکند.
ابتدا به دایرکتوری /tmp بروید:
cd /tmp
سپس اسکریپت نصب را دانلود کنید:
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
میتوانید اسکریپت دانلود شده را بررسی کنید تا مطمئن شوید که با اقدامات آن موافق هستید. همچنین میتوانید نسخه میزبانی شده اسکریپت را در دستورالعملهای نصب GitLab پیدا کنید:
less /tmp/script.deb.sh
وقتی مطمئن شدید اسکریپت مشکلی ندارد، با این دستور نصب را شروع کنید
sudo bash /tmp/script.deb.sh
این اسکریپت سرور شما را برای استفاده از ریپازیتوریهای نگهداری شده توسط GitLab تنظیم میکند. این به شما امکان میدهد GitLab را با همان ابزارهای مدیریت بستهای که برای سایر بستههای سیستم خود استفاده میکنید، مدیریت کنید. پس از اتمام این کار، میتوانید برنامه واقعی GitLab را با apt نصب کنید:
sudo apt install gitlab-ce
این کار اجزای لازم را روی سیستم شما نصب میکند و ممکن است مدتی طول بکشد.
مرحله ۳ – تنظیم قوانین فایروال
قبل از پیکربندی GitLab، باید اطمینان حاصل کنید که قوانین فایروال شما به اندازه کافی اجازه ترافیک وب را میدهند. اگر راهنمای لینک شده در پیشنیازها را دنبال کردهاید، فایروال ufw قبلاً فعال شده است.
وضعیت فعلی فایروال فعال خود را با اجرای دستور زیر مشاهده کنید:
sudo ufw status
خروجی:
Status: activeTo Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
قوانین فعلی عبور ترافیک SSH مجاز میکنند، اما دسترسی به سایر سرویسها محدود است. از آنجایی که GitLab یک بنرم افزار مبتنی بر وب است، باید دسترسی HTTP را مجاز کنید. زیرا از قابلیت GitLab برای درخواست و فعال کردن گواهینامه رایگان TLS/SSL از Let’s Encrypt استفاده خواهید کرد، همچنین دسترسی HTTPS را نیز مجاز کنید.
نقشه برداری پروتکل به پورت برای HTTP و HTTPS در فایل /etc/services موجود است، بنابراین میتوانید با نام آن ترافیک را مجاز کنید. اگر ترافیک OpenSSH را از قبل فعال نکرده بودید، باید آن ترافیک را نیز مجاز کنید:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
برای اطمینان از اینکه حداقل به این دو سرویس دسترسی دادهاید، میتوانید دوباره وضعیت ufw را بررسی کنید:
sudo ufw status
خروجی :
Status: activeTo Action From -- ------ ---- OpenSSH ALLOW Anywhere ۸۰/tcp ALLOW Anywhere ۴۴۳/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) ۸۰/tcp (v6) ALLOW Anywhere (v6) ۴۴۳/tcp (v6) ALLOW Anywhere (v6)
مرحله ۴ – ویرایش فایل پیکربندی GitLab
قبل از اینکه بتوانید از برنامه استفاده کنید، فایل پیکربندی را بهروزرسانی کرده و دستور بازپیکربندی را اجرا کنید. ابتدا فایل پیکربندی GitLab را با ویرایشگر متن دلخواه خود باز کنید. این مثال از nano استفاده میکند:
sudo nano /etc/gitlab/gitlab.rb
به دنبال خط پیکربندی external_url بگردید. آن را مطابق با دامنه خود به روز کنید و مطمئن شوید که http را به https تغییر دهید تا کاربران به صورت خودکار به سایتی که با گواهینامه Let’s Encrypt محافظت میشود، هدایت شوند:
در مسیر etc/gitlab/gitlab.rb/ ...
## GitLab URL ##! URL on which GitLab will be reachable. ##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab ##! ##! Note: During installation/upgrades, the value of the environment variable ##! EXTERNAL_URL will be used to populate/replace this value. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP ##! address from AWS. For more details, see: ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html external_url 'https://your_domain' ...
سپس، تنظیم letsencrypt[‘contact_emails’] را پیدا کنید. اگر از nano استفاده میکنید، میتوانید با فشار دادن CTRL+W یک کادر جستجو را فعال کنید. letsencrypt[‘contact_emails’] را در کادر جستجو تایپ کرده و سپس ENTER را فشار دهید. این تنظیم لیستی از آدرسهای ایمیل را تعریف میکند که پروژه Let’s Encrypt در صورت بروز مشکل با دامنه شما میتواند با آنها تماس بگیرد. توصیه میشود این مورد را با خارج کردن از حالت کامنت و پر کردن آن، خود را از هر مشکلی که ممکن است رخ دهد، مطلع کنید:
در مسیر etc/gitlab/gitlab.rb/
letsencrypt['contact_emails'] = ['sammy@example.com']
...
پس از اینکه تغییرات را انجام دادید، فایل را ذخیره و ببندید. اگر از nano استفاده میکنید، میتوانید این کار را با فشار دادن CTRL+X، سپس Y و سپس ENTER انجام دهید.
دستور زیر را برای بازپیکربندی GitLab اجرا کنید:
sudo gitlab-ctl reconfigure
این کار GitLab را با استفاده از اطلاعاتی که در مورد سرور شما پیدا میکند، راهاندازی میکند. این یک فرآیند کاملاً خودکار است، بنابراین نیازی به پاسخگویی به هیچ گونه سؤالی ندارید. این فرآیند همچنین یک گواهینامه Let’s Encrypt را برای دامنه شما پیکربندی میکند.
مرحله ۵ – انجام پیکربندی اولیه از طریق رابط کاربری
با اجرای GitLab، میتوانید پیکربندی اولیه برنامه را از طریق رابط کاربری انجام دهید.
ورود برای اولین بار
نام دامنه سرور GitLab خود را در مرورگر وب خود وارد کنید:
https://your_domain
در اولین بازدید، با یک صفحه ورود مواجه خواهید شد:
GitLab برای شما یک رمز عبور اولیه امن ایجاد میکند. این رمز در پوشهای ذخیره میشود که میتوانید به عنوان کاربر اداری sudo به آن دسترسی داشته باشید:
sudo nano /etc/gitlab/initial_root_password
محتوای فایل etc/gitlab/initial_root_password/ به این صورت میباشد:
# WARNING: This value is valid only in the following conditions #۱. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$ #۲. Password hasn't been changed manually, either via UI or via command line. # #If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. Password: YOUR_PASSWORD # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
بازگشت به صفحه ورود:
دوباره به صفحه ورود GitLab بروید و موارد زیر را وارد کنید:
نام کاربری: root
رمز عبور: [رمز عبوری که در فایل etc/gitlab/initial_root_password/ نمایش داده شده است]
این مقادیر را در فیلدها وارد کنید و روی دکمه “Sign in” کلیک کنید. شما به برنامه وارد میشوید و به صفحهای هدایت میشوید که از شما میخواهد شروع به افزودن پروژهها کنید.
بهروزرسانی رمز عبور
یکی از اولین کارهایی که باید پس از ورود انجام دهید، تغییر رمز عبور است. برای انجام این تغییر، روی آیکون در گوشه سمت راست بالای نوار ناوبری کلیک کنید و “Edit Profile” را انتخاب کنید:
سپس وارد صفحه تنظیمات کاربر میشوید. در نوار ناوبری سمت چپ، “رمز عبور” را انتخاب کنید تا رمز عبور تولید شده توسط GitLab را به یک رمز عبور امن تغییر دهید، سپس پس از پایان بهروزرسانیها روی دکمه “ذخیره رمز عبور” کلیک کنید:
سپس به صفحه ورود بازگردانده میشوید و یک اعلان مبنی بر تغییر رمز عبور شما نمایش داده میشود. رمز عبور جدید خود را وارد کنید تا دوباره وارد نمونه GitLab خود شوید:
تنظیمات پروفایل خود را تغییر دهید
GitLab برخی مقادیر پیش فرض معقول را انتخاب می کند، اما این موارد معمولاً پس از شروع استفاده از نرم افزار مناسب نیستند.
برای انجام تغییرات لازم، روی نماد کاربر در گوشه بالا سمت راست نوار ناوبری کلیک کنید و “Edit Profile” را انتخاب کنید.
میتوانید مقادیر پیش فرض «نام» و «آدرس ایمیل» را از «مدیر» و [email address removed]» به موارد دقیقتر تغییر دهید. نامی که انتخاب میکنید برای کاربران دیگر نمایش داده میشود، در حالی که ایمیل برای تشخیص پیش فرض آواتار، اعلانها، اقدامات Git از طریق رابط و موارد دیگر استفاده میشود:
پس از اتمام بهروزرسانیها، روی دکمه “Update Profile settings” در پایین کلیک کنید. از شما خواسته می شود رمز عبور خود را برای تأیید تغییرات وارد کنید.
یک ایمیل تأیید به آدرسی که ارائه کرده اید ارسال می شود. دستورالعمل های موجود در ایمیل را برای تأیید حساب کاربری خود دنبال کنید تا بتوانید از آن با GitLab استفاده کنید.
تغییر نام حساب کاربری خود
سپس، “Account ” را در نوار ناوبری سمت چپ انتخاب کنید:
در اینجا، میتوانید احراز هویت دو عاملی را فعال کرده و نام کاربری خود را تغییر دهید. به طور پیشفرض، اولین حساب کاربری اداری نام root را دریافت میکند. از آنجایی که این یک نام حساب کاربری شناخته شده است، تغییر آن به یک نام متفاوت امنتر است. شما همچنان دارای امتیازات اداری خواهید بود؛ تنها چیزی که تغییر خواهد کرد نام است. root را با نام کاربری دلخواه خود جایگزین کنید:
روی دکمه “Update username” کلیک کنید تا تغییر اعمال شود. پس از آن از شما خواسته میشود تغییر را تأیید کنید.
بار بعدی که وارد GitLab میشوید، به یاد داشته باشید که از نام کاربری جدید خود استفاده کنید.
افزودن کلید SSH به حساب خود
میتوانید کلیدهای SSH را با Git برای تعامل با پروژههای GitLab خود فعال کنید. برای انجام این کار، باید کلید عمومی SSH خود را به حساب GitLab خود اضافه کنید.
در نوار ناوبری سمت چپ، “کلیدهای SSH” را انتخاب کنید:
میتوانید کلید عمومی SSH خود را در اینجا وارد کنید.
اگر قبلاً یک جفت کلید SSH روی رایانه محلی خود ایجاد کردهاید، میتوانید کلید عمومی را با تایپ کردن دستور زیر مشاهده کنید:
cat ~/.ssh/id_rsa.pub
خروجی بدین صورت می باشد >>
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این متن را کپی کنید و آن را در قسمت “Key” داخل رابط کاربری GitLab خود جایگذاری کنید.
اگر پیام دیگری دریافت کردید، به این معنی است که هنوز یک جفت کلید SSH روی دستگاه شما پیکربندی نشده است
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
در صورت نیاز، میتوانید با وارد کردن دستور زیر یک جفت کلید SSH ایجاد کنید:
[environment local]
ssh-keygen
پیش فرضها را اکسپت کنید و در صورت تمایل برای ایمنسازی کلید به صورت محلی، یک گذرواژه (رمز عبور) ارائه دهید:
[environment local]
Generating public/private rsa key pair
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
| ..%o==B|
| *.E =.|
| . ++= B |
| ooo.o . |
| . S .o . .|
| . + .. . o|
| + .o.o ..|
| o .++o . |
| oo=+ |
+----[SHA256]-----+
بعد از ایجاد کلید عمومی، میتوانید آن را با استفاده از دستور زیر نمایش دهید:
cat ~/.ssh/id_rsa.pub
این متن خروجی را کپی کرده و در قسمت “(Key)” داخل رابط کاربری GitLab خود وارد کنید. برای آن یک عنوان توضیحی انتخاب کنید و روی دکمه ” Add key ” کلیک کنید.
حالا میتوانید پروژهها و ریپازیتوریهای GitLab خود را از کامپیوتر محلی خود بدون نیاز به وارد کردن اطلاعات حساب کاربری GitLab خود مدیریت کنید.
مرحله ۶ – محدود کردن یا غیرفعال کردن ثبت نام عمومی
با تنظیمات فعلی شما، هر کسی میتواند با مراجعه به صفحه لندینگ GitLab شما برای یک حساب ثبت نام کند.
برای شروع، با کلیک روی منوی همبرگر در نوار ناوبری بالا به ناحیه مدیریت بروید و “Admin” را از منوی کشویی انتخاب کنید:
“Setting” را از نوار ناوبری سمت چپ انتخاب کنید:
شما به تنظیمات عمومی برای نمونه GitLab خود منتقل خواهید شد. در اینجا میتوانید تعدادی از تنظیمات را تنظیم کنید که بر اینکه آیا کاربران جدید میتوانند ثبت نام کنند و سطح دسترسی آنها تأثیر میگذارد.
غیرفعال کردن ثبت نام
اگر میخواهید ثبت نام را به طور کامل غیرفعال کنید، به بخش “محدودیتهای ثبت نام” بروید و برای مشاهده گزینهها روی “گسترش” کلیک کنید.
سپس کادر انتخاب “ثبت نام فعال” را بردارید:
فراموش نکنید که پس از انجام تغییرات خود روی دکمه “Save changes” کلیک کنید.
بخش ثبت نام اکنون از صفحه فرود GitLab حذف شده است.
محدود کردن ثبت نام بر اساس دامنه
اگر از GitLab به عنوان بخشی از سازمانی استفاده میکنید که آدرسهای ایمیل مرتبط با یک دامنه را ارائه میدهد، میتوانید ثبت نام را بر اساس دامنه محدود کنید تا اینکه آن را به طور کامل غیرفعال کنید.
در بخش “محدودیتهای ثبت نام”، کادر “ارسال ایمیل تأییدیه هنگام ثبت نام” را انتخاب کنید که به کاربران اجازه میدهد فقط پس از تأیید ایمیل خود وارد سیستم شوند.
سپس دامنه یا دامنههای خود را به کادر “دامنههای سفید برای ثبت نام” اضافه کنید، هر دامنه در یک خط. میتوانید از ستاره “*” برای مشخص کردن دامنههای wildcard استفاده کنید:
پس از اتمام، روی دکمه “Save changes” کلیک کنید.
بخش ثبت نام اکنون از صفحه فرود GitLab حذف شده است.
محدود کردن ایجاد پروژه
به طور پیش فرض، کاربران جدید میتوانند حداکثر ۱۰ پروژه ایجاد کنند. اگر میخواهید به کاربران جدید از خارج برای دیدهشدن و مشارکت اجازه دهید، اما میخواهید دسترسی آنها را به ایجاد پروژههای جدید محدود کنید، میتوانید این کار را در بخش “تنظیمات حساب و محدودیت” انجام دهید.
در داخل، میتوانید “محدودیت پروژههای پیش فرض” را به ۰ تغییر دهید تا کاملاً ایجاد پروژههای جدید توسط کاربران جدید را غیرفعال کنید:
کاربران جدید همچنان میتوانند به صورت دستی به پروژهها اضافه شوند و به پروژههای داخلی یا عمومی ایجاد شده توسط کاربران دیگر دسترسی داشته باشند.
پس از بهروزرسانیهای خود، فراموش نکنید که روی دکمه “Save changes” کلیک کنید.
کاربران جدید اکنون میتوانند حساب ایجاد کنند، اما قادر به ایجاد پروژه نخواهند بود.
تجدید گواهینامههای Let’s Encrypt
به طور پیش فرض، GitLab یک کار زمانبندی شده برای تجدید گواهینامههای Let’s Encrypt پس از نیمهشب هر چهار روز تنظیم شده است، با دقیقه دقیق بر اساس external_url شما. میتوانید این تنظیمات را در فایل etc/gitlab/gitlab.rb/ تغییر دهید.
به عنوان مثال، اگر میخواستید هر ۷ روز یک بار ساعت ۱۲:۳۰ تجدید کنید، میتوانید آن را پیکربندی کنید. ابتدا به فایل پیکربندی بروید:
sudo nano /etc/gitlab/gitlab.rb
سپس، خطوط زیر را در فایل پیدا کرده و علامت # را حذف کنید و با موارد زیر بهروزرسانی کنید (در مسیر etc/gitlab/gitlab.rb/ هستید)
...################################################################################ # Let's Encrypt integration ################################################################################ # letsencrypt['enable'] = nil letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts # letsencrypt['group'] = 'root' # letsencrypt['key_size'] = 2048 # letsencrypt['owner'] = 'root' # letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www' # See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings letsencrypt['auto_renew'] = true letsencrypt['auto_renew_hour'] = "12" letsencrypt['auto_renew_minute'] = "30" letsencrypt['auto_renew_day_of_month'] = "*/7" ...
میتوانید تجدید خودکار را با تنظیم letsencrypt[‘auto_renew’] به false غیرفعال کنید:
در مسیر etc/gitlab/gitlab.rb/
...
letsencrypt['auto_renew'] = false
...
با فعال بودن تجدید خودکار، نیازی به نگرانی در مورد قطع سرویس ندارید.
نتیجهگیری
اکنون یک نمونه GitLab فعال روی سرور خود دارید. میتوانید شروع به وارد کردن یا ایجاد پروژههای جدید و پیکربندی سطح دسترسی مناسب برای یک تیم کنید. GitLab به طور مرتب ویژگیها را اضافه میکند و بهروزرسانیهایی را در پلتفرم خود انجام میدهد، بنابراین برای اطلاع از هرگونه پیشرفت یا اطلاعیه مهم، صفحه اصلی پروژه را بررسی کنید.
دانشجوی مهندسی نرم افزار و علاقه مند به دواپس 🙂