Thank you for reading this post, don't forget to subscribe!
Установка gitlab
Обновим систему:
1 |
yum update -y |
Установка пакетов
Вместо domain.ru укажите ваш актуальный домен.
1 2 3 |
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash EXTERNAL_URL="http://gitlab.domain.ru" yum install -y gitlab-ce |
Необходимо открыть http на firewall:
1 2 |
firewall-cmd --permanent --add-service=http systemctl reload firewalld |
Настройка SMTP
В конфигурационном файле /etc/gitlab/gitlab.rb указать актуальные данные для подключения к smtp серверу
1 |
vi /etc/gitlab/gitlab.rb |
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
gitlab_rails['gitlab_email_from'] = 'gitlab@domain.ru' gitlab_rails['gitlab_email_display_name'] = 'Gitlab' gitlab_rails['gitlab_email_reply_to'] = 'noreply@domain.ru' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.domain.ru" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "gitlab@domain.ru" gitlab_rails['smtp_password'] = "************" gitlab_rails['smtp_domain'] = "domain.ru" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none' |
[/codesyntax]
1 |
gitlab-ctl reconfigure |
протестируем отправку письма
1 2 |
gitlab-rails console irb(main):001:0> Notify.test_email('admin@domain.ru', 'Test message from gitlab', 'Message Body from gitlab').deliver_now |
Настройка HTTPS
Скопируйте валидный сертификат выданный центром сертификации для вашего домена и секретный ключ, вместо domain.ru указать актуальный домен.
1 2 3 4 5 6 |
mkdir -p /etc/gitlab/ssl chmod 700 /etc/gitlab/ssl cp ~/domain.ru.key /etc/gitlab/ssl/gitlab.domain.ru.key cp ~/domain.ru.crt /etc/gitlab/ssl/gitlab.domain.ru.crt firewall-cmd --permanent --add-service=https systemctl reload firewalld |
и отредактируем конфигурационный файл, вместо domain.ru укажите актуальный домен
1 |
vi /etc/gitlab/gitlab.rb |
[codesyntax lang="php"]
1 2 3 4 5 6 7 |
external_url 'https://gitlab.domain.ru' nginx['enable'] = true nginx['client_max_body_size'] = '500m' nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.domain.ru.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.domain.ru.key" letsencrypt['enable'] = false # чтобы не верифицировал и не пересоздавал сертификаты |
[/codesyntax]
1 |
gitlab-ctl reconfigure |
Настройка registry
registry gitlab - это хранилище докер контейнеров, в случае с СШ предназначено для хранения контейнеров прикладных сервисов.
Скопируйте валидный сертификат выданный центром сертификации для вашего домена и секретный ключ, вместо domain.ru указать актуальный домен.
1 2 |
cp ~/domain.ru.key /etc/gitlab/ssl/registry-gitlab.domain.ru.key cp ~/domain.ru.crt /etc/gitlab/ssl/registry-gitlab.domain.ru.crt |
1 2 |
vi /etc/gitlab/gitlab.rb registry_external_url 'https://registry-gitlab.domain.ru' |
1 |
gitlab-ctl reconfigure |
Опционально. Настройка LDAP
В конфигурационном файле /etc/gitlab/gitlab.rb указать актуальный адрес, учетную запись для доступа к LDAP
1 |
vi /etc/gitlab/gitlab.rb |
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' host: '192.168.11.103' port: 389 uid: 'sAMAccountName' bind_dn: 'ldap@domain.ru' password: '************' encryption: 'plain' verify_certificates: true active_directory: true allow_username_or_email_login: false lowercase_usernames: false block_auto_created_users: false base: 'CN=Users,DC=domain,DC=ru' EOS |
[/codesyntax]
1 |
gitlab-ctl reconfigure |
Теперь можно перейти по ссылке https://gitlab.domain.ru При первом входе потребуется указать пароль административной учетной записи root. Установка GitLab Runner
Установка docker
1 2 3 4 |
yum update -y curl -sSL https://get.docker.com/ | sh systemctl enable docker systemctl start docker |
Установка gitlab-runner, и создание каталога для кэша. Вместо domain.ru указать актуальный домен и REGISTRATION_TOKEN, который находится в меню "Admin Area" - "Overview" - "Runners" в блоке "Set up a shared Runner manually".
1 2 |
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash yum install gitlab-runner |
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 |
gitlab-runner register -n \ --url https://gitlab.domain.ru/ \ --registration-token REGISTRATION_TOKEN \ --executor docker \ --docker-image "docker:stable" \ --docker-privileged mkdir /root/.m2 |
[/codesyntax]
Добавим корневой сертификат домена в доверенные. Вместо domain.ru указать актуальный домен.
1 2 3 4 |
cp ~/domain.ru.crt /etc/docker/certs.d/registry-gitlab.domain.ru:5000/ca.crt cp ~/domain.ru.crt /etc/pki/ca-trust/source/anchors/registry-gitlab.domain.ru.crt update-ca-trust systemctl restart docker |
Редактируем конфигурационный файл, необходимо указать актуальный домен и REGISTRATION_TOKEN
1 |
vi /etc/gitlab-runner/config.toml |
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
concurrent = 2 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "runner-1" url = "https://gitlab.domain.ru/" token = "*******************" # REGISTRATION_TOKEN executor = "docker" environment = ["DOCKER_DRIVER=overlay2", "DOCKER_TLS_CERTDIR=", "GIT_SSL_NO_VERIFY=1"] [runners.docker] image = "docker:stable" privileged = false disable_cache = false volumes = ["/cache", "/root/.m2:/.m2:rw"] shm_size = 0 tls_verify = false disable_entrypoint_overwrite = false oom_kill_disable = false [runners.cache] Insecure = false |
[/codesyntax]
1 |
systemctl restart gitlab-runner.service |
Опционально. Настройка HTTP registry Gitlab registry по умолчанию работает по протоколу HTTPS. Использование HTTP возможно, но не рекомендуется. На сервере gitlab исправьте ссылку реестра контейнеров на http
1 |
vi /etc/gitlab/gitlab.rb |
1 |
registry_external_url 'http://registry-gitlab.domain.ru' |
1 |
gitlab-ctl reconfigure |
На сервере gitlab-runner в демоне docker укажите ссылку на небезопасный реестр и перезапустите docker
1 |
vi /etc/docker/daemon.json |
1 2 3 |
{ "insecure-registries" : ["registry-gitlab.domain.ru:5000"] } |
1 2 |
systemctl daemon-reload systemctl restart docker |