跳转到内容
Try Gitea Cloud ☁️ for 30 days → Accelerate your Development & Deploys!

Gitea Actions常见问题解答

当前中文文档翻译不是最新版,访问英文版本查看最新内容,或帮助我们翻译

本页面包含一些关于Gitea Actions的常见问题和答案。

是否可以在我的实例中默认禁用新仓库的Actions?

Section titled “是否可以在我的实例中默认禁用新仓库的Actions?”

是的,当您为实例启用Actions时,您可以选择默认启用actions单元以适用于所有新仓库。

[repository]
; 去掉 repo.actions 将不会为新仓库自动启用actions
DEFAULT_REPO_UNITS = ...,repo.actions

在工作流文件中应该使用${{ github.xyz }}还是${{ gitea.xyz }}?

Section titled “在工作流文件中应该使用${{ github.xyz }}还是${{ gitea.xyz }}?”

您可以使用github.xyz,Gitea将正常工作。 如前所述,Gitea Actions的设计是与GitHub Actions兼容的。 然而,我们建议在工作流文件中使用gitea.xyz,以防止在工作流文件中出现不同类型的密钥(因为您在Gitea上使用此工作流,而不是GitHub)。 不过,这完全是可选的,因为目前这两个选项的效果是相同的。

使用actions/checkout@v4等Actions时,Job容器会从何处下载脚本?

Section titled “使用actions/checkout@v4等Actions时,Job容器会从何处下载脚本?”

默认从https://github.com下载,当[actions].DEFAULT_ACTIONS_URL为self时则从您自己的实例下载,参见配置速查表。

要使用其他位置的Action,请指明其主机:

  • uses: https://gitea.com/owner/repo@ref
  • uses: http://your_gitea_instance.com/owner/repo@ref
  • uses: self:owner/repo@ref,用于您自己的Gitea实例

Runner仅连接到您的Gitea实例。 对于每个Job,Runner会获得一个仅限于该Job所属仓库的GITEA_TOKEN,参见Actions Job令牌权限。 如需让Job访问更多私有仓库或外部系统,请向其传递密钥。

有两种可能的攻击类型:未知的Runner窃取您的仓库中的代码或密钥,或恶意脚本控制您的Runner。

避免前者意味着不允许您不认识的人为您的仓库、组织或实例注册Runner。

后者要复杂一些。 如果您为公司使用私有的Gitea实例,您可能不需要担心安全问题,因为您信任您的同事,并且可以追究他们的责任。

对于公共实例,情况略有不同。 以下是我们在 gitea.com上的做法:

  • 我们仅为 “gitea” 组织注册Runner,因此我们的Runner不会执行来自其他仓库的Job。
  • 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上进行这样的操作,但出于安全考虑,我们选择不这样做。
  • 对于 fork 的拉取请求,需要获得批准才能运行Actions。参见#22803。
  • 如果有人在gitea.com为其仓库或组织注册自己的Runner,我们不会反对,只是不会在我们的组织中使用它。然而,他们应该注意确保该Runner不被他们不认识的其他用户使用。

官方发布了Linux、macOS和Windows的二进制文件。 理论上,Go和Docker支持的其他系统也可以运行。

为什么选择GitHub Actions?为什么不选择与GitLab CI/CD兼容的工具?

Section titled “为什么选择GitHub Actions?为什么不选择与GitLab CI/CD兼容的工具?”

@lunny在实现Actions的问题中已经解释过这个问题。 此外,Actions不仅是一个CI/CD 系统,还是一个自动化工具。

在开源世界中,已经有许多市场上的Actions实现了。 能够重用它们是令人兴奋的。

如果它在多个标签上运行,例如 runs-on: [label_a, label_b],会发生什么?

Section titled “如果它在多个标签上运行,例如 runs-on: [label_a, label_b],会发生什么?”

该Job会在拥有所有这些标签的Runner上运行,与GitHub一致。 Runner会使用这些标签中它所拥有的第一个标签对应的环境。

代理标签和自定义标签对于Runner有什么区别?

Section titled “代理标签和自定义标签对于Runner有什么区别?”

Gitea已不再有自定义标签。 Runner每次启动时都会声明其标签,标签来自runner.labels配置或注册时指定的标签,因此请在那里修改并重启Runner。

Gitea Actions runner会有更多的实现吗?

Section titled “Gitea Actions runner会有更多的实现吗?”

虽然我们希望提供更多的选择,但由于我们有限的人力资源,runner 将是唯一受支持的官方 Runner。 然而,无论您如何决定,Gitea 和 runner都是完全开源的,所以任何人都可以创建一个新的/更好的实现。 我们支持您的选择,无论您如何决定。 如果您选择分支 runner来创建自己的版本,请在您认为您的更改对其他人也有帮助的情况下贡献这些更改。

Gitea 支持哪些工作流触发事件?

Section titled “Gitea 支持哪些工作流触发事件?”

表格中列出的所有事件都是支持的,并且与 GitHub 兼容。 对于仅 GitHub 支持的事件,请参阅 GitHub 的文档。

触发事件 活动类型
create 不适用
delete 不适用
fork 不适用
gollum 不适用
push 不适用
issues opened, edited, closed, reopened, assigned, unassigned, milestoned, demilestoned, labeled, unlabeled
issue_comment created, edited, deleted
pull_request opened, edited, closed, reopened, assigned, unassigned, synchronize, labeled, unlabeled
pull_request_review submitted, edited
pull_request_review_comment created, edited
release published, edited
registry_package published

对于 pull_request 事件,在 GitHub Actions 中 ref 是 refs/pull/:prNumber/merge,它指向这个拉取请求合并提交的一个预览。但是 Gitea 没有这种 reference。 因此,Gitea Actions 中 ref 是 refs/pull/:prNumber/head,它指向这个拉取请求的头分支而不是合并提交的预览。

如何共享私有仓库中的Actions和可复用工作流?

Section titled “如何共享私有仓库中的Actions和可复用工作流?”

前往仓库的设置 > Actions > 常规页面并添加协作所有者。 协作所有者的私有仓库可以访问当前仓库中的Actions和工作流。

如需在同一用户或组织内共享,请改为在该用户或组织的设置 > Actions > 常规 > 跨仓库访问中添加这些私有仓库。 参见跨仓库访问。