Руководство по ci/cd в gitlab для (почти) абсолютного новичка

Содержание:

Краткое введение

Что такое CI/CD и зачем нужно — можно легко нагуглить. Полноценную документацию по настройке пайплайнов в GitLab найти также несложно. Здесь я кратко и по возможности без огрехов опишу процесс работы системы с высоты птичьего полёта:

  • разработчик отпраляет коммит в репозиторий, создаёт merge request через сайт, или ещё каким-либо образом явно или неявно запускает пайплайн,
  • из конфигурации выбираются все задачи, условия которых позволяют их запустить в данном контексте,
  • задачи организуются в соответствии со своими этапами,
  • этапы по очереди выполняются — т.е. параллельно выполняются все задачи этого этапа,
  • если этап завершается неудачей (т.е. завершается неудачей хотя бы одна из задач этапа) — пайплайн останавливается (почти всегда),
  • если все этапы завершены успешно, пайплайн считается успешно прошедшим.

Таким образом, имеем:

  • пайплайн — набор задач, организованных в этапы, в котором можно собрать, протестировать, упаковать код, развернуть готовую сборку в облачный сервис, и пр.,
  • этап (stage) — единица организации пайплайна, содержит 1+ задачу,
  • задача (job) — единица работы в пайплайне. Состоит из скрипта (обязательно), условий запуска, настроек публикации/кеширования артефактов и много другого.

Соответственно, задача при настройке CI/CD сводится к тому, чтобы создать набор задач, реализующих все необходимые действия для сборки, тестирования и публикации кода и артефактов.

Настройка GitLab с помощью веб-интерфейса

На экране появится приветственная страница, которая предложит выбрать пароль администратора.

Выберите и подтвердите надёжный пароль и нажмите Change your password.

После этого появится форма аутентификации. Введите свои учётные данные:

  • Username: root
  • Password: вы выбрали его только что

Нажмите Sign in. На экране появится посадочная страница, которая предложит вам добавить новые проекты.

Теперь можно внести поправки в настройки GitLab.

Настройка профиля

Добавьте новые данные в свой профиль. При установке GitLab заполняет профиль данными по умолчанию, которые рекомендуется изменить.

Чтобы отредактировать профиль, кликните на иконку пользователя в правом верхнем углу интерфейса. В выпадающем меню выберите Profile Settings. Вы попадёте в раздел настроек Profile, где вы сможете выбрать новую аватарку, указать имя, адрес электронной почты и т.п.

Замените их своими данными. Выбранное вами имя будут видеть другие пользователи, а электронная почта будет использоваться уведомлений, извещений интерфейса Git и т.д.

На предоставленный адрес электронной почты вы получите письмо с подтверждением. Следуйте инструкциям письма, чтобы подтвердить свой аккаунт и начать работу в GitLab.

Изменение имени пользователя

В верхнем меню выберите Account.

Здесь вы найдете закрытый токен API. Также здесь можно настроить двухфакторную аутентификацию и изменить имя пользователя, которое вы указываете при входе в аккаунт. Для этого выберите раздел Change username.

По умолчанию аккаунт администратора использует имя root. Очевидно, что такое имя очень часто используется, а потому оно небезопасно и его нужно сразу изменить.

Примечание: Конечно, после изменения имени у вас останутся все права.

Выберите уникальное имя и нажмите кнопку Update username.

Теперь при входе в аккаунт GitLab используйте это имя пользователя вместо root

Добавление SSH-ключа

В большинстве случаев для взаимодействия между Git и GitLab используются SSH-ключи. Добавьте открытый ключ SSH в аккаунт GitLab.

Если у вас уже есть пара ключей SSH на локальной машине, вы можете просмотреть их:

Команда вернёт объемный результат:

Скопируйте этот ключ и вернитесь в настройки профиля.

Если же команда cat вернула следующее сообщение:

у вас нет SSH-ключей. Чтобы создать такую пару ключей, введите:

Примите стандартные параметры и выберите надёжный пароль, который защитит ключи.

Просмотрите открытый ключ:

Скопируйте ключ и вернитесь в настройки профиля GitLab. Откройте меню SSH Keys.

В предложенное поле введите скопированный открытый ключ, выберите для него описательное название и нажмите Add key.

Теперь вы можете управлять проектами и репозиториями GitLab с локальной машины, не предоставляя при этом учётных данных GitLab.

