見出し画像

[GitHub Actions]defaultブランチ以外のWorkflowを手動実行する

こんにちは。貴島(@jnkykn)です。以前、たまたま出張先のホテルで途中から見て以来「最初から見たい!」と思っていた「アストリッドとラファエル」をhuluで見つけて見ています。アストリッドとラファエルのコンビ誕生のきっかけやアストリッドの生い立ちも知ることができて、さらにアストリッドのファンになりました。さて今日は、GitHub Actionsについて調べて試します。

defaultブランチ以外のWorkflowの手動実行の方法を確かめる

スライドのpdfファイルのpdffonts自動実行用のWorkflowは個人のリポジトリでテストしただけで、まだ業務用のリポジトリの機能追加用のブランチではテスト実行できていません。defaultブランチ以外だとworkflow_dispatchを設定していても手動実行のためのボタンが表示されないので、実行方法を調べることにします。

ワークフローの手動実行の仕様を確認する

GitHub公式のワークフローを手動実行する設定を読んでみると、

workflow_dispatch イベントをトリガーするには、ワークフローが既定のブランチに存在する必要があります。

ワークフローを手動実行する設定

とあります。はい、その通りですね。でも、テスト実行してからプルリクエストしたいじゃないですか。なので、実行方法を調べます。

GitHub CLIで実行する

ワークフローを手動実行する設定には、GitHub CLIを使う方法が紹介されています。これを試します。

まず、Installing gh on Linux and BSDに従って、GitHub CLIをインストールしました。ログイン時の認証には、ブラウザでログインする方法を選択しました。

gh auth login

   :

✓ Authentication complete.
- gh config set -h github.com git_protocol ssh
✓ Configured git protocol
! Authentication credentials saved in plain text
✓ Uploaded the SSH key to your GitHub account: /home/tetrapod/.ssh/id_rsa.pub
✓ Logged in as tetrapod418

リポジトリの既定のブランチ以外のブランチでWorkflowを実行するには、--ref フラグを使えば良いらしいので実行してみます。

$ gh workflow run sub-workflow.yaml --ref subbranch-test
✓ Created workflow_dispatch event for sub-workflow.yaml at subbranch-test

To see runs for this workflow, try: gh run list --workflow=sub-workflow.yam

ああ、そのまま実行されるわけじゃなくて、出力されたyamlを使って実行すれば良いみたいです。tryって言われているので、試してみます。

$ gh run list --workflow=sub-workflow.yaml
STATUS  TITLE           WORKFLOW      BRANCH        EVENT         ID          ELAPSED  AGE         
✓       test workfl...  test work...  subbranch...  workflow_...  9535050633  12s      less than...
✓       test workfl...  test work...  subbranch...  workflow_...  9534492785  11s      about 1 h...
X       update steps.   test work...  subbranch...  push          9534432323  0s       about 1 h...
X       update steps.   test work...  subbranch...  push          9534421023  0s       about 1 h...
X       update steps.   test work...  subbranch...  push          9534412331  0s       about 1 h...
X       test workfl...  test work...  subbranch...  workflow_...  9534388280  41s      about 1 h...
X       test workfl...  test work...  subbranch...  workflow_...  9534382041  2m30s    about 1 h..

実行結果のリストが新しい順に表示されました。一番先頭が、CLIで実行した結果です。ブラウザでも確認します。

CLIでも実行ができた
CLIでmain以外のWorkflowが実行できた

もっと面倒かと思ったのですが、あっさり実行できてしまいました。CLIを使う方法、良いですね。

defaultブランチにダミーのWorkflowを追加して同名の別リポジトリのworkflowを実行する方法

Workflowの実行方法については、GitHub Actions でデフォルトブランチにないワークフローの動作確認をするに、「defaultブランチにダミーのWorkflowを登録して、別リポジトリの同名のWorkflowに実際に実行したいjobを登録する方法」が紹介されていました。こちらも、試してみることにします。

mainブランチに、ダミーのWorkflowを追加しました。

name: test workflow to exec other branch
on:
    workflow_dispatch:
jobs:
    other-branch-job:
        runs-on: ubuntu-latest
        steps:
            - name: test job
              run: echo "execute other branch workflow!"

別のリポジトリの同名のWorkflowを修正して、実行したい内容をjobに追加しました。

name: test workflow to exec other branch
on:
    workflow_dispatch:
jobs:
    other-branch-job:
        runs-on: ubuntu-latest
        steps:
            - name: test job
              run: echo "execute other branch workflow!"

ActionsのRun workflowを確認します。

Workflowの実行対象リポジトリが選択できる様子
main以外のリポジトリが選択できる

subbranch-testを選択して実行してみます。

subbranch-testが選択された状態
実行対象のリポジトリを変更できた
実行結果が、subbranch-testのジョブ内容であることが確認できた
subbranch-testのjobが実行できた

まとめ

今日は、defaultブランチ以外のWorkflowを実行する方法を調べて試してみました。難しそうだと思っていたことも、実際に試すことができたので満足です。キリが良いので、今日はここまでにします。

更新履歴:
タイポの修正。(2024-06-17)

いいなと思ったら応援しよう!