開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. CI >
  4. 自動PR作成CIをHubコマンドからGitHub CLIへ変更
no-image

自動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でやる方法を説明します。

以前のソースコード

 
    
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に書き換えてみてください。
  • posted by Nextatスタッフ
  • GitHub
TOPに戻る