Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

将卡片添加到 项目(经典) 列时删除标签

可以使用 GitHub Actions 在议题或拉取请求添加到项目(经典)上的特定列时自动删除标签。

Note

  • Projects (beta)(全新的项目体验)现已推出。 有关 Projects (beta) 的详细信息,请参阅“关于 Projects (beta)”。
  • 只能为组织、存储库或已经至少有一个项目(经典)的用户创建新的项目(经典)。 如果无法创建项目(经典),则改为创建项目。

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

简介

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

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

创建工作流程

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

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

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

测试工作流程

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

通过将项目(经典)上的议题移到目标列中来测试自己的工作流。

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

后续步骤