Настройка GitLab в Ubuntu

1. Авторизация

Дальше вы можете войти в веб-интерфейс. Для этого откройте в браузере выбранный домен: http://gitlab.local

На первом шаге вам нужно ввести пароль для суперпользователя.

Далее надо авторизоваться в системе. Для этого введите логин root и ранее выбранный пароль, затем нажмите Sign in.

2. Настройка аккаунта

Затем настроим имя вашего пользователя. По умолчанию используется Administrator. Откройте меню Settings и найдите там пункт Full Name и укажите там желаемое имя:

Затем нажмите кнопку Update profile settings.

3. Настройка SSH-ключа

Для того чтобы вы могли без ввода логина и пароля отправлять данные в этот репозиторий, нужно прописать сюда ваш публичный ключ. Для этого сначала создайте соответствующий ключ для GitLab командой:

Если в вашей системе уже есть другие ssh-ключи, то вы можете изменить имя создаваемого ключа. Для этого, когда программа спросит путь, куда нужно сохранить ключ, введите старый путь и новое имя:

Ключ будет находится в файле с расширением *.pub. Если вы выбрали имя файла gitlab_rsa, то публичный ключ будет находится в файле gitlab_rsa.pub. Скопируйте этот ключ. Затем откройте в левом меню веб-интерфейса GitLab пункт SSH Keys, вставьте ключ в поле Key и нажмите Add key:

После этого ключ будет добавлен и вы сможете пользоваться репозиторием. Однако надо заметить, что с пользователем root на локальной машине такая операция не пройдёт, также ничего не будет работать, если вы попытаетесь использовать того же пользователя, от имени которого вы авторизованы в системе.

4. Отключение регистрации

Кликните по значку ключа на верхней панели, а затем в левом меню выберите Settings. Здесь найдите пункт Sign-up restrictions и снимите галочку с пункта sign-up enabled:

Затем сохраните настройки.

5. Создание проекта

Кликните по кнопке со значком Плюс, затем выберите New Project:

В открывшемся окне введите имя проекта, например testproject, и нажмите кнопку Create Project:

Затем откройте терминал и клонируйте полученный репозиторий:

Далее добавьте файл README.md:

И отправьте изменения на сервер:

Теперь в интерфейсе программы вы увидите только что созданный коммит и новый файл:

zypper

Create a file named that contains the repository configuration below.

Make sure to replace el and 6 in the config below with your :


name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/opensuse/13.2/$basearch
enabled=1
repo_gpgcheck=1
pkg_gpgcheck=0
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
autorefresh=1
type=rpm-md


name=gitlab_gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/opensuse/13.2/SRPMS
enabled=1
repo_gpgcheck=1
pkg_gpgcheck=0
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
autorefresh=1
type=rpm-md

Valid options for os and dist parameters can be found .

Update your local zypper cache by running

zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce
zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce-source

Настройка Gitlab CI Runner

Затем нужно настроить GitLab CI runner для обработки непрерывной интеграции.

Для аутентификации GitLab CI runner на сервере GitLab необходим токен. Тип токена зависит от целей сервиса runner.

Отдельный runner-сервер, предназначенный для одного проекта, используется в тех ситуациях, когда у проекта есть индивидуальные требования к runner-серверу. К примеру, если в файле gitlab-ci.yml есть учетные данные, для аутентификации используется индивидуальный runner-сервер проекта, который не будет принимать соединений от других проектов.

Разделяемый runner-сервер используется для обслуживания нескольких проектов. Он будет принимать задачи всех проектов согласно алгоритму, который учитывает количество задач, выполняемых в настоящее время для каждого проекта. Этот тип runner-серверов более гибкий. Для его настройки нужно войти в учетную запись администратора GitLab.

Далее вы узнаете, как использовать токен для настройки каждого типа runner-сервера.

Сбор данных для настройки индивидуального runner-сервера

Если вы хотите, чтобы runner-сервер был привязан к определенному проекту, откройте страницу проекта в интерфейсе GitLab.

Нажмите Settings в верхней панели навигации и кликните CI/CD Pipelines.

Вы увидите раздел Specific Runners, в котором будут инструкции по настройке индивидуального runner-сервера проекта. Следуйте инструкциям, в шаге 3 скопируйте токен.

Чтобы отключить все разделяемые runner-серверы для этого проекта, нажмите кнопку Disable shared Runners справа. Это опционально.

