--- date: "2023-05-24T15:00:00+08:00" slug: "faq" sidebar_position: 100 --- # Gitea Actions常见问题解答 本页面包含一些关于Gitea Actions的常见问题和答案。 ## 是否可以在我的实例中默认禁用新仓库的Actions? 是的,当您为实例启用Actions时,您可以选择默认启用actions单元以适用于所有新仓库。 ```ini [repository] ; 去掉 repo.actions 将不会为新仓库自动启用actions DEFAULT_REPO_UNITS = ...,repo.actions ``` ## 在工作流文件中应该使用`${{ github.xyz }}`还是`${{ gitea.xyz }}`? 您可以使用`github.xyz`,Gitea将正常工作。 如前所述,Gitea Actions的设计是与GitHub Actions兼容的。 然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出现不同类型的密钥(因为您在Gitea上使用此工作流,而不是GitHub)。 不过,这完全是可选的,因为目前这两个选项的效果是相同的。 ## 使用`actions/checkout@v4`等Actions时,Job容器会从何处下载脚本? 默认从`https://github.com`下载,当`[actions].DEFAULT_ACTIONS_URL`为`self`时则从您自己的实例下载,参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。 要使用其他位置的Action,请指明其主机: - `uses: https://gitea.com/owner/repo@ref` - `uses: http://your_gitea_instance.com/owner/repo@ref` - `uses: self:owner/repo@ref`,用于您自己的Gitea实例 ## 如何限制Runner的权限? Runner仅连接到您的Gitea实例。 对于每个Job,Runner会获得一个仅限于该Job所属仓库的`GITEA_TOKEN`,参见[Actions Job令牌权限](token-permissions.md)。 如需让Job访问更多私有仓库或外部系统,请向其传递[密钥](usage/actions/secrets.md)。 ## 如何避免被黑客攻击? 有两种可能的攻击类型:未知的Runner窃取您的仓库中的代码或密钥,或恶意脚本控制您的Runner。 避免前者意味着不允许您不认识的人为您的仓库、组织或实例注册Runner。 后者要复杂一些。 如果您为公司使用私有的Gitea实例,您可能不需要担心安全问题,因为您信任您的同事,并且可以追究他们的责任。 对于公共实例,情况略有不同。 以下是我们在 [gitea.com](http://gitea.com/)上的做法: - 我们仅为 "gitea" 组织注册Runner,因此我们的Runner不会执行来自其他仓库的Job。 - 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上进行这样的操作,但出于安全考虑,我们选择不这样做。 - 对于 fork 的拉取请求,需要获得批准才能运行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。 - 如果有人在[gitea.com](http://gitea.com/)为其仓库或组织注册自己的Runner,我们不会反对,只是不会在我们的组织中使用它。然而,他们应该注意确保该Runner不被他们不认识的其他用户使用。 ## Runner 支持哪些操作系统? 官方发布了Linux、macOS和Windows的二进制文件。 理论上,Go和Docker支持的其他系统也可以运行。 ## 为什么选择GitHub Actions?为什么不选择与GitLab CI/CD兼容的工具? [@lunny](https://gitea.com/lunny)在实现Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释过这个问题。 此外,Actions不仅是一个CI/CD 系统,还是一个自动化工具。 在开源世界中,已经有许多[市场上的Actions](https://github.com/marketplace?type=actions)实现了。 能够重用它们是令人兴奋的。 ## 如果它在多个标签上运行,例如 `runs-on: [label_a, label_b]`,会发生什么? 该Job会在拥有所有这些标签的Runner上运行,与[GitHub](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)一致。 Runner会使用这些标签中它所拥有的第一个标签对应的环境。 ## 代理标签和自定义标签对于Runner有什么区别? Gitea已不再有自定义标签。 Runner每次启动时都会声明其标签,标签来自`runner.labels`配置或注册时指定的标签,因此请在那里修改并重启Runner。 ## Gitea Actions runner会有更多的实现吗? 虽然我们希望提供更多的选择,但由于我们有限的人力资源,runner 将是唯一受支持的官方 Runner。 然而,无论您如何决定,Gitea 和 runner都是完全开源的,所以任何人都可以创建一个新的/更好的实现。 我们支持您的选择,无论您如何决定。 如果您选择分支 runner来创建自己的版本,请在您认为您的更改对其他人也有帮助的情况下贡献这些更改。 ## Gitea 支持哪些工作流触发事件? 表格中列出的所有事件都是支持的,并且与 GitHub 兼容。 对于仅 GitHub 支持的事件,请参阅 GitHub 的[文档](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。 | 触发事件 | 活动类型 | |-----------------------------|--------------------------------------------------------------------------------------------------------------------------| | 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](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取请求合并提交的一个预览。但是 Gitea 没有这种 reference。 > 因此,Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取请求的头分支而不是合并提交的预览。 ## 如何共享私有仓库中的Actions和可复用工作流? 前往仓库的**设置** > **Actions** > **常规**页面并添加协作所有者。 协作所有者的私有仓库可以访问当前仓库中的Actions和工作流。 如需在同一用户或组织内共享,请改为在该用户或组织的**设置** > **Actions** > **常规** > **跨仓库访问**中添加这些私有仓库。 参见[跨仓库访问](token-permissions.md#cross-repository-access)。