Note
- Projects(全新的项目体验)现已推出。 有关 Projects 的详细信息,请参阅“关于 Projects”。
- 只能为组织、存储库或已经至少有一个项目(经典)的用户创建新的项目(经典)。 如果无法创建项目(经典),则改为创建项目。
注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。
简介
本教程演示如何使用 actions/github-script
操作和条件,从已添加到项目(经典)上指定列的议题和拉取请求中删除标签。 例如,可以在项目卡移至 Done
列后删除 needs review
标签。
在本教程中,你将首先创建一个使用 actions/github-script
操作的工作流文件。 然后,您将自定义工作流以适应您的需要。
创建工作流程
-
选择要应用此项目管理工作流程的仓库。 您可以使用您有写入权限的现有仓库,或者创建一个新的仓库。 有关创建存储库的详细信息,请参阅“创建新仓库”。
-
选择属于存储库的项目(经典)。 此工作流程不能用于属于用户或组织的项目。 可以使用现有 项目(经典),也可以创建新的 项目(经典)。 有关创建项目的详细信息,请参阅 创建 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
替换为要取消标记移至其中的议题和拉取请求的列 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
更改为要从移至指定列的议题或拉取请求中删除的标签列表。 有关标签的详细信息,请参阅“管理标签”。
-
-
将工作流程文件提交到仓库的默认分支。 有关详细信息,请参阅“创建新文件”。
测试工作流程
每当存储库中项目(经典)上的项目卡移动时,该工作流都会运行。 如果移动的项目卡是议题或拉取请求,并移入指定的列,则该工作流将从议题或拉取请求中删除指定的标签。 记事卡不会受到影响。
通过将项目(经典)上的议题移到目标列中来测试自己的工作流。
- 在仓库中打开一个议题。 有关详细信息,请参阅“创建议题”。
- 标记带有需要工作流删除的标签的议题。 有关详细信息,请参阅“管理标签”。
- 将议题添加到在工作流文件中指定的 项目(经典) 列。 有关详细信息,请参阅“向 project (classic) 添加问题和拉取请求”。
- 要查看通过将议题添加到项目所触发的工作流程运行,请查看工作流程运行的历史记录。 有关详细信息,请参阅“查看工作流程运行历史记录”。
- 当工作流完成时,添加到项目列的议题中指定的标签应已被删除。
后续步骤
- 如需详细了解
actions/github-script
操作的其他用途,请参阅actions/github-script
操作文档。 - 搜索 GitHub 以获取使用此操作的工作流示例。