Пропустите следующий раздел и переходите к регистрации runner-сервера.

Шаг 3 — Настройка правил брандмауэра

Прежде чем настраивать GitLab, убедитесь, что правила брандмауэра разрешают веб-трафик. Если вы следовали указаниям, ссылки на которые приведены в предварительных требованиях, у вас будет активирован брандмауэр .

Просмотрите текущий статус активного брандмауэра, введя следующее:

Как видите, текущие правила разрешают трафик SSH, однако доступ к другим службам ограничен. Поскольку GitLab представляет собой веб-приложение, мы должны разрешить доступ HTTP. Поскольку мы будем использовать возможность GitLab запрашивать и активировать бесплатный сертификат TLS/SSL от Let’s Encrypt, необходимо также разрешить доступ HTTPS.

Протокол сопоставления портов HTTP и HTTPS доступен в файле , и мы можем разрешить этот входящий трафик по имени. Если у вас еще не разрешен трафик OpenSSH, вы также должны разрешить этот трафик:

Проверьте статус еще раз; на настоящий момент должен быть настроен доступ как минимум к следующим двум службам:

Вышеуказанные результаты показывают, что веб-интерфейс GitLab будет доступен, как только мы настроим это приложение.

Установка GitLab

Установку выполним в два шага — установка необходимых компонентов и, собственно, установка GitLab.

1. Необходимые компоненты

apt-get install curl openssh-server ca-certificates

Для отправки уведомлений, установим также postfix:

apt-get install postfix

* при получении запросов во время установки postfix отвечаем по умолчанию, нажимая Enter.

2. Установка GitLab

Установим репозиторий.

а) для платной версии:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

После установки репозитория, устанавливаем сам GitLab.

а) платную версию:

apt-get install gitlab-ee

б) бесплатную:

apt-get install gitlab-ce

Если установка прошла успешно, мы должны увидеть:

It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.
  
     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Thank you for installing GitLab!

Улучшенная ревизия событий (EES, EEP)

Ревизия событий в GitLab Enterprise Edition помогает усилить контроль и улучшить отчетность. В GitLab Enterprise Edition Starter (EES) вы можете просматривать ревизию событий в каждом проекте или группе. GitLab Enterprise Edition Premium (EEP) включает централизованный лог, в котором все события проекта сосредоточены в одном месте.

GitLab 10.2 EES и EEP теперь включают дополнительные события для действий над проектами или группами. Например:

  • Создание проекта или группы
  • Удаление проекта или группы
  • Перемещение, переименование или назначение нового владельца для проекта
  • Изменение видимости группы
  • Добавление пользователя в группу (с отображением прав доступа пользователя)
  • Изменение прав доступа пользователя
  • Добавление проекта в группу или удаление его из группы

В GitLab EEP данные ревизии удаленного проекта или группы теперь сохраняются на сервере в общем логе и доступны администратору. Также теперь включается IP адрес пользователя, совершающего действие.

Installation of GitLab on Ubuntu

The GitLab can be installed on Ubuntu system by using Omnibus package which provides different services to run GitLab. The Omnibus package provides necessary components of GitLab, establishes the configurations and project metadata which can be used in user’s system.

The following steps describe installation of GitLab on Ubuntu −

Step 1 − First, login to your GitLab server using SSH (Secure Shell).

Step 2 − Next, download the Omnibus package −

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab-ce_7.10.4~omnibus-1_amd64.deb

Step 3 − Install the postfix −

sudo apt-get install postfix

Step 4 − While installing Postfix, it will ask type of installation; then select the Internet Site option. Next, it will show Postfix configuration along with the system mail name as shown in the image −

Step 5 − Install the dpkg (package manager for debian system) for managing the installed packages −

sudo dpkg -i gitlab-ce_7.10.4~omnibus-1_amd64.deb

Step 6 − To have the changes take effect, you need to reconfigure the GitLab by using the below command −

sudo gitlab-ctl reconfigure

Step 7 − Check the status of the GitLab services by using below command −

sudo gitlab-ctl status

If you want to install GitLab from the source, then install some dependencies on the server and need to setup the database by using the PostgreSQL. It is described in the Environment setup chapter. You can install the coordinator to build a web interface and control build instances. For more information, you can check the Installation of Coordinator chapter.

Previous Page
Print Page

