Перейти к содержимому. | Перейти к навигации

Персональные инструменты

Вы здесь: Главная / Спиричев Вадим / СофтСервис / Установка gitlab в контейнере docker. / Установка gitlab и gitlab-runner в docker-контейнере

Установка gitlab и gitlab-runner в docker-контейнере

В конце статьи запуск runner'a в контейнере docker и регистрация.

 

1. Создаем новую виртуалку в Vagrant (см.Vagrantfile):

...

{
:hostname => "glab14." + DOMAIN,
:ip_int => BRIDGE_NET + "148",
:ram => 3000,
# :hdd_name => "db2_hdd.vdi",
# :hdd_size => "10000"
}

...

2. vagrant up glab14.csdiary.net

3. Пробуем зайти (пароль 1qa2ws);

slogin -l deploy 192.168.9.148

4. На хост-машине делаем беспарольный вход в новую виртулку (для ansible):

 ssh-copy-id -i ~/.ssh/id_rsa.pub deploy@192.168.9.148

и пробуем зайти без пароля:

 

 

  slogin -l deploy 192.168.9.148

5. Правим /etc/resolv.conf  и проверяем доступ в Интернет !

6. Правим файл hosts для Ansible и деплоим Docker &Co:

 deploy@dev14:~/dinf_playbks/DOCKER_DEB$ ansible-playbook -i ../hosts docker_debian.yml

7. Заходим в виртуалку и поднимаем gitlab с помощью docker-compose

файл docker-compose.yml :

version: '2'
services:
gitlab:
image: gitlab/gitlab-ce:latest
hostname: glab14
container_name: glab14
restart: always
volumes:
- /srv/gitlab/config:/etc/gitlab
- /srv/gitlab/logs:/var/log/gitlab
- /srv/gitlab/data:/var/opt/gitlab
ports:
- "80:80"
- "443:443"
- "10022:22"

 

ВАЖНО! hostname: glab14 (или container_name?) должно разрешаться через DNS!!!

Это надо для работы gitlab-runner!

 

docker-compose up -d

ждем закачки, старта и проверяем...

docker ps

gitlab должен быть healthy !

 8. Меняем пароль для root используя инструкцию:

deploy@arch1:~$ docker exec -u 0 -ti glab14 bash
root@gitlab:/# 
root@gitlab:/# gitlab-rails console -e production

-------------------------------------------------------------------------------------
 GitLab:       11.4.10 (97fd4e2)
 GitLab Shell: 8.3.3
 postgresql:   9.6.8
-------------------------------------------------------------------------------------
Loading production environment (Rails 4.2.10)
irb(main):001:0> 
irb(main):002:0* 
irb(main):003:0* user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):004:0> user.password = 'okolobaha'
=> "okolobaha"
irb(main):005:0> user.password_confirmation = 'okolobaha'
=> "okolobaha"
irb(main):006:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 788d6aa7-5a55-495c-a751-237aff2148a7) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):007:0> exit
root@gitlab:/# 

9. пробуем зайти с новым паролем root'a. 

10. Заводим пользователя и ставим ему пароль (кнопка Edit).

Menu -> Admin - Newuser

11. Заходим новым пользователем. (попросит сменить пароль!)

12. На машине с проектом делаем:

cd hiaxons

git init

 git remote add origin http://192.168.9.148/axon/hiaxons.git

# тут ошибка в порту сервера. Контейнер с gitlab висит на 8088!

git add .

git commit -m "Initial commit"
git push -u origin master

# выдает ошибку из-за порта. Правим remote

git remote -v

git remote set-url origin http://192.168.9.148:8088/axon/hiaxons.git
git remote set-url --push origin http://192.168.9.148:8088/axon/hiaxons.git

git remote -v
# отправляем проект (спросит имя:пароль):

git push -u origin master

Проект появится в списке проектов пользователя.

13. В корень проекта добавляем .gitlab-ci.yml

stages:
- build
Buildimg:
stage: build
tags:
- sloganindo
script:
- docker build -t slogan .
- docker ps

и

git add .gitlab-ci.yml

git commit -m "Add  .gitlab-ci.yml "
git push -u origin master

смотрим первый pipeline (в проекте CI/CD (ракета) -> Pipelines). Он повис, т.к. нет runners for job!

14. Устанавливаем и настраиваем gitlab-runner на целевой машине.

На машине должен быть установлен Docker (для нашего script).

Делаем как написано в файле GitlabReadme.txt

gitlab-runner install and start on DEV-node
===========================================
#
# This is manual downloading, see task "Download gitlab-runner" in docker_debian.yml
#
wget --content-disposition https://packages.gitlab.com/runner/gitlab-runner/packages/debian/stretch/gitlab-runner_11.4.0_amd64.deb/download.deb

sudo dpkg -i gitlab-runner_11.4.0_amd64.deb

sudo gitlab-runner status

gitlab-runner register -u http://192.168.9.148 -r 2uEGWWMWWRDGsUGfsyLs \
-n --executor shell --tag-list "sloganindo" --name "f_runner"

OR (if the name gitlab resolved (i.e. in your dnsmasq))

gitlab-runner register -u http://gitlab -r 2uEGWWMWWRDGsUGfsyLs \
-n --executor shell --tag-list "sloganindo" --name "f_runner"

 

токен (-r) берем из GitLab (проект) -> Settings (шестеренка) -> CI/CD -> Runners (Expand button) -> Specific runners

Здесь же их видно после регистрации  (Available specific runners)

Если gitlab запущен в той же сети и имеет доступ снаружи по https (https://gla.csdiary.net),

то в локальном dnsmasq.conf переопределяем имя: 

 

address=/gla.csdiary.net/192.168.10.252

теперь по этому имени будет разрешаться адрес в локалке.

Регистрируем:

gitlab-runner register  -u https://gla.csdiary.net -r yHtTTfc_Y-fdkyarMzMG -n --executor shell --tag-list "sloganim" --name "runner_1"

 

Еще делаем (!)

sudo usermod -aG docker gitlab-runner
sudo service docker restart

Полезные команды:

sudo systemctl status gitlab-runner

sudo gitlab-runner verify

Дикуссия про проблемы подключения runner'a к gitlab по https

 

***********

Создаем runner:

docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.ocker run -d --name gitlab-runner --restart always \

 

Регистрируем зайдя в контейнер ( docker exec -it gitlab-runner /bin/bash ):

 

gitlab-runner register \
--non-interactive \
--url "https://gla.csdiary.net/" \
--registration-token "yHtTTfc_Y-fdkyarMzMG" \
--executor "docker" \
--docker-image "docker:19.03.12" \
--description "docker-runner" \
--tag-list "slogan6" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock

 

Ищем его в gitlab.

******************************

 

 

 

 15. Проверяем статус pipline. Он должен быть passed, т.к. был найден runner.