13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(3)

Last updated at Posted at 2015-07-10

サーバーの現状

これまで以下の作業を終えた状態。
しかし自動デプロイしたいのは前回設定したのとは別のリポジトリなので変えてある。

今回やる事

今回は目指す完成形でいう(7)の作業をします。

  1. ローカルのVagrant上で開発
  2. GitHubにPush(gitflow形式で運用)
  3. GitHubに設定するwebhookでjenkinsに通知
  4. jenkinsさんがGitHubからソース落とす
  5. jenkinsさんがテスト走らせる
  6. テスト結果をSlackのプロジェクトチャンネルに通知
  7. テストOKで該当環境のDocumentRoot上にデプロイ

配置するのはLaravel5.1を使ったサイト

今回の作業の流れは以下の感じ

  1. CentOSに作るサイト用のaureliaというユーザー追加
  2. CentOSにサイト用ユーザーとjenkinsを一緒にしたグループを追加
  3. jenkinsユーザーに切り替えられるように設定
  4. /home/aurelia/内で先にcloneしておく
  5. ApacheのVirtualHostで/home/aurelia/publicをDocumentRootとして設定
  6. Jenkinsで実行するコマンドを設定する

実現方法

jenkinsでテスト完了後にgit pullさせる。

作業

CentOSにサイト用ユーザーの追加

# adduser aurelia

CentOSのグループの追加・設定

# groupadd works             // 作業用グループを作成
# usermod -G works aurelia   // 作業用グループにaurelia追加
# usermod -G works jenkins   // 作業用グループにjenkins追加
# usermod -G works apache    // 作業用グループにapache追加

Jenkinsユーザーに切り替え可能に設定

コマンドはjenkinsユーザーで実行されたりするので
問題発生時は直接jenkinsユーザーで試したりできる。

/etc/passwdを編集する

jenkins:x:498:499:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/false

これを

jenkins:x:498:499:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash

こうする。
これでsu - jenkinsで切り替えられるようになる。

GitHubからclone

今回使うのはこちら(https://github.com/inaka-phper/Laravel5.1-Aurelia)

# cd /home/aurelia/
# git clone -b [ブランチ名] [GitHubのリポジトリURL]

パーミッション設定とシンボリックリンク

/home/aurelia/Laravel5.1-Aurelia内を、worksグループに属するユーザーがいじれるようにする。

# chmod 755 /home/aurelia/                  // apacheでも見れるように755へ
# ln -s Laravel5.1-Aurelia/public public    // わが社のお決まりパターン
# chown -R aurelia:works Laravel5.1-Aurelia // rootでやっちゃったので変えた
# chown -h aurelia:works public             // 同じく
# chmod -R g+w Laravel5.1-Aurelia
# chmod -R g+s Laravel5.1-Aurelia           // グループ

ApacheのVirtualHost設定

apacheのconf.dに移動してVirtualHostの設定を追加する

# cd /etc/httpd/conf.d/
# vi virtualhost-aurelia.conf
aurelia.conf
<VirtualHost *:80>
    ServerName aurelia.example.com
    DocumentRoot /home/aurelia/public
    ErrorLog logs/aurelia-error_log
    CustomLog logs/aurelia-access_log combined
</VirtualHost>

※私はさらにベーシック認証追加

# apachectl configtest  // 設定にミスがないか確認
Syntax OK
# apachectl restart

設定したURLにアクセスしてページが表示されればOK。

composer install

このプログラムはLaravel使ってるのでcomposer updateする

# su - jenkins
$ cd /home/aurelia/Laravel5.1-Aurelia
$ composer install
-bash: composer: command not found

composer入ってなかった… :astonished:
yumでremiから入れた。

# yum --enablerepo=remi,remi-php56 install composer
$ composer install

その後Laravelの初期設定を行って動くように調整した。

Jenkinsさんでgit pullコマンドの設定を行う

前回作ったジョブの設定で、「ビルド手順の追加」から「シェルの実行」選択してコマンドを設定する

cd /home/aurelia/Larael5.1-Aurelia
git pull

テスト成功時だけ本番環境にデプロイする場合は
実行したいテストの実行コマンドも追加して
その下に本番環境用のパスに移動してgit pullする流れで書いてあげると
最初の確認環境でデプロイ→テスト失敗(ジョブ終了)→本番環境へデプロイしないとなる。
テスト成功時はテストOK→本番環境へデプロイとなる。

# 確認環境でテスト実行
cd /home/aurelia-develop/Larael5.1-Aurelia
git pull
vendor/bin/phpunit
# 成功時のみ本番環境へもデプロイ
cd /home/aurelia/Larael5.1-Aurelia
git pull

設定はこんな感じ
jenkins1.jpg

動くかテスト

既にGitHubとの連携はできているので、jenkinsから「ビルド実行」をすれば良い。
ビルド後にそのビルドの「コンソール出力」を確認すると実行された内容が確認できる。
jenkins2.jpg
ばっちりエラーが出てしまっている。

git pullするのはjenkinsばかりになるので所有者を変えて逃げ…。
# chown -R jenkins:works Laravel5.1-Aurelia

jenkins3.jpg
今度は成功。

GitHubにPushしてみる

jenkins4.jpg
こちらも無事成功。

テスト以外でエラーが出た時は、
コンソール出力を見れば原因がそのまま書いてある場合が多い。

次回は

Slackへテスト結果の通知を行う設定をする

さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(4)

13
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?