Установка GITLAB на ARM-платформу (BananaPI M2)


Администрирование операционных систем на базе Linux (Debian/Ubuntu и Centos/RedHat)
arm compile console debian https install gitlab rhodecode установка gitlab
 
 

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


(последние правки 3 недели, 6 дней)

В процессе эксплуатации GIT-хранилища RhodeCode я пришел к мнению, что надо с него мигрировать и благо, что я на него не сильно пока залез. Главная причина по которой я решил с него мигрировать, это его прожорливость и если на одной из клиентских платформ с выделенным сервером он вполне себе прижился, то на моем небольшом VPS он потребляет катастрофически много ресурсов и периодически по этому поводу залезает в swap, после чего скорость его работы падает на столько, что остается только материться. Сегодня будем пробовать не менее прожорливого монстрика GITLAB, но устанавливать его будем на наше файловое хранилище которое как наверное помните по моим предыдущим заметкам построено на ARM-платформе BabanaPI M2.

Установка GitLab на платформу ARM не особо отличается от установки другого ПО для которого имеется официальный репозиторий и сводится к следующим типовым этапам:

  1. Установка необходимого ПО
  2. Подключения репозитория
  3. Установка
  4. Дополнительная настройка

Идея я думаю понятна и мы можем начинать.

ARM система на базе BananaPI M2

Загружаем ключи и подключаем репозиторий

# curl -L https://packages.gitlab.com/gitlab/raspberry-pi2/gpgkey | sudo apt-key add -
# apt-get update
# apt-get install debian-archive-keyring
# apt-get install -y apt-transport-https
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash
# apt-get update

Устанавливаем GitLab

# aptitude install gitlab gitlab-shell python3-gitlab

Мастер установки довольно дружелюбный и вам необходимо только подтвердить домен который будет использоваться для работы с GitLab, определиться будем ли мы использовать HTTPS в работе и задать тип сертификата который мы собираемся использовать (самоподписанный или Let's encrypt).

Сертификат для Lets encrypt устанавливается автоматически

Но стоит отметить, что не все так гладко и процесс установки у меня завершился с ошибкой:

Could not find gem 'devise-two-factor (~> 2.0.0)'

Решение этого вопроса нашлось довольно быстро и пришлось лишь установить несколько дополнительных пакетов и проверить, что ruby-gems собираются корректно:

# sudo apt-get install cmake libmysqlclient-dev automake autoconf autogen libicu-dev
# cd /usr/share/gitlab
# bundler

Устранение ошибки Could not find gem

Если все прошло корректно, то просто перезапустите установку пакета командой:

# dpkg --configure -a

Если все прошло удачно, то вы увидите подобное сообщение:

Administrator account created:
login.........root
password......5iveL!fe

Возможно, что вы получите ошибку:

/lib/posix_spawn_ext.so: undefined symbol: rb_fix2int

В этом случае вам понадобится обновить ваш Ruby-интерпретатор, но в Ubuntu Linux для ARM платформы это не очень просто и придется пересобрать его из исходных кодов. Исходный код интерпретатора Ruby доступен по адресу https://www.ruby-lang.org/en/downloads/, а компилируется он обычным configure -> make -> make install (я думаю с этим больших проблем у вас не будет).

Возможно вы конечно захотите использовать несколько версий ruby и для этого вы можете воспользоваться механизмом update-alternatives:

# update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.3 500
# update-alternatives --install /usr/bin/ruby ruby /usr/local/bin/ruby 0
# update-alternatives --config ruby

Для нового интерпретатор устанавливаем свой bundler:

# gem install bundler

Естественно, что все rubby-gems потребуется пересобрать:

# cd /usr/share/gitlab
# bundle

Но, по поводу этой же ошибки может иметь место и другая ситуация если у вас 32-х битная система, то вам потребуется провести даунгрэйд библиотеки posix-spawn до версии 0.3.12:

# gem install posix-spawn:0.3.12
# gem uninstall posix-spawn

Select gem to uninstall:
 1. posix-spawn-0.3.12
 2. posix-spawn-0.3.13
 3. All versions
> 2
Successfully uninstalled posix-spawn-0.3.1

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

Описание установки есть на официальном сайте: https://docs.gitlab.com/ee/install/installation.html (я попробовал инструкция рабочая, но времени на установку и настройку ушло очень много).

Установка GIT-LAB из исходных кодов

При установке из исходных кодов я получил ошибку:

ActionView::Template::Error (Could not load compiled manifest from /opt/gitlab-ce/public/assets/webpack/manifest.json - 
have you run `rake webpack:compile`? (original error No such file or directory @ rb_sysopen - /opt/gitlab-ce/public/assets/webpack/manifest.json)):

И тут все понятно, но в документации этот момент упущен почему-то, просто выполните предложенную команду в виде:

# sudo -u git -H bundle exec rake webpack:compile RAILS_ENV=production NODE_ENV=production

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

Запустил

Как мы видим, GitLab в отличие от RhodeCode можно запустить на ARM и даже на довольно слабом ARM (RhodeCode при попытке установки на ARM говорит, что архитектура не поддерживается).

Сброс пароля администратора GitLab

В дополнение, бонусом расскажу как сбросить пароль администратора:

# cd /home/git/gitlab
# sudo -u git -H bundle exec rails console production
> user = User.find(1)
=> #<User id:1 @root>
irb(main):004:0> user.password = 'Password'
=> "Password"
irb(main):005:0> user.password_confirmation = 'Password'
=> "Password"
irb(main):006:0> user.save
Enqueued ActionMailer::DeliveryJob (Job ID: 7d180716-d41d-4723-a700-7b4b7383bf9f) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> tru

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

Моя официальная страница на FaceBook
Мой микроблог в твиттер

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


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .