Skip to main content

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

GitHub Actions を使用すると、プロジェクト (クラシック) の特定の列に issue または pull request が追加されたときに、ラベルを自動的に削除できます。

はじめに

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

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

ワークフローの作成

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

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

  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 を見つけるには、プロジェクト (クラシック) に移動します。 列のタイトルの横にある をクリックし、 [列リンクのコピー] リンクをクリックします。 列 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. ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳しくは、「新しいファイルの作成」を参照してください。

ワークフローのテスト

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

issue を プロジェクト (クラシック) から対象の列に移動して、ワークフローをテストします。

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

次のステップ