backlog-jenkins-nginx-dockerでWebサービスを構築_その3
jenkins と backlog の連携環境構築
前回の続き
「Publish over SSH」プラグイン
- jenkins のプラグインが有効であること jenkins の管理の利用可能タブから確認する。
- チェックをつけて再起動せずに設定
設定
- 「Jenkins の管理」→「システムの設定」
- 「Publish over SSH」→「Key」/root/.ssh/{key}の値を張り付ける。「Path to key」は空で OK
- 「SSH Servers」→「追加」
- 「Name」わかりやすい名前を入力
- 「Hostname」Web サーバのローカル IP アドレス
- 「Username」なんでもいい?もしくは deploy サーバーの ID
- 「Test Configration」Success が表示されれば OK
- 「保存」
「バックログ」プラグイン
設定
- 「新規ジョブ作成」→「ジョブ名」適当に入力
- 「フリースタイル・プロジェクトのビルド」
- 「OK」
- 「backlog」を選択
- 「URL」「ID」「PWD」を入力
「git」プラグイン
設定
- 「認証情報」→「グローバルドメイン」→「認証情報の追加」
- 「SSH ユーザ名と秘密鍵」を選択
Backlog の git へアクセスできるユーザの公開鍵とペアとなっている秘密鍵
- deploy サーバーで作った秘密鍵
ジョブを作ってデプロイする
設定
- 「新規ジョブ作成」→「ジョブ名」を適当に入力
- 「フリースタイル・プロジェクトのビルド」を選択して「OK」を押下
- 「ソースコード管理」から「Git」を選択する。URL と追加した認証情報を設定する。URL は SSH 接続の Clone と同じ。
- 「ビルド」→「ビルド手順の追加」→「Send files or execute commands over SSH」を選択
- 「SSH Server」→「Name」に Web サーバの情報を選択。出てこない場合は「Publish over SSH」の設定を見なおしてください。
- 「Transfers」→「Transfer Set」→「Source files」に「*(すべてのファイルを指す)」を入力
- 「Transfers」→「Transfer Set」→「Remote directory」に「/repo/プロジェクト名/リポジトリ名」を入力。deploy サーバーの/root 配下のここにソースが転送される。
- 「Transfer Set」→「Exec command」に「./deploy.sh プロジェクト名 リポジトリ名の通り ブランチ名」を入力。Web サーバにあるデプロイスクリプトに引数をつけて指定
- 「保存」を押下
deployScript の作成
vi /root/deploy.sh
# ./deploy.sh {プロジェクト名} {リポジトリ名} {ブランチ名} echo deploy job start PROJECT_NAME=$1 REPO_NAME=$2 BRANCH_NAME=$3 cd /root/repo/$PROJECT_NAME/$REPO_NAME docker build -f /root/repo/$PROJECT_NAME/$REPO_NAME/Dockerfile-$BRANCH_NAME -t localhost:5000/ci-$REPO_NAME-$BRANCH_NAME . docker push localhost:5000/ci-$REPO_NAME-$BRANCH_NAME cmd=`docker ps -q --filter name=ci-$REPO_NAME-$BRANCH_NAME` name=`echo $cmd` if [ "$name" != "" ]; then docker rm -f ci-$REPO_NAME-$BRANCH_NAME fi docker run -i -d --rm --net=nginxproxy_default --name ci-$REPO_NAME-$BRANCH_NAME localhost:5000/ci-$REPO_NAME-$BRANCH_NAME
WebHook の設定
https://{jenkinsサーバーのhost}/git/notifyCommit?url={gitリポジトリssh}
- 「設定」→「ビルド・トリガ」→「SCM をポーリング」にチェック
- これでプッシュすると Jenkins が動き出す。
その他の Backlog との連携
- ビルド後の処理として、PR に通知
課題
- backlog と連携アカウント連携できない。
- branch などは渡すようにする
- webhook が一つしか登録できない。。。
- マージした PR 見れないし。。。
- backlog のプラグイン動かないし。。。
- 最新を持ってきちゃってるから、戻せないし。。。