今回は、WebアプリのソースコードをGitLabにpushしたら、GitLab RunnerがWebアプリをコンテナ上にデプロイするというCICDの流れを動かしてみます。
前提
- GitLabサーバーが構築済み
- GitLab RunnerがGitLabに登録済み
GitLab RunnerをGitLabに登録する方法は以下を参照してください。
構成
以下のような構成になります。
実現したい流れは、以下の通りです。
- WebアプリのソースコードをGitLabにpush
- パイプラインが動いて、GitLab Runnerを起動
- GitLab RunnerからホストのDockerへコマンドを実行
- WebアプリがDockerホスト上にデプロイされる
各OS・アプリケーションのバージョン情報
- Ubuntu Server: 18.04
- Docker version 19.03.8, build afacb8b7f0
- GitLabサーバー: 11.11.8
- GitLab Runner: 12.10.0
GitLab Runnerを使ってコンテナをビルドする
以下の作業は、GitLabサーバーに接続できる開発環境などで実施します。
Gitプロジェクトを作成します。
$ mkdir hello-cicd && cd hello-cicd
$ git init
Apacheのコンテナが起動するdocker-compose.ymlを作成します。
$ vi docker-compose.yml
web-server:
image: httpd
container_name: "web-server"
ports:
- "8003:80"
.gitlab-ci.ymlを作成します。
$ vi .gitlab-ci.yml
before_script:
- docker info
- apk update
- apk upgrade
- apk add py-pip
- apk add python3-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
build:
tags:
- docker
script:
- docker-compose down
- docker-compose up -d
RunnerがApacheのコンテナを立ち上げるようにしています。
buildのtagsに、GitLab Runner登録時のタグを指定すると、狙ったrunnerにdeployさせることができます。
GitLabサーバーにpushします。
$ git add .
$ git commit -m "test runner"
$ git push origin master
pushすると、パイプラインが実行され、ジョブが走り始めるはずです。
次の章で確認してみましょう。
パイプラインの確認
パイプライン一覧を表示します。
GitLabサーバー > プロジェクト > CI/CD > パイプライン
パイプラインを選択すると、ジョブの状況が確認できます。
ジョブを選択すると、ジョブの詳細画面が開きます。
コンテナのコンソールログも確認できます。
デプロイ確認
最後に、きちんとApacheサーバーが立ち上がっているか、ブラウザでアクセスして確認してみましょう。
今回の例で作成したdocker-compose.ymlでは、以下のURLでアクセスできます。
http://[ホストのアドレス]:8003
以下のような画面が表示されれば、デプロイ成功です。
まとめ
今回は、Webアプリケーション作成時のCI/CDの流れを想定して、GitLabへプログラムをpushした後、GitLab RunnerでWebアプリケーションを自動でデプロイする方法について説明しました。
次回は、AngularJSなど本格的なWebアプリケーションフレームワークを使って、より実践的なCI/CDを試してみたいと思います。
参考
tagをつけて狙ったrunnerにデプロイする
コメント