自動PR作成CIをHubコマンドからGitHub CLIへ変更
こんにちは。
ニシザワです。
Hubコマンドが2023年10月からGitHub ActionsによるCIで突然使えなくなったので、その時の対処法について、説明します。
こちらのIssueにある通り
昨年10月よりGitHub ActionsのUbuntuのランナーイメージにHubコマンドが同梱されなくなりました。
弊社では、リリースPRをGiHub Actionsで自動化しているのですが、その際にHubコマンドを使っていました。
昨年10月までは問題なく動いていたのですが、突然動かなくなりました。
そのことに気づいたのは、Github Actionsで定期的に自動作成するようにしていたリリースPRが全く作成されなくなったからです。
理由は上記の通りで、UbuntuのランナーイメージにHubコマンドが同梱されなくなったためです。
Issueにもある通り、代替手段としては、GitHub CLIを使うことが推奨されています。
そこで、小ネタではありますが、今までHubコマンドでやっていたことをGitHub CLIでやる方法を説明します。
-tでタイトルを指定しています。
-bで本文を指定しています。
-Bでベースブランチを指定しています。
-Hでヘッドブランチを指定しています。
-lでラベルを指定しています。
他のオプションはこちらを参照してください。
GitHub CLIはHubコマンドとほぼ同じように使えるので、書き換えは簡単です。
Hubコマンドを使っている方は、GitHub CLIに書き換えてみてください。
ニシザワです。
Hubコマンドが2023年10月からGitHub ActionsによるCIで突然使えなくなったので、その時の対処法について、説明します。
こちらのIssueにある通り
昨年10月よりGitHub ActionsのUbuntuのランナーイメージにHubコマンドが同梱されなくなりました。
弊社では、リリースPRをGiHub Actionsで自動化しているのですが、その際にHubコマンドを使っていました。
昨年10月までは問題なく動いていたのですが、突然動かなくなりました。
そのことに気づいたのは、Github Actionsで定期的に自動作成するようにしていたリリースPRが全く作成されなくなったからです。
理由は上記の通りで、UbuntuのランナーイメージにHubコマンドが同梱されなくなったためです。
Issueにもある通り、代替手段としては、GitHub CLIを使うことが推奨されています。
そこで、小ネタではありますが、今までHubコマンドでやっていたことをGitHub CLIでやる方法を説明します。
以前のソースコード
name: Create Relese PR
on:
schedule:
- cron: '0 23 * * 0,1,2,3' # JST 8:00の月曜から木曜
jobs:
build:
runs-on: ubuntu-20.04
steps:
# dev ブランチをチェックアウトする
- name: checkout main
uses: actions/checkout@v2
with:
ref: main
# ブランチを作成する
- name: Create Branch
id: create_branch
env:
TZ: 'Asia/Tokyo'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
WEEK=`date "+%w"`
if [ $WEEK -eq 4 ]
then
DATE=`date +"%Y%m%d" --date "4 day"`
DATE_JA=`date +"%Y年%m月%d日" --date "4 day"`
else
DATE=`date +"%Y%m%d" --date "1 day"`
DATE_JA=`date +"%Y年%m月%d日" --date "1 day"`
fi
BRANCH_NAME="release_$DATE"
git config --global user.name "nextat"
git config --global user.email "info@nextat.co.jp"
git checkout -b "$BRANCH_NAME"
git commit --allow-empty -m "$DATE_JAリリースブランチ作成"
git push origin "$BRANCH_NAME"
echo ::set-output name=branch_name::$BRANCH_NAME
# プルリクを作成する
- name: Create Pull Request
id: create_pull_request
env:
TZ: 'Asia/Tokyo'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
run: |
WEEK=`date "+%w"`
if [ $WEEK -eq 4 ]
then
DATE_JA=`date +"%Y年%m月%d日" --date "4 day"`
else
DATE_JA=`date +"%Y年%m月%d日" --date "1 day"`
fi
RESULT=`hub pull-request -m "$DATE_JA リリースPR" -b main -h $BRANCH_NAME -l "testing"`
毎週月曜日から木曜日まで前日(月曜日は木曜日に作成)のリリースPRを作成するジョブです。
GitHub CLIに書き換えたコード
name: Create Relese PR
on:
schedule:
- cron: '0 23 * * 0,1,2,3' # JST 8:00の月曜から木曜
jobs:
build:
runs-on: ubuntu-20.04
steps:
# dev ブランチをチェックアウトする
- name: checkout master
uses: actions/checkout@v2
with:
ref: master
# ブランチを作成する
- name: Create Branch
id: create_branch
env:
TZ: 'Asia/Tokyo'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
WEEK=`date "+%w"`
if [ $WEEK -eq 4 ]
then
DATE=`date +"%Y%m%d" --date "4 day"`
DATE_JA=`date +"%Y年%m月%d日" --date "4 day"`
else
DATE=`date +"%Y%m%d" --date "1 day"`
DATE_JA=`date +"%Y年%m月%d日" --date "1 day"`
fi
BRANCH_NAME="release_$DATE"
git config --global user.name "Nextat"
git config --global user.email "info@nextat.co.jp"
git checkout -b "$BRANCH_NAME"
git commit --allow-empty -m "$DATE_JAリリースブランチ作成"
git push origin "$BRANCH_NAME"
echo ::set-output name=branch_name::$BRANCH_NAME
# プルリクを作成する
- name: Create Pull Request
id: create_pull_request
env:
TZ: 'Asia/Tokyo'
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
run: |
WEEK=`date "+%w"`
if [ $WEEK -eq 4 ]
then
DATE_JA=`date +"%Y年%m月%d日" --date "4 day"`
else
DATE_JA=`date +"%Y年%m月%d日" --date "1 day"`
fi
RESULT=`gh pr create -t "$DATE_JA リリースPR" -b "" -B master -H $BRANCH_NAME -l "testing"`
説明
- RESULT=`hub pull-request -m "$DATE_JA リリースPR" -b master -h $BRANCH_NAME -l "testing"`
+ RESULT=`gh pr create -t "$DATE_JA リリースPR" -b "" -B master -H $BRANCH_NAME -l "testing"`
hub pull-requestをgh pr createに書き換えています。-tでタイトルを指定しています。
-bで本文を指定しています。
-Bでベースブランチを指定しています。
-Hでヘッドブランチを指定しています。
-lでラベルを指定しています。
他のオプションはこちらを参照してください。
まとめ
Hubコマンドが使えなくなったので、GitHub CLIに書き換えました。GitHub CLIはHubコマンドとほぼ同じように使えるので、書き換えは簡単です。
Hubコマンドを使っている方は、GitHub CLIに書き換えてみてください。