Skip to main content

将卡片添加到项目板列时删除标签

可以使用 GitHub Actions 在议题或拉取请求添加到project board上的特定列时自动删除标签。

注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。

简介

本教程演示如何使用 actions/github-script 操作和条件,从已添加到project board上指定列的议题和拉取请求中删除标签。 例如,可以在项目卡移至 Done 列后删除 needs review 标签。

在本教程中,你将首先创建一个使用 actions/github-script 操作的工作流文件。 然后,您将自定义工作流以适应您的需要。

创建工作流程

  1. 选择要应用此项目管理工作流程的仓库。 您可以使用您有写入权限的现有仓库,或者创建一个新的仓库。 有关创建存储库的详细信息,请参阅“新建存储库”。

  2. 选择属于存储库的project board。 此工作流程不能用于属于用户或组织的项目。 可以使用现有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 替换为要取消标记移至其中的议题和拉取请求的列 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 更改为要从移至指定列的议题或拉取请求中删除的标签列表。 有关标签的详细信息,请参阅“管理标签”。

  6. 将工作流程文件提交到仓库的默认分支。 有关详细信息,请参阅“新建文件”。

测试工作流程

每当存储库中project board上的项目卡移动时,该工作流都会运行。 如果移动的项目卡是议题或拉取请求,并移入指定的列,则该工作流将从议题或拉取请求中删除指定的标签。 记事卡不会受到影响。

通过将project board上的议题移到目标列中来测试自己的工作流。

  1. 在仓库中打开一个议题。 有关详细信息,请参阅“创建问题”。
  2. 标记带有需要工作流删除的标签的议题。 有关详细信息,请参阅“管理标签”。
  3. 将议题添加到在工作流文件中指定的 project board 列。 有关详细信息,请参阅“向 project board 添加问题和拉取请求”。
  4. 要查看通过将议题添加到项目所触发的工作流程运行,请查看工作流程运行的历史记录。 有关详细信息,请参阅“查看工作流运行历史记录”。
  5. 当工作流完成时,添加到项目列的议题中指定的标签应已被删除。

后续步骤