ぼくはただ、 push したとき勝手にサーバに上げてくれさえすればいいんだ……。

だのにネット上には、他のソフトやら何やらと併用したり何かと高度な記事ばかりで参った。ここに超シンプルなデプロイのみを行う GitLab CI を使った遊びをノートしておく。目指すのは以下のような流れ。

  • リポジトリは https://gitlab.com/midori-mate/ci-cd-test
  • サーバは Google Cloud Platform で借りているやつ、あとローカルの VM(Virtualbox) でも試した。
  • GitLab に push したら、サーバが自動でリポジトリを clone してデプロイしてくれる。

デプロイってのはなんか、作ったプログラムを公開するというような意味合いの言葉らしいぞ。



1. デプロイ先のディレクトリの準備
こういうふうにサーバにディレクトリを用意しておくぜ。もちろん書き込み権限は付与しておかないといかん。サーバをいじるのには Cyberduck アプリを使っている。



2. リポジトリの token をコピー
GitLab のリポジトリの Setting > CI/CD > Runner の 'Use the following registration token during setup' ってとこにある。

3. GitLab CI Runner をインストール
サーバのほうで
# 32bit なのか 64bit なのかチェック
$ uname -a

# X86_64 って表示されたから 64bit らしいぞ! その場合このバイナリを DL。
$ sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# gitlab runner の実行権限を与えます。
$ sudo chmod +x /usr/local/bin/gitlab-runner

# runner を実行するユーザを作成します。
$ sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# 作ったユーザを実行者として runner をインストールします。
$ sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# 起動しておきます。
$ sudo /usr/local/bin/gitlab-runner start

# 起動確認です。 active(running) とか出ればOK。
$ sudo /usr/local/bin/gitlab-runner status

4. Runner を作ってリポジトリに登録
$ sudo /usr/local/bin/gitlab-runner register
と打つと色々連続で聞かれるから、以下のように入力していく。
聞かれること 答え方
Please enter the gitlab-ci coordinator URL https://gitlab.com/
Please enter the gitlab-ci token for this runner 上でコピーした token
Please enter the gitlab-ci description for this runner for ci-cd-test, shell runner
Please enter the gitlab-ci tags for this runner ci-cd-test,shell-runner
Please enter the executor shell

5. Runner 登録を GitLab で確認
↓ 最初のうちは not connected 状態なのだけれど……




↓ ちょっと待つと緑丸がついて使えるようになる。



6. .gitlab-ci.yml
.gitlab-ci.yml をリポジトリの .git のある階層へ置く。
stages:
    - でぷろい

でぷろいじょぶ:
    stage: でぷろい
    tags:
        - ci-cd-test
        - shell-runner
    script:
        - pwd
        - origin=$(pwd)
        - cd /var/www/ci-cd-test
        - ¥cp -rf "${origin}/." .

7. 動作確認
↓ master ブランチに push したあと GitLab の CI/CD > Jobs で script に書いたものが実行されているのがわかる。




↓ サーバにもちゃんとアップされているぞ。





実はいま、みろりHPをリニューアルしようかと考えている。今回の話はその一環だ。ウェブサイトのソースを push しただけで更新できるなら、ラクだなーと思って手を出してみた。だけどこれぼくには複雑怪奇で、労力に見合ったかどうかはちと微妙なとこか。結局直接ソースをアップしても同じことだからなあ。
まあ本来、この CI という機能はプログラムのテスト等を自動化するのがメインらしい。だからこそ、こういうシンプルなデプロイだけを行う記事が見つからなかったということでもある。