.github/CODEOWNERS我有一个 GitHub 存储库,当首次打开拉取请求时,它会自动请求代码所有者团队(在 中定义)进行审查。我想要的是强制执行拉取请求必须得到代码所有者批准的要求,但在首次打开拉取请求时停止发送这些审查请求。即贡献者期望的流程是这样的:
open a pull request -> mess around, make changes -> manually request a review when ready (can't merge without codeowner approval)
这可以通过让贡献者打开草稿拉取请求并仅在它们实际准备好时将它们标记为准备好来解决,但贡献者似乎不想这样做。当它实际上还没有准备好接受审查时,贡献者通常会打开一个(非草稿)拉取请求(我想是习惯的力量)。
有没有一种方法可以做到这一点,并且不依赖贡献者使用草稿拉取请求?
我有一个像这样的文件结构:
foo/file1.c
foo/file2.c
foo/freeforall.c
Run Code Online (Sandbox Code Playgroud)
My foogroupon GitHub 需要审核对所有内容的更改,foo 但 freeforall.c任何人都可以不受限制地触摸的文件除外,因此在对其进行更改时,它不应该自动将任何人添加为审核者。
(实际上,无论谁修改,freeforall.c都只需要求自己团队中的其他人审查他们的更改。)
我如何使用 GitHub 代码所有者来做到这一点?该文件现在看起来像这样:
foo @MyOrg/foogroup
Run Code Online (Sandbox Code Playgroud)
GitHub 明确表示不支持该!语法,因此不起作用:
foo @MyOrg/foogroup
!foo/freeforall.c
Run Code Online (Sandbox Code Playgroud)
并且目录中的文件太多,foo无法单独显式包含它们。我可以移动freeforall.c到不同的目录,但实际上我不想让 GitHub 的 CODEOWNER 功能决定我如何组织我的组件。我想 freeforall.c进入foo目录,那是它所属的地方!
我还考虑创建一个emptygroup来分配该文件,但很快意识到现在我需要一个零成员的组必须批准对该文件的 PR,这显然会导致问题。
foo @MyOrg/foogroup
foo/freeforall.c @MyOrg/emptygroup
Run Code Online (Sandbox Code Playgroud) 我已经为 GitHub Actions 创建了工作流程,如下所述:https: //docs.github.com/en/code-security/supply-chain-security/keeping-your-dependency-updated-automatically/automating-dependabot-with-github - 行动
name: Dependabot auto-approve
on: pull_request_target
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' }}
steps:
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Enable auto-merge for Dependabot PRs
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
# The documentation incorrectly forgets `GITHUB_TOKEN` here.
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
Run Code Online (Sandbox Code Playgroud)
上述自动化工作正常,但我有一个分支保护规则,需要代码所有者的审查。
有没有办法包含github-actions到 CODEOWNERS 文件中以使其批准有效?
每当打开要掌握的 PR 时,我们都会尝试自动将 DevOps 组添加为默认 PR 审阅者。
为此,我们在 master 分支中创建了一个 CODEOWNERS 文件,并将我们的 DevOps 组添加为审阅者。如果我们在 dev 分支中创建一个 CODEOWNERS 文件,在该文件中,我们不会指定 DevOps 组作为审阅者,而是指定开发团队(我们只需要 DevOps 作为 master),则任何时候从 dev 到 master 的 PR 被打开时,CODEOWNERS 都会合并时被覆盖。
我们如何防止覆盖 PR 上的 CODEOWNERS 文件?
我们使用代码所有者文件自动将评论分配给拉取请求。我们还让 Dependabot 为主要版本创建 PR。
我们不想自动向 Dependabot 创建的 PR 添加评论。根据https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-syntax,不可能!使用排除。
有没有办法:
谢谢!
我已阅读 Codeowners 文件和 Dependabot 的文档。https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates#setting-reviewers-and-assignees
我们不会在 Dependabot 操作中使用任何评论。