GitHub Actionsでのissue作成の自動化はGitHub CLIを使おう
2024/04/02更新
公式のサンプルがGitHub CLIを使用したサンプルに更新されていました。
今後は公式のドキュメントを参考に作成してよろしいかと思います。
こちらの記事ではISSUE_TEMPLATEファイルを使用したサンプルとして残しておきます。
概要
Github Actionsでissueの作成を自動化したいケースはよくあるかと思います。
ググってみると公式のサンプルではimjohnbo/issue-botを使用しており、その他QiitaやZennの記事ではJasonEtco/create-an-issueやactions-ecosystem/action-create-issueなどを使用したサンプルが見つかります。
これらのアクションはサードパーティアクションであるため、組織のポリシーによってはワークフローに組み込むことができない可能性があります。
その場合はワークフローからGitHub CLIのgh issue create
コマンドを利用することでサードパーティーアクション非依存でissueを作成することができます。
GitHub CLIはインストールステップなしにrun
セクション内で実行することが可能です。
ワークフロー例
GitHub上で作成した、.github/ISSUE_TEMPLATE
に配置されているissueテンプレートファイルをボディとしてissueを新規作成するワークフローの例を記載します。
下記のようなテンプレートが配置されている想定です。
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---
## セクション1
## セクション2
## セクション3
.github/workflows/
にyaml配置して、リポジトリのActions
タブからワークフローを実行するとissueが作成できることを確認してみてください。
name: create-issue
on: workflow_dispatch
env:
GITHUB_TOKEN: ${{ github.token }}
TEMPLATE_PATH: ./.github/ISSUE_TEMPLATE/template.md
jobs:
create_issue:
name: Create Issue
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@main
- name: Create Issue
run: |
gh issue create \
--title "issue sample" \
--body "$(cat ${{ env.TEMPLATE_PATH }} | tail -n +10)" # ヘッダー部分を取り除いて使用する
注意点
(1) workflowに書込権限を付与する
workflowに書込権限がないとissue作成時に以下のエラーが発生する。
Run gh issue create \
cat: ./.github/ISSUE_TEMPLATE/template.md: No such file or directory
GraphQL: Resource not accessible by integration (createIssue)
Error: Process completed with exit code 1.
リポジトリのSetting
>Actions
>General
のWorkflow permissions
でRead and write permissions
に変更しSave
してください。
$GITHUB_TOKEN
にトークンを設定する
(2) 環境変数gh issue create
コマンド実行時に以下のエラーが発生する可能性がある。
Run gh issue create \
gh: To use GitHub CLI in a GitHub Actions workflow, set the GH_TOKEN environment variable. Example:
env:
GH_TOKEN: ${{ github.token }}
Error: Process completed with exit code 4.
GitHub Actions上でgh
コマンドを使用する場合、GH_TOKEN
またはGITHUB_TOKEN
にトークンを設定してください。
今回のケースではactionsのデフォルトのトークンに付与された権限で実行可能です。
Discussion