はじめに
はいさい!沖縄支店の石原です。前回の記事以降、日常生活で「はいさい」を使う機会はありませんでしたので危うく忘れるところでした。
さて、今日のテーマは前回の記事の続きになります。
弊社では Capistrano + Jenkins の構成を導入することで、
継続的インテグレーション,CI(continuous integration)を行っています。
まずは結論から
- 新規ジョブの設定時、apache実行ユーザとしてシェルを実行する
- sudoをJenkins で実行するにはvisudoの設定が必要
Capistranoのインストール
前回、終わりにCapistranoのインストールコマンドを記載するつもりでしたが、書いていなかったので一応ここで補足しておきます。
capistrano_colors ・・・ ターミナルでCapistranoを実行した際、結果を色付けして表示します。
railsless-deploy ・・・ Railsアプリ以外でCapistranoを使うためのプラグイン
複数の環境(ステージ)にデプロイするために capistrano-ext というプラグインがありますが、Capistrano3からはデフォルトでONになっており、個別のインストールは不要のようです。
インストールされたCapistranoのバージョン情報等は、以下のコマンドから確認できます。
gem list capistrano
Jenkinsのインストール
Jenkinsのインストールは下記のコマンドで行います。/etc/sysconfig/jenkins に設定ファイルがあるため、ポート番号などを必要に応じて変更し、サービスを起動してください。
起動後の画面は http://(ホスト名またはIP):(設定したポート番号)/ で確認することができます。# service Jenkins start
新規ジョブの登録
Jenkinsから新規ジョブを作成し、 ビルド > シェルの実行を選択して次のように記載することでCapistranoを実行することができます。パーミッションの問題でjenkinsユーザではデプロイに失敗したり、デプロイしたサービス上からファイルのアップロード処理ができなくなるケースなどもあるため、sudo コマンドにてapacheを実行しているユーザとしてデプロイを行います。
ただし、Jenkinsからsudoコマンドを実行しようとした場合、次のようなエラーが表示されます。
sudo を実行するには tty がなければいけません。といわれてしまうため、サーバー側にログインし、Jenkins ユーザでtty が無くても sudo できるよう変更します。
下記のように変更します。
#Defaults requiretty特定のスクリプトのみ許可したい場合は、NOPASSWD:ALL となっている箇所にファイルパスを記入してください。また、apacheを実行しているユーザにも権限が必要な場合は、併せて追記しておきます。
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL
設定完了後、Jenkinsの新規ジョブが正常に動作すれば完了です。
おわりに
前回、今回とインストールに関する話ばかりだったので、Capistrano + Jenkinsの組み合わせがどのようなメリットが生むのか伝わりにくかったかもしれません。次回は、LAMP環境でのCapistranoの設定などを紹介していきたいと思います。
第3回の記事はこちら
コメント