naichi's lab

3日後の自分(他人)への書き置き

【GitHub】Issueを作った時にGitHub Projects (beta) へ自動登録する

はじめに

GitHubの新しいProjects機能、めちゃめちゃいい感じです。

github.com

まだベータ版なので一般公開されてないですが、誰でも申し込めば使えるようになるのでお試しあれ。

まだまだ挙動怪しいけどベータだししょうがない。それでも便利。

そんなProjectsですが、特定のリポジトリでIssueを作った時に自動登録してほしいなーと思ってたら、もんりぃ先生が作ってました。なんだ神か。。。

zenn.dev

試してみます。

やってみる

テストリポジトリを作って試してみます。

TL;DRに書かれてるymlをそのまま使ってみる。

<PROJECT_OWNER><PROJECT_NUMBER> はこの時点で書き換えるのね。

<SECRET_KEY>PERSONAL_ACCESS_TOKEN_DEMO に変えた。

secretの保存ってユーザースコープにはないのかな?

Encrypted secrets - GitHub Docs

ユーザー単位にはなさそうだった・・・リポジトリに設定する。

name: Issue の Label 操作時に Projects (Beta) に登録・削除
on:
  issues:
    types:
      - labeled
      - unlabeled
env:
  PROJECT_OWNER: naichilab
  PROJECT_NUMBER: 2
  TARGET_LABEL: 'Project'
  GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN_DEMO }}
jobs:
  manage_project:
    name: 「Project」ラベルの付け外しに対応して、Issue を Projects (Beta) に出し入れする
    runs-on: ubuntu-latest
    steps:
    - name: Add Issue to Project
      if: ${{ github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, env.TARGET_LABEL) }}
      id: add-issue-to-project
      uses: monry/actions-add-issue-to-project@v1
      with:
        github-token: ${{ env.GITHUB_TOKEN }}
        project-owner: ${{ env.PROJECT_OWNER }}
        project-number: ${{ env.PROJECT_NUMBER }}
        issue-id: ${{ github.event.issue.node_id }}
    - name: Delete Issue from Project
      if: ${{ github.event.action == 'unlabeled' && !contains(github.event.issue.labels.*.name, env.TARGET_LABEL) }}
      id: delete-issue-from-project
      uses: monry/actions-delete-issue-from-project@v1
      with:
        github-token: ${{ env.GITHUB_TOKEN }}
        project-owner: ${{ env.PROJECT_OWNER }}
        project-number: ${{ env.PROJECT_NUMBER }}
        issue-id: ${{ github.event.issue.node_id }}

Issue作ってProjectってラベルをつけてから、Actionsタブみてみると。

f:id:naichilab:20211114225745p:plain

うごいた〜〜〜

すごい。めちゃ簡単だ。

ラベル不要にする

個人的には全Issueを自動的に放り込みたいので、ラベル関係なくIssue作成時に突っ込むように書き換えてみよう

トリガーイベント探してみる

ワークフローをトリガーするイベント - GitHub Docs

issuesopened で良さそう

on:
  issues:
    types: [opened]

deleteもいらないので削除。

こんな感じかな

name: Issue 作成時に Projects (Beta) に登録する ワークフロー
on:
  issues:
    types: [opened]
env:
  PROJECT_OWNER: naichilab
  PROJECT_NUMBER: 2
  TARGET_LABEL: 'Project'
  GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN_DEMO }}
jobs:
  manage_project:
    name: Projects (Beta) に登録する ジョブ
    runs-on: ubuntu-latest
    steps:
    - name: Add Issue to Project
      id: add-issue-to-project
      uses: monry/actions-add-issue-to-project@v1
      with:
        github-token: ${{ env.GITHUB_TOKEN }}
        project-owner: ${{ env.PROJECT_OWNER }}
        project-number: ${{ env.PROJECT_NUMBER }}
        issue-id: ${{ github.event.issue.node_id }}

問題なく動きました。

うまく動いた〜これは便利だ。

もんりぃ先生ありがとう。