Next Page  

Исходная позиция: что имеется и чего хочется

Имеем:

Хотим:

  • автоматическую сборку и тестирование для каждого merge request,
  • сборку пакетов для каждого merge request и пуша в мастер при условии наличия в сообщении коммита определённой строки,
  • отправку собранных пакетов в приватный фид в Azure DevOps,
  • сборку документации и публикацию в GitLab Pages,
  • бейджики!11

Описанные требования органично ложатся на следующую модель пайплайна:

  • Этап 1 — сборка
  • Этап 2 — тестирование
  • Этап 3 — отправка
    • Задача 1 — собираем nuget-пакет и отправляем в Azure DevOps
    • Задача 2 — собираем сайт из xmldoc в исходном коде и публикуем в GitLab Pages

Приступим!

Установка GitLab в Ubuntu 18.04

У GitLab есть несколько версий. Кроме онлайн версии, в которую вы можете выгружать свои проекты, доступной на веб-сайте GitLab.com, есть версия Community Edition и платная версия Enterprice Edition, которые можно установить на свой компьютер и создать собственный Git-сервер. В этой инструкции мы рассмотрим, как установить GitLab Ubuntu 18.04 версии Community Edition. Для этого будем использовать официальный репозиторий.

Сначала обновите репозитории до самой последний версии:

1. Установка репозитория

Затем нужно загрузить установщик репозитори из официального сайта. Этот скрипт загрузит и установит все ключи и инструменты необходимые, чтобы подключить репозиторий Gitlab в систему. Для его загрузки и запуска выполните команду:

2. Установка пакета программы

После завершения вы можете установить gitlab-ce командой:

Когда установка GitLab Ubuntu 18.04 будет завершена, вы увидите такое сообщение:

3. Развёртывание GitLab

Теперь нам необходимо подготовить программу к работе. Сначала нужно настроить URL, по которой будет открываться интерфейс GitLab. Для этого откройте файл /etc/gitlab/gitlab.rb и найдите там строчку external_url. Здесь нужно указать ваш домен. На своём локальном компьютере я буду использовать домен gitlab.local:

Сохраните и закройте файл. После этого надо пересобрать программу, учитывая изменённую конфигурацию:

Если на вашем сервере включён брандмауэр, необходимо добавить в исключения порты для протоколов http и ssh:

Чтобы наш локальный домен работал, необходимо добавить запись о нём в файл /etc/hosts:

4. Развёртывание программы с установленным Apache

Если на вашем компьютере уже установлен веб-сервер Apache, вы можете настроить программу таким образом, чтобы она работала через существующий веб-сервер. Для этого измените такие строки в /etc/gitlab/gitlab.rb:

Затем пересоберите программу:

В Apache надо добавить новый виртуальный хост с такой конфигурацией:

<VirtualHost *:80>
ServerName gitlab.local
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Location />
  Require all granted
  ProxyPassReverse http://127.0.0.1:8080
  ProxyPassReverse http://gitlab.local
</Location>
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} 
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 503 /deploy.html
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
ErrorLog /var/log/apache2/gitlab_error.log
CustomLog /var/log/apache2/gitlab_forwarded.log common_forwarded
CustomLog /var/log/apache2/gitlab_access.log combined env=!dontlog
CustomLog /var/log/apache2/gitlab.log combined
</VirtualHost>

Здесь gitlab.local — это домен, который будет использоваться для доступа к gitlab, а порт 8080 — тот порт, на котором сервис gitlab ожидает соединений. Его можно посмотреть командой:

После этого активируйте модули Apache — rewrite, proxy и proxy_http:

А потом активируйте наш виртуальный хост и перезапустите Apache:

rpm

Install pygpgme, a package which allows yum to handle gpg signatures, and a package called yum-utils which contains the tools you need for installing source RPMs.

sudo yum install pygpgme yum-utils

You may need to install the EPEL repository for your system to install these packages. If you do not install pygpgme, GPG verification will not work.

Create a file named that contains the repository configuration below.

Make sure to replace el and 6 in the config below with your :


name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/6/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300


name=gitlab_gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/6/SRPMS
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

Valid options for os and dist parameters can be found .

Update your local yum cache by running

sudo yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce'

Настройка Nginx

Откройте ваш конфигурационный файл

CentOSnano /etc/nginx/conf.d/${WEBSITE_NAME}.conf

