跳至主要内容

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

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

注意

现在已禁用创建新的项目(经典)。项目(经典)将于 2024 年 8 月 23 日停止使用并删除。您可以在 GitHub 博客 上阅读有关此更改的更多信息。

新的改进版项目体验现已推出。有关更多信息,请参阅“关于项目”。

2024 年 8 月 23 日,所有剩余的项目(经典版)将在功能移除之前自动迁移。

简介

本教程演示了如何使用 actions/github-script 操作 以及条件语句,从添加到项目(经典版)中特定列的 issue 和 pull request 中移除标签。例如,当项目卡片移动到“已完成”列时,您可以移除“需要审查”标签。

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

创建工作流

  1. 选择您要应用此项目管理工作流的仓库。您可以使用您拥有写入权限的现有仓库,也可以创建一个新的仓库。有关创建仓库的更多信息,请参阅“创建新的仓库”。

  2. 选择属于该仓库的项目(经典版)。此工作流不能用于属于用户或组织的项目。

  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 替换为您要取消标记移动到该列的 issue 和 pull request 的列的 ID。

      要查找列 ID,请导航到您的项目(经典版)。在列标题旁边,单击 然后单击 **复制列链接**。列 ID 是复制链接末尾的数字。例如,24687531https://github.com/octocat/octo-repo/projects/1#column-24687531 的列 ID。

      如果您想对多个列执行操作,请用||分隔条件。例如,if github.event.project_card.column_id == '12345678' || github.event.project_card.column_id == '87654321'将在项目卡片添加到列12345678或列87654321时执行操作。这些列可能位于不同的项目中(经典项目)。

    • github.rest.issues.removeLabel()函数中的name值更改为要从移动到指定列的 issue 或 pull request 中删除的标签的名称。有关标签的更多信息,请参阅“管理标签”。

  6. 将您的工作流文件提交到存储库的默认分支。有关更多信息,请参阅“创建新文件”。

测试工作流

每次存储库中的项目(经典项目)上的项目卡片移动时,此工作流都会运行。如果卡片是 issue 或 pull request 并且被移动到您指定的列中,则工作流将从 issue 或 pull request 中删除指定的标签。笔记卡片不会受到影响。

通过将项目(经典项目)上的 issue 移动到目标列来测试您的工作流。

  1. 在您的存储库中打开一个 issue。有关更多信息,请参阅“创建 issue”。
  2. 使用您希望工作流删除的标签标记 issue。有关更多信息,请参阅“管理标签”。
  3. 将 issue 添加到您在工作流文件中指定的工作流(经典项目)列中。有关更多信息,请参阅“将 issue 和 pull request 添加到项目(经典项目)”。
  4. 要查看由将 issue 添加到项目触发的运行的工作流,请查看工作流运行的历史记录。有关更多信息,请参阅“查看工作流运行历史记录”。
  5. 工作流完成后,您添加到项目列的 issue 应该已删除指定的标签。

下一步