Personal access tokensの発行
下準備としてGitHub上でトークンを発行する必要がある。
- GitHub「Personal access tokens」の設定方法
- 権限はプライベートリポジトリのPR作成だったため、「repo」の権限を全部チェックした。
- なお、トークンは自分のアカウントではなく、デプロイ用のユーザーアカウントで作成
シェル全体
-
release/[Y-m-d]
という名前のブランチをつくる - 空コミットしてプッシュする
- PRを作成する
RELEASE_DAY=`date "+%Y-%m-%d"`
RELEASE_BRANCH="release/${RELEASE_DAY}"
# ブランチ作成
git branch -D ${RELEASE_BRANCH}
git checkout master
git pull origin master
git checkout -b ${RELEASE_BRANCH}
git reset --hard origin/master
git commit --allow-empty -m "${RELEASE_DAY}リリース分"
git push -u origin ${RELEASE_BRANCH}
# PR作成
TOKEN="tokendayo"
BODY="## コメント見出し\n https:\/\/github.com\/organizationName\/projectName\/pulls?utf8=✓&q=is:pr+base:release\/${RELEASE_DAY}"
JSON="{\"title\": \"${RELEASE_DAY}リリース分\", \"head\": \"organizationName:release/${RELEASE_DAY}\", \"base\": \"master\", \"body\": \"${BODY}\" }"
curl -H 'Content-Type:application/json' -H "Authorization: token ${TOKEN}" \
"https://api.github.com/repos/organizationName/repositoryName/pulls" \
-d "${JSON}"
ブランチ作成
- 「ソースコード管理」のセクションでgitリポジトリを紐付けておく
- gitコマンドでmasterを最新にした上でブランチ作成
- すでに同名ブランチがある場合は作成に失敗するため、作る前にブランチ削除を実行
- 現在の運用上、同じ日に2回以上同名のブランチを作る(=1日に2回以上実行する)ことがあるので、空コミット前にmasterと同じ状態に揃える。
- 空コミットしてプッシュする
RELEASE_DAY=`date "+%Y-%m-%d"`
RELEASE_BRANCH="release/${RELEASE_DAY}"
git branch -D ${RELEASE_BRANCH}
git checkout master
git pull origin master
git checkout -b ${RELEASE_BRANCH}
git reset --hard origin/master
git commit --allow-empty -m "${RELEASE_DAY}リリース分"
git push -u origin ${RELEASE_BRANCH}
PR作成
- curlを使ってPR作成
- 最初に発行したtokenはここで使う
- GitHubAPIを叩くだけ
- 自動作成したブランチに対してマージされたorPR中のものを一覧するためのリンクも生成している
- JSONについて
- title: PRのタイトル
- head: PRを出すブランチ名
- base: マージ先のブランチ名(master)
- body: PRに表示されるコメント(markdown)
- JSON内に変数を使う場合はご覧の通りエスケープを頑張る必要がある
TOKEN="tokendayo"
BODY="## コメント見出し\n https:\/\/github.com\/organizationName\/projectName\/pulls?utf8=✓&q=is:pr+base:release\/${RELEASE_DAY}"
JSON="{\"title\": \"${RELEASE_DAY}リリース分\", \"head\": \"organizationName:release/${RELEASE_DAY}\", \"base\": \"master\", \"body\": \"${BODY}\" }"
curl -H 'Content-Type:application/json' -H "Authorization: token ${TOKEN}" \
"https://api.github.com/repos/organizationName/repositoryName/pulls" \
-d "${JSON}"
備考
- PRを作る所はシェルを使わずにやる方法もいろいろあった
- git操作は普通にgitコマンド使うのが手軽