前回の記事でGitLabをCentOSにインストールしました。今回はGitLab_CIをインストールして継続的インテグレーション生活をはじめます。GitLab_CIは出始めのころの導入記事しかなかったのでちょと大変でした。

公式で推奨されている方法は、

  • gitlab -> ユーザー “git”
  • gitlab_ci -> ユーザー “gitlab_ci”
  • gitlab_ci_runner -> ユーザー “gitlab_ci_runner”

とそれぞれにユーザーを作る方法ですが、今回は両方とも1つのサーバに入れるので、全部ユーザー “git”によって操作させることにしました。じゃないとパーミッションとかで困ります。あと”gitlab_ci_runner”ってのは要はビルドスクリプトを実行するアプリで、gitlabを含めて3つのアプリをインストールすることになります。動かすポートは、

  • gitlab -> 8079
  • gitlab_ci ->8080

としてます。特に意味はありません。

ではまずgitlab_ciのインストールから。手順は公式のやり方に則りますが、ユーザーが”git”なのでちょとだけ変更が必要です。また前回同様”?”は”#”を表してます。

1. データベースの準備

いきなりですがデータベースを作っておきます。

? cd /home/git/
? mysql -u root

mysql> CREATE DATABASE IF NOT EXISTS `gitlab_ci_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlab_ci_production`.* TO 'git'@'localhost';
mysql> exit

 2. インストール

? sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ci.git
? cd gitlab-ci
? sudo -u git -H git checkout 4-2-stable
? sudo -u git -H cp config/application.yml.example config/application.yml
? sudo -u git -H vi config/application.yml

ソースをとってきてapplication.ymlを次のように書きかえます。gitlabのサーバアドレスと、gitlab_ciのポート番号を変更しています。

defaults: &defaults
  allowed_gitlab_urls:
    # Replace with your gitlab server url
    - 'http://localhost:8079/'

  ## Gitlab CI settings
  gitlab_ci:
    ## Web server settings
    host: localhost
    port: 8080
    https: false
...

puma.rbもちょっとだけ変更

? sudo -u git -H cp config/puma.rb.example config/puma.rb
? sudo -u git -H vi config/puma.rb
    * application_path = '/home/git/gitlab-ci'に変更

ソケットとプロセスのファイルを作成

? sudo -u git -H mkdir -p tmp/sockets/
? sudo chmod -R u+rwX  tmp/sockets/
? sudo -u git -H mkdir -p tmp/pids/
? sudo chmod -R u+rwX  tmp/pids/

データベースをセット

? sudo -u git -H bundle install --without development test postgres --deployment
? sudo -u git -H cp config/database.yml.mysql config/database.yml
? sudo -u git -H vi config/database.yml
    * gitlab_ci_productionのユーザーを"git"に、
    * パスワードをmysqlのユーザー"git"のパスワードに変更

? sudo -u git -H bundle exec rake db:setup RAILS_ENV=production
? sudo -u git -H bundle exec whenever -w RAILS_ENV=production

502 errorにならないようにパーミッションを変更

? chmod -R o+x /home/git/gitlab-ci/

initスクリプト

? cp /home/git/gitlab-ci/lib/support/init.d/gitlab_ci /etc/init.d/gitlab_ci
? chmod +x /etc/init.d/gitlab_ci
? vi /etc/init.d/gitlab_ci
    * APP_USER="git"に変更
? service gitlab_ci start

nginx用のファイル

? sudo cp /home/git/gitlab-ci/lib/support/nginx/gitlab_ci /etc/nginx/sites-available/gitlab_ci
? sudo ln -s /etc/nginx/sites-available/gitlab_ci /etc/nginx/sites-enabled/gitlab_ci
? vi /etc/nginx/sites-enabled/gitlab_ci

gitlab_ciは次のような感じで変更します。ユーザー名とポートですね。

