GitLab-CIを試してみた ~その3:デプロイ編

GitLab-CIを試してみた ~その3:デプロイ編

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

今回は短期集中連載の第3回目『デプロイ編』をお送りします。

第1回:環境構築編
第2回:ユニットテスト編(PHPで実施/JavaScriptで実施)
第3回:デプロイ編 →ご覧頂いている本記事です

前回の記事にも記載しておりますが、手探りで実践したところもありますので、誤りやより良い方法があるかもしれませんが、あらかじめご了承ください。

本来であれば、プロジェクトのデプロイを実施することになるわけですが、今回はあくまでもGitLab-CIのフロー確認ということで、適当なファイルをDocumentRoot設置して完了とします。

なお、今回の『デプロイ編』は前回ご紹介した環境構築が完了していることを前提としておりますので、本記事が初見の方は事前に『環境構築編』をご覧いただき、事前準備を済ませていただければ幸いです。

実施をする

デプロイを行うにあたり、大まかなフローは以下の4つになります。

  1. ダミーhtmlを作成する
  2. Ansibleを用意する
  3. .gitlab-ci.ymlを作成する
  4. デプロイを実施する

手順1:ダミーhtmlを作成する
ちょっとでもラクをしたいので、ゲストであるDebian8の503.htmlを対象にしてみました。
GitLabのdocument root「/opt/gitlab/embedded/service/gitlab-rails/public」の503.htmlを変更します。 ※<h2>TEST</h2>を追加

TEST

Whoops, GitLab is currently unavailable.


Try refreshing the page, or going back and attempting the action again.

Please contact your GitLab administrator if this problem persists.

image05

503.htmlを落として、先ほど追記した「<h2>TEST</h2>」をとりあえず「<h2>RELEASE</h2>」に変更し、あえて差別化を図っておきます。

手順2:Ansibleを用意する
本来であれば、git pull等でパパッと完了する感じなのでしょう。
しかし、残念なことにショーケース・ティービー社内の環境上、それができないので地道にアップする設定をしていきました。

<SSHの設定>

  1. cd ansible
  2. mkdir key
    • ssh-keygenで作成
  3. ssh-copy-id -i id_rsa_deploy.pub xxxx@192.168.11.33
    • パスワードを入力して公開鍵を設定
  4. id_rsa_deployはリポジトリに登録

あまり美しいとは言い難い状態ですが、ローカル環境なのでとりあえずこれで……。
忘れてならないのは、リリース先でsudoが可能な状態にしておく必要があります。

ansbileのinventoryファイルに以下を追加


[sample] 192.168.33.111 ansible_ssh_user=xxxxxx ansible_sudo_pass=xxxxxx ansible_ssh_private_key_file=key/id_rsa_deploy

sample.yml

- hosts: sample
vars:
repository_top: ../
release_top: /opt/gitlab/embedded/service/gitlab-rails/public/
tasks:
- name: "shell"
become: true
shell: echo test > /home/okamura/test.txt

- name: "ダミーリリース"
become: true
copy: src={{ repository_top }}/dummy/503.html dest={{ release_top }}

ansible-playbook -i inventory sample.yml

これで反映されるようになりました。
実際にはGitLabで行いたいので、改めて元に戻しておきます。

Runner登録
ansibleを登録しておけばDockerを用いる必要がないのでshellを指定します。
※なお、ゲストOSのDebian8に、予めansibleをインストールしていること

Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.33.111/ci ←ここはGitLabのドメインに「ci」を付与したもの
Please enter the gitlab-ci token for this runner:
sxRbdmCaNfPEz98gyMW5 ←ここはGitLabのRunner箇所に記載されているもの
Please enter the gitlab-ci description for this runner:
[debian-bitwave]: deploy-sample
Please enter the gitlab-ci tags for this runner (comma separated):
deploy-sample-tag
Registering runner... succeeded runner=sxRbdmCa
Please enter the executor: docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

手順3:gitlab-ci.ymlを作成する
job3:
stage: deploy
script:
- chmod 600 ansible/key/id_rsa_deploy
- cd ansible
- ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory sample.yml
tags:
- deploy-sample-tag

手順4:デプロイを実施する
後はコミットするだけです。
PHP、JavaScriptのJOBがあれば、以下のような表示がされます。

image04

※job1、job2が完了したらjob3が稼働する

いかがでしたでしょうか。

本当はPHP、JavaScriptを使った管理画面をAnsibleでデプロイとしたかったんですが、今回は時間の都合で“デプロイを実施”に留まりました。

しかし、私自身が把握しておきたかったこともそうですが、本来の目的である『作業フローのドキュメント化』ができた上に、こうして記事として公開できたのは良かったと思いますね。

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ

  • 『Codeigniter』の認証管理にアノテーションを利用してみた ショーケース・ティービーで展開するサービスを開発するために、PHPのフレームワーク『Codeigniter(読み:コードイグナイター)』を使うことになりました。 <参照:CodeIgniter『CodeIgniter W …
  • YosemiteにしたらMAMP proでapacheが起動しなくなった件 久しぶりにMAMP proを立ち上げるとapacheの起動でエラーとなって困ってしまいました。原因はYosemiteへのアップグレードにあるようです。 MAMPのログを覗いてみると MAMPのログを見てもそれらしいもの …
  • GitLab-CIを試してみた ~その2:ユニットテスト編 今回は短期集中連載の第2回目『ユニットテスト編(PHPで実施/JavaScriptで実施)』をお送りします。なお、 第1回:環境構築編 第2回:ユニットテスト編(PHPで実施/JavaScriptで実施) →ご覧頂 …
  • 仮想環境で『Ansible』を使ってサーバ構築 最近、サーバ構築を実施する必要がありました。 まずは仮想環境を作り、サーバ構築を……と思ったのですが、私はインフラ周りの経験が浅く、色々困ったことが頻出してしまいました。 今回の記事では、私と同じような “サー …