LUCK!

こんにちは、初めまして。エンジニアの杉本翔平です。

backlog-jenkins-nginx-dockerでWebサービスを構築_その3

jenkins と backlog の連携環境構築

前回の続き

参考

「Publish over SSHプラグイン

  • jenkins のプラグインが有効であること jenkins の管理の利用可能タブから確認する。
  • チェックをつけて再起動せずに設定

設定

  1. 「Jenkins の管理」→「システムの設定」
  2. 「Publish over SSH」→「Key」/root/.ssh/{key}の値を張り付ける。「Path to key」は空で OK
  3. SSH Servers」→「追加」
  4. 「Name」わかりやすい名前を入力
  5. 「Hostname」Web サーバのローカル IP アドレス
  6. 「Username」なんでもいい?もしくは deploy サーバーの ID
  7. 「Test Configration」Success が表示されれば OK
  8. 「保存」

バックログプラグイン

設定

  1. 「新規ジョブ作成」→「ジョブ名」適当に入力
  2. 「フリースタイル・プロジェクトのビルド」
  3. 「OK」
  4. 「backlog」を選択
  5. 「URL」「ID」「PWD」を入力

「git」プラグイン

設定

  1. 「認証情報」→「グローバルドメイン」→「認証情報の追加」
  2. SSH ユーザ名と秘密鍵」を選択
  3. 秘密鍵」→「直接入力」を選択し、鍵に秘密鍵を貼り付け

  4. Backlog の git へアクセスできるユーザの公開鍵とペアとなっている秘密鍵

  5. deploy サーバーで作った秘密鍵

ジョブを作ってデプロイする

設定

  1. 「新規ジョブ作成」→「ジョブ名」を適当に入力
  2. 「フリースタイル・プロジェクトのビルド」を選択して「OK」を押下
  3. ソースコード管理」から「Git」を選択する。URL と追加した認証情報を設定する。URL は SSH 接続の Clone と同じ。
  4. 「ビルド」→「ビルド手順の追加」→「Send files or execute commands over SSH」を選択
  5. SSH Server」→「Name」に Web サーバの情報を選択。出てこない場合は「Publish over SSH」の設定を見なおしてください。
  6. 「Transfers」→「Transfer Set」→「Source files」に「*(すべてのファイルを指す)」を入力
  7. 「Transfers」→「Transfer Set」→「Remote directory」に「/repo/プロジェクト名/リポジトリ名」を入力。deploy サーバーの/root 配下のここにソースが転送される。
  8. 「Transfer Set」→「Exec command」に「./deploy.sh プロジェクト名 リポジトリ名の通り ブランチ名」を入力。Web サーバにあるデプロイスクリプトに引数をつけて指定
  9. 「保存」を押下

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 のプラグイン動かないし。。。
  • 最新を持ってきちゃってるから、戻せないし。。。