...
upstream gitlab_ci {
  server unix:/home/git/gitlab-ci/tmp/sockets/gitlab-ci.socket;
}

server {
  listen 8080;         # e.g., listen 192.168.1.1:80;
  server_name localhost;
  root /home/git/gitlab-ci/public;
...

これでnginxを再起動後、ポート8080にアクセスすれば、

スクリーンショット_021614_050908_AMやりました。

gitlabのユーザ名とパスワードでそのままログインします。すると、gitlabで作ってるプロジェクトの一覧が出てきます。

スクリーンショット_021614_051326_AM“Add”をクリックするだけで連携可能。刺し身にタンポポをのせるより遥かに簡単です。

と思いきや、”runner”をインストールしろと言ってきます。不穏です。

スクリーンショット_021514_104115_PM_021614_051603_AM

言われた通りにインストールしたいところですが、全部ユーザー “git”ができるもんと言っているので多少の変更を行います。

1. ソース取ってきてbundle install

? cd /home/git
? sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ci-runner.git
? cd gitlab-ci-runner/
? git bundle install

楽勝です

2.  セットアップ

GitLab CIの”Runners”ってとこをクリックするとこんな画面になります。

スクリーンショット_021514_104735_PM_021614_052458_AM

 

このtokenを使ってセットアップします。

? sudo -u git -H CI_SERVER_URL=http://localhost:8080/ REGISTRATION_TOKEN=<token> bundle exec ./bin/setup

うまくいくと秘密鍵が作られて、

Runner registered successfully. Feel free to start it!

って表示されます。

3. initスクリプト

? sudo cp ./lib/support/init.d/gitlab_ci_runner /etc/init.d/gitlab-ci-runner
? sudo chmod +x /etc/init.d/gitlab-ci-runner
? vi /etc/init.d/gitlab-ci-runner
    * APP_ROOT="/home/git/gitlab-ci-runner"に変更
    * APP_USER="git"に変更

で、? service gitlab-ci-runner start でスタートします。

さあではいよいよビルドします。gitlab_ciのダッシュボードからAddしたプロジェクトをクリック > Settings で詳細設定画面を開きます。ここが一番大事なとこですが、Advanced Settings > GitLab url to projectを見て下さい。”http://localhost:8079/ユーザー名/プロジェクト名.git”となっていることと思いますが、これを直接リポジトリの場所を指すように変更します。つまり、”/home/git/repositories/ユーザー名/プロジェクト名”にします。で、セーブ。

スクリーンショット_021614_030344_AM_021614_053140_AM

次にgitlabの方でプロジェクトのSettings > Servicesを見ると”GitLab CI”のところにチェックが入っていると思います。これをクリックして、”Test settings”ボタンをクリックすると、テストのビルドが走ります。またgitlab_ciに戻ってプロジェクトを見てみると、

スクリーンショット_021614_053934_AMおー、ようやくビルド出来ました。それでこれからはgitlabにpushするたびにビルドスクリプトが走るはず、だったんですがそこが何故か走りません…ローカル同士故の問題っぽいですがまだよく分かりません。

とにかく導入までは行けたし一定時間ごとのビルドは出来るのでなんとかはなるかなー

追記: 次の記事も御覧ください -> GitLab_CI「Jenkinsおじさんには勝てなかったよ…」 

関連記事

fitbitの睡眠スコアを90弱で安定させる良い睡眠を続ける簡単な方法

m1 ipad pro 12.9 2021のusb-cハブはコレがベスト

Time Machine不要!Macを11.2.3にダウングレードして原神をm1 macbook airでプレイする

MH-Z19CとM5StickCで二酸化炭素濃度モニタリング

【神軽量HMD】Avegant Glyph 改造: 瓶詰堂さんのaltglyphを作った

PC、iPad、Android、switchもドックいらず!あまりに万能なusb-cハブが最強だった

コメント

コメントを返信する

メールアドレスが公開されることはありません。