Debian/Ubuntunano /etc/nginx/sites-available/$WEBSITE_NAME

Код вашего файла должен соответствовать следующему:

# переадресация с HTTP на HTTPS
#
server {
    if ($host = website.com) {
        return 301 https://$host$request_uri;
    }
    
    listen 80;
    listen :80;
    server_name website.com;
}
# upstream-серверы для балансировки
#
upstream dirlist {
        ip_hash; # липкая балансировка по IP-клиента
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
}
# обработка SSL и соединение с upstream-серверами
#
server {
  listen 443 ssl;
  listen :443 ssl;
  server_name website.com;
  ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem;
  access_log /var/log/nginx/website_access.log;
  error_log /var/log/nginx/website_error.log;
 
  # все запросы отправляем на upstream
  location / {
    proxy_pass http://dirlist/;
  }
}

Добавьте в конфигурационный файл следующие строки:

upstream gitlab-workhorse {
   server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}

вместо

upstream dirlist {
        ip_hash; # липкая балансировка по IP-клиента
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
}

Измените блок , чтобы он выглядел как указано ниже:

location / {
     client_max_body_size 0;
     gzip off;

     proxy_read_timeout      300;
     proxy_connect_timeout   300;
     proxy_redirect          off;

     proxy_http_version 1.1;

     proxy_set_header    Host                $http_host;
     proxy_set_header    X-Real-IP           $remote_addr;
     proxy_set_header    X-Forwarded-Ssl     on;
     proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
     proxy_set_header    X-Forwarded-Proto   $scheme;
     proxy_pass http://gitlab-workhorse;
}

Добавьте строку в двух блоках (с 80-ым портом и с 443-им)

server_tokens off;

После

server_name website.com;

Замените строку

root /var/www/website.com;

На следующую

root /opt/gitlab/embedded/service/gitlab-rails/public;

Добавьте следующие строки:

ssl on;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

Перед строками

ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem; # managed by Certbot

В итоге код в конфигурационном файле должен быть таким:

server {
    if ($host = website.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    listen 80;
    listen :80;
    server_name website.com;
    server_tokens off;
}

upstream gitlab-workhorse {
    server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}

server {
    listen 443 ssl;
    listen :443 ssl;
    server_name website.com;
    server_tokens off;
    root /opt/gitlab/embedded/service/gitlab-rails/public;

    ssl on;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;

    ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem; # managed by Certbot


    location / {
       client_max_body_size 0;
       gzip off;

       proxy_read_timeout      300;
       proxy_connect_timeout   300;
       proxy_redirect          off;

       proxy_http_version 1.1;

       proxy_set_header    Host                $http_host;
       proxy_set_header    X-Real-IP           $remote_addr;
       proxy_set_header    X-Forwarded-Ssl     on;
       proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
       proxy_set_header    X-Forwarded-Proto   $scheme;
       proxy_pass http://gitlab-workhorse;
  }

}

Сохраните файл и перезагрузите nginx командой или .

Using Bundler?

Bundler 1.7.0 and above

In newer bundler versions, you can scope specific gems to a source, like so:

# Gemfile

# Note: It's recommended you add the official https://rubygems.org source, unless your
#       packagecloud repository can meet all of the dependency requirements in the Gemfile.

source "https://rubygems.org"
source "https://packages.gitlab.com/gitlab/gitlab-ce" do
  gem "my-gem"
  gem "another-gem"
end

Legacy versions of Bundler

Older versions of Bundler have several bugs around scoping gems to a single source using blocks, so you’ll have to add the source globally at the top of the Gemfile.

Шаг 6 — Ограничение или отключение открытого входа в систему (опционально)

Возможно на начальной странице GitLab вы заметили, что зарегистрировать учетную запись может кто угодно. Если вы собираетесь разместить публичный проект, эта возможность будет полезна. Однако в большинстве случаев желательны более строгие ограничения.

Прежде всего, откройте область администрирования. Для этого нажмите значок гаечного ключа на панели меню вверху страницы:

На следующей странице вы увидите обзор своего экземпляра GitLab. Для изменения настройки нажмите Settings (Настройки) в нижней части левого меню:

Вы перейдете в раздел глобальных настроек для вашего экземпляра GitLab. Здесь вы можете изменить ряд настроек, влияющих на возможность регистрации новых пользователей и их уровень доступа.

Отключение регистрации

Если вы хотите полностью отключить регистрацию (вы все равно сможете сами создавать учетные записи для новых пользователей), прокрутите страницу до раздела Sign-up Restrictions (Ограничения регистрации).

Уберите отметку из поля Sign-up enabled (Регистрация разрешена):

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение регистрации по домену

Если вы используете GitLab в организации, предоставляющей адреса электронной почты в определенном домене, вы можете разрешить регистрацию только для этого домена, а не отключать ее полностью.

Затем добавьте свой домен или домены в поле Whitelisted domains for sign-ups (Белый список доменов для регистрации). В каждой строке можно указать только один домен. Вы можете использовать звездочку (*) как подстановочный символ в именах доменов:

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Теперь на начальной странице GitLab не должен отображаться раздел регистрации.

Ограничение создания проектов

По умолчанию новые пользователи могут создавать до 10 проектов. Если вы хотите разрешить новым пользователям видеть данные и участвовать в проектах, но при этом ограничить им возможность создания новых проектов, вы можете использовать для этой цели раздел Account and Limit Settings (Настройки учетных записей и ограничений).

Вы можете установить для параметра Default projects limit (Лимит проектов по умолчанию) значение 0, чтобы полностью запретить новым пользователям создавать проекты:

Новых пользователей можно будет добавлять в проекты вручную, и у них будет доступ к внутренним или публичным проектам, созданным другими пользователями.

Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):

