Note
- 新しいプロジェクト エクスペリエンスである Projects が利用できるようになりました。 Projects の詳細については、「Projects について」を参照してください。
- 新しいプロジェクト (クラシック)は、既に 1 つ以上のプロジェクト (クラシック)を持つ organization、リポジトリ、またはユーザーに対してのみ作成できます。 プロジェクト (クラシック)を作成できない場合は、代わりにプロジェクトを作成します。
Note
GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
はじめに
このチュートリアルでは、actions/github-script
アクションと条件を利用し、プロジェクト (クラシック) で特定の列に追加された issue と pull request からラベルを削除する方法について紹介します。 たとえば、プロジェクト カードが Done
に移動されるとき、needs review
ラベルを削除できます。
チュートリアルでは、actions/github-script
アクションを使用するワークフロー ファイルをまず作成します。 次に、ニーズに合わせてワークフローをカスタマイズします。
ワークフローの作成
-
このプロジェクト管理ワークフローを適用したいリポジトリを選択してください。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 リポジトリの作成について詳しくは、「新しいリポジトリの作成」をご覧ください。
-
リポジトリに属する プロジェクト (クラシック) を選びます。 このワークフローは、ユーザまたは Organization に属するプロジェクトでは使用できません。 既存の プロジェクト (クラシック) を使用することも、新しい プロジェクト (クラシック) を作成することもできます。 プロジェクトの作成について詳しくは、「project (classic) の作成」をご覧ください。
-
リポジトリに
.github/workflows/YOUR_WORKFLOW.yml
というファイルを作成します (YOUR_WORKFLOW
は任意の名前に置き換えます)。 これがワークフローファイルです。 GitHub で新しいファイルを作成する方法について詳しくは、「新しいファイルの作成」を参照してください。 -
次の 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"] })
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"] })
-
ワークフローファイルのパラメータをカスタマイズします。
-
github.event.project_card.column_id == '12345678'
で、12345678
を、そこに移動された Issue と pull request のラベルを削除する列の ID に変更します。列 ID を見つけるには、プロジェクト (クラシック) に移動します。 列のタイトルの横にある をクリックし、 [列リンクのコピー] リンクをクリックします。 列 ID は、コピーされたリンクの末尾にある番号です。 たとえば、
24687531
はhttps://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 から削除するラベルの名前に変更します。 ラベルについて詳しくは、「ラベルを管理する」をご覧ください。
-
-
ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳しくは、「新しいファイルの作成」を参照してください。
ワークフローのテスト
リポジトリの プロジェクト (クラシック) 上のプロジェクト カードが移動するたびに、このワークフローが実行されます。 カードが issue または pull request であり、指定した列に移動された場合、ワークフローにより、指定されたラベルが issue または pull request から削除されます。 注釈のカードは影響を受けません。
issue を プロジェクト (クラシック) から対象の列に移動して、ワークフローをテストします。
- リポジトリで Issue をオープンします。 詳しくは、「Issue の作成」をご覧ください。
- ワークフローで削除するラベルを使用して issue にラベルを付けます。 詳しくは、「ラベルを管理する」をご覧ください。
- ワークフロー ファイルで指定した プロジェクト (クラシック) 列に issue を追加します。 詳しくは、「project (classic) に issue と pull request を追加する」をご覧ください。
- プロジェクトに Issue を追加することでトリガーされたワークフローの実行を確認するには、ワークフローの実行履歴を表示します。 詳しくは、「ワークフロー実行の履歴を表示する」をご覧ください。
- ワークフローが完了すると、プロジェクト列に追加した issue で指定したラベルが削除されます。
次のステップ
actions/github-script
アクションで実行できる追加の機能について詳しくは、actions/github-script
アクションのドキュメントにアクセスしてください。- このアクションを使用するワークフローの例については GitHub を検索してください。