Skip to main content

カードがプロジェクトボードの列に追加されたときにラベルを削除する

GitHub Actions を使用すると、project board の特定の列に issue または pull request が追加されたときに、ラベルを自動的に削除できます。

注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

はじめに

このチュートリアルでは、actions/github-script アクションと条件を利用し、project board で特定の列に追加された issue と pull request からラベルを削除する方法について紹介します。 たとえば、プロジェクト カードが Done に移動されるとき、needs review ラベルを削除できます。

チュートリアルでは、actions/github-script アクションを使用するワークフロー ファイルをまず作成します。 次に、ニーズに合わせてワークフローをカスタマイズします。

ワークフローの作成

  1. このプロジェクト管理ワークフローを適用したいリポジトリを選択してください。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 リポジトリの作成の詳細については、「新しいリポジトリの作成」を参照してください。

  2. リポジトリに属する project board を選びます。 このワークフローは、ユーザまたは Organization に属するプロジェクトでは使用できません。 既存の project board を使用することも、新しい project board を作成することもできます。 プロジェクトの作成について詳しくは、「project board の作成」をご覧ください。

  3. リポジトリに .github/workflows/YOUR_WORKFLOW.yml というファイルを作成します (YOUR_WORKFLOW は任意の名前に置き換えます)。 これがワークフローファイルです。 GitHub での新しいファイルの作成の詳細については、「新しいファイルの作成」を参照してください。

  4. 次の YAML コンテンツをワークフローファイルにコピーします。

    YAML
    name: Remove a label
    on:
      project_card:
        types:
          - moved
    jobs:
      remove_label:
        if: github.event.project_card.column_id == '12345678'
        runs-on: ubuntu-latest
        permissions:
          issues: write
          pull-requests: write
        steps:
          - uses: actions/github-script@v6
            with:
              script: |
                // this gets the number at the end of the content URL, which should be the issue/PR number
                const issue_num = context.payload.project_card.content_url.split('/').pop()
                github.rest.issues.removeLabel({
                  issue_number: issue_num,
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  name: ["needs review"]
                })
  5. ワークフローファイルのパラメータをカスタマイズします。

    • github.event.project_card.column_id == '12345678' で、12345678 を、そこに移動された Issue と pull request のラベルを削除する列の ID に変更します。

      列 ID を見つけるには、project board に移動します。 列のタイトルの横にある をクリックし、 [列リンクのコピー] リンクをクリックします。 列 ID は、コピーされたリンクの末尾にある番号です。 たとえば、24687531https://github.com/octocat/octo-repo/projects/1#column-24687531 の列 ID です。

      複数の列を操作する場合、条件を || で区切ります。 たとえば、プロジェクト カードが列 12345678 または列 87654321 に追加されるたびに if github.event.project_card.column_id == '12345678' || github.event.project_card.column_id == '87654321' が動作します。 列は異なるプロジェクトボード上にある可能性があります。

    • github.rest.issues.removeLabel() 関数の name の値を、指定された列に移動された issue または pull request から削除するラベルの名前に変更します。 ラベルの詳細については、「ラベルの管理」を参照してください。

  6. ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳細については、「新しいファイルの作成」を参照してください。

ワークフローのテスト

リポジトリの project board 上のプロジェクト カードが移動するたびに、このワークフローが実行されます。 カードが issue または pull request であり、指定した列に移動された場合、ワークフローにより、指定されたラベルが issue または pull request から削除されます。 注釈のカードは影響を受けません。

issue を project board から対象の列に移動して、ワークフローをテストします。

  1. リポジトリで Issue をオープンします。 詳細については、「Issue の作成」を参照してください。
  2. ワークフローで削除するラベルを使用して issue にラベルを付けます。 詳細については、ラベルの管理に関する記事を参照してください。
  3. ワークフロー ファイルで指定した project board 列に issue を追加します。 詳しくは、「project boardへの issue と pull request の追加」を参照してください。
  4. プロジェクトに Issue を追加することでトリガーされたワークフローの実行を確認するには、ワークフローの実行履歴を表示します。 詳細については、「ワークフロー実行の履歴を表示する」を参照してください。
  5. ワークフローが完了すると、プロジェクト列に追加した issue で指定したラベルが削除されます。

次のステップ