Новые пользователи смогут создавать учетные записи, но не смогут создавать проекты.

Обновление сертификатов Let’s Encrypt

По умолчанию в GitLab имеется запланированная задача обновления сертификатов Let’s Encrypt каждые четыре дня после полуночи, точное время зависит от параметра . Вы можете изменить эти настройки в файле . Например, если вы хотите выполнять обновление каждый 7-й день в 12:30, вы можете задать это следующим образом:

/etc/gitlab/gitlab.rb

Автоматическое обновление можно отключить, добавив соответствующий параметр в :

/etc/gitlab/gitlab.rb

Когда автоматическое обновление включено, вам не нужно беспокоиться о перебоях в обслуживании.

Требования

Для начала нужно настроить среду. Вам понадобится сервер GitLab для хранения кода и управления процессами непрерывной интеграции и развертывания. Кроме того, нужно место для запуска тестов кода. Это может быть тот же сервер, на котором установлен GitLab, либо отдельный хост. Более подробное описание требований вы найдете ниже.

 Сервер GitLab с поддержкой SSL

Для хранения исходного кода и настройки задач CI/CD установите на сервер Ubuntu 16.04 экземпляр GitLab. В настоящее время GitLab рекомендует использовать 2 ядра и 4 ГБ оперативной памяти минимум. Чтобы защитить ваш, GitLab нужно защитить с помощью SSL-сертификата. Для этого можно обратиться к сервису Let’s Encrypt. Чтобы получить бесплатный сертификат от Let’s Encrypt, необходимо иметь доменное имя или связанный с ним поддомен.

Подробные инструкции по настройке сервера и сертификата вы найдете здесь:

  • Начальная настройка сервера Ubuntu 16.04
  • Установка и настройка GitLab в Ubuntu 16.04
  • Создание сертификата Let’s Encrypt для GitLab в Ubuntu 16.04

В этом мануале вы узнаете, как использовать runner непрерывной интеграции (компоненты, которые запускают автоматизированные тесты) в нескольких проектах. Если вы хотите использовать runner-серверы для обслуживания нескольких проектов, настоятельно рекомендуем ограничить или заблокировать регистрацию.

Дополнительный runner-сервер (или несколько серверов)

Runner – это сервер, который проверяет код и автоматически запускает тестирование обновлений. Чтобы изолировать среду тестирования, все тесты следует запускать в контейнерах Docker. Для этого нам нужно установить Docker на runner-сервер.

Примечание: Если у вас будет несколько runner-серверов, установите Docker на каждый из них.

Это можно сделать на сервере GitLab, но лучше использовать дополнительный сервер Ubuntu 16.04, чтобы обеспечить достаточное количество ресурсов и изолировать среду тестирования на отдельном сервере. Инструкции по настройке можно найти в статьях:

  • Начальная настройка сервера Ubuntu 16.04
  • Установка и использование Docker в Ubuntu 16.04 (разделы 1 и 2)
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *