🍥

GitHub Actionsでのissue作成の自動化はGitHub CLIを使おう

2023/11/01に公開

2024/04/02更新

公式のサンプルがGitHub CLIを使用したサンプルに更新されていました。
今後は公式のドキュメントを参考に作成してよろしいかと思います。
こちらの記事ではISSUE_TEMPLATEファイルを使用したサンプルとして残しておきます。

概要

Github Actionsでissueの作成を自動化したいケースはよくあるかと思います。
ググってみると公式のサンプルではimjohnbo/issue-botを使用しており、その他QiitaやZennの記事ではJasonEtco/create-an-issueactions-ecosystem/action-create-issueなどを使用したサンプルが見つかります。

これらのアクションはサードパーティアクションであるため、組織のポリシーによってはワークフローに組み込むことができない可能性があります。
その場合はワークフローからGitHub CLIgh issue createコマンドを利用することでサードパーティーアクション非依存でissueを作成することができます。
GitHub CLIはインストールステップなしにrunセクション内で実行することが可能です。

ワークフロー例

GitHub上で作成した、.github/ISSUE_TEMPLATEに配置されているissueテンプレートファイルをボディとしてissueを新規作成するワークフローの例を記載します。
下記のようなテンプレートが配置されている想定です。

template.md
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---

## セクション1

## セクション2

## セクション3

.github/workflows/にyaml配置して、リポジトリのActionsタブからワークフローを実行するとissueが作成できることを確認してみてください。

create-issue.yml
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>GeneralWorkflow permissionsRead and write permissionsに変更しSaveしてください。

(2) 環境変数$GITHUB_TOKENにトークンを設定する

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