Skip to main content

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

GitHub Actions を使用すると、プロジェクトボードの特定の列に Issue またはプルリクエストが追加されたときに、ラベルを自動的に削除できます。

はじめに

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

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

ワークフローの作成

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

  2. リポジトリに属するプロジェクトを選択します。 このワークフローは、ユーザまたは Organization に属するプロジェクトでは使用できません。 既存のプロジェクトを使用することも、新しいプロジェクトを作成することもできます。 プロジェクトの作成に関する詳細については、プロジェクト ボードの作成に関するページを参照してください。

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

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

    YAML
    # このワークフローはGitHubによって認定されていないアクションを使用します。
    # それらはサードパーティによって提供され、
    # 別個の利用規約、プライバシーポリシー、
    # ドキュメントを参照してください。
    
    # GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。
    # 新しいバージョンを取得するには、SHA を更新する必要があります。
    # タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。
    
    name: Remove labels
    on:
      project_card:
        types:
          - moved
    jobs:
      remove_labels:
        if: github.event.project_card.column_id == '12345678'
        runs-on: ubuntu-latest
        permissions:
          issues: write
          pull-requests: write
        steps:
          - name: remove labels
            uses: andymckay/labeler@5c59dabdfd4dd5bd9c6e6d255b01b9d764af4414
            with:
              remove-labels: "needs review"
              repo-token: ${{ secrets.GITHUB_TOKEN }}
  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' が動作します。 列は異なるプロジェクトボード上にある可能性があります。

    • remove-labels の値を、指定された列に移動された Issue または pull request から削除するラベルのリストに変更します。 複数のラベルはコンマで区切ります。 たとえば、「 "help wanted, good first issue" 」のように入力します。 ラベルの詳細については、「ラベルの管理」を参照してください。

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

ワークフローのテスト

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

プロジェクトの Issue をターゲット列に移動して、ワークフローをテストします。

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

次のステップ

  • ラベルを追加する、Issue が割り当てられているか、Issue に特定のラベルが貼られている場合にこのアクションをスキップするなど、andymckay/labeler アクションでできる他のことについては、andymckay/labeler アクション ドキュメントをご覧ください。
  • このアクションを使用するワークフローの例については GitHub を検索してください。