Amazon Lightsail に GitLab Runner をワンライナーで構築する

はじめに

gitlab.com で CI/CD の検証をしているとき、SharedRunner が混雑していて待たされるときがあります。

Amazon Lightsail に GitLab Runner のインスタンスを立てて、自分のプロジェクトで使えるようにしてみました。

手順

以下のコマンドを実行します。

aws lightsail create-instances \
  --instance-names runner \
  --blueprint-id ubuntu_18_04 \
  --bundle-id nano_2_0 \
  --region ap-northeast-1 \
  --availability-zone ap-northeast-1a \
  --user-data 'curl -L https://get.docker.com | bash && \
      curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash && \
      apt-get install -y -qq gitlab-runner && \
      gitlab-runner register \
      --non-interactive \
      --url "https://gitlab.com/" \
      --registration-token "XXXXXXXXXX" \
      --name "lightsail" \
      --executor "docker" \
      --docker-image "alpine:latest" \
      --tag-list "lightsail" \
      --run-untagged \
      --locked="false" '

--user-data には、インスタンス作成時に実行するコマンドを指定できます。ここでは次の内容を指定しています。

  • docker のインストール
  • gitlab-runner のインストール
  • gitlan-runner を gitlab.com に登録

作成する Lightsail インスタンスのスペックや、gitlab-runner の登録内容は適宜変えてよいでしょう。

5分ほど待つと、自分のプロジェクトで使えるようになります。

f:id:u9bo:20190706153104p:plain:w500

起動しない場合は、作成した Lightsail インスタンスSSH接続し、次の場所のログを確認します。

/var/log/cloud-init-output.log

なお、 --user-data に指定したスクリプトはすべてroot権限で実行されます。そのため sudo をつける必要はありません。

参考文献