15
17

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.

JenkinsでDeploy

Last updated at Posted at 2015-01-06

やりたいこと

gitlab上で開発されているphpのウェブアプリをJenkinsでビルド開始をポチッとすると、最新をpullし、httpサーバにrsyncでデプロイする。

構成

  • apache2サーバ (Ubuntu 14.04)
  • Jenkinsサーバ (CentOS 6.6)
  • gitlabサーバ(不明)

Jenkinsサーバ

jenkinsをログインできるようにする

※本当はやらないほうがいいんじゃないだろうか?

sudo chsh -s /bin/bash jenkins

デプロイ用キー作成

deploykey.pubはコピペで後でapache2のauthorized_keysに書く。

sudo su -
ssh-keygen -f deploykey
cat deploykey.pub
mkdir /var/lib/jenkins/.ssh
mv deploykey* /var/lib/jenkins/.ssh
chown -R jenkins:jenkins /var/lib/jenkins/.ssh
chmod -R og-r /var/lib/jenkins/.ssh

apache2サーバ

www-dataをログインできるようにする

※本当はやらないほうがいいんじゃないだろうか?今回は前もってapache2サーバはjenkinsからしかsshできないようにしてあるので、安全といえば安全だが・・・。

sudo su -
chsh -s /bin/bash www-data

jenkinsのデプロイ用キーを書く

sudo su -
mkdir /var/www/.ssh
vi /var/www/.ssh/authorized_keys
chown -R www-data:www-data /var/www/.ssh

このあと、jenkinsサーバに戻って ssh -i deploykey www-data@httpserverでつなげ、known_hostsをちゃんと更新 & 接続確認すること。私はこれでハマった。

アプリ置き場を作る

このあと適当にconfを書く。ここでwww-dataでデプロイすることで、キャッシュディレクトリとかをog+wとかしなくてよいのがよい。

sudo su -
mkdir /var/www/app_dir
chown www-data:www-data /var/www/app_dir

jenkins設定

git & gitプラグイン入れる

加えてCentOS6.6標準のgitだと古くて、jenkinsのgitプラグインからhttpでのアクセス(メールアドレスとパスワードでの認証)がうまく動かないだろう、ので、ソースコードからビルドしてインストール。このパスをjenkinsで設定すること

ビルドの手順書

プロジェクトの設定からビルド手順の追加してシェルスクリプトを選択し、以下のコマンドを実行。

rsync -avC --delete -e "ssh -i /var/lib/jenkins/.ssh/deploy_key" $WORKSPACE/ www-data@apache2server:/var/www/app_dir/

パスの最後のslashの位置とかハマりどころなので注意。rsyncのCオプションはいまどきらしい、--helpによると、以下とのことで、.gitとか.cvsとか.svnとか無視してくれるらしい。

-C, --cvs-exclude           auto-ignore files the same way CVS does

あとは

このプロジェクトのボタンを押せば、git pull → rsync までやってくれるはず。前述の通り、一度ターミナルからsshして動作確認しないと、known_hostsにハッシュが無くてコケてた。

試してないこと

sshつなげようとして、問い合わせに対してyesを押してknown_hostsを更新する方法

ssh-keyscan -H $host >> ~/.ssh/known_hosts
15
17
0

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
15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?