29

GitHub 宣布了一项即将推出的功能,GitHub Actions

我对 Jenkins 等 CI 工具在自动构建或测试方面的好处持肯定态度,GitHub Actions 的目标是在未来使用这些工具。

在 GitHub 上拥有一个存储库并使用外部 CI 工具具有允许将存储库移动到另一个 Git 存储库平台(甚至是本地)的巨大好处,而无需重写整个 CI 过程。使用 GitHub Actions,您或多或少地与 GitHub 生态系统联系在一起。

我假设 GitHub 的 Actions 的集成在原生环境中会更加流畅,但除此之外还有其他优点或缺点吗?

4

2 回答 2

34

几个月来,我一直在全职使用 GitHub 操作。

现在还为时尚早(2019 年 6 月),但这是我的清单:

优点:

  1. GitHub 操作只是连续的 docker 运行。很容易推理和调试。为基于容器的 Travis复制构建环境是可能的,但更加困难。在 GitHub 操作上,它只是一个docker build docker run遥远的地方。
  2. 默认情况下,工作流中的各个操作是隔离的。您可以使用完全不同的计算环境进行编译和测试。Travis CI(我认为其他“传统”CI)将在同一计算环境中运行所有“阶段”(〜动作)。同样,GitHub 操作更容易推理和调试。
  3. main.workflow规范(HCL 的一个子集,实际上只是一个有向无环图)是开源。无论如何,整个事情都是对 Docker 的一个非常薄的包装,因此平台锁定可以说是最小的。
  4. 已经有GitHub 操作的开源重新实现,例如本地测试操作
  5. 您可以通过开箱即用的(有些有限的)身份验证访问 GitHub API。
  6. 可能会有一个充满活力的社区(市场?),人们可以在其中分享行动。例如,我正在重用由不同生态系统中的不同人构建的部署操作。
  7. 有向无环图 (DAG) 和main.workflows 的可视化编辑器可能是特别是建模 CI/CD 和一般工作流的好方法。需要一些时间来适应,但概括性很好。
  8. GitHub 操作可以做的不仅仅是 CI!作为输入和输出,基本上整个 API 触手可及。

缺点:

GitHub 操作(仍然?)在这一点上(2019 年 6 月)有时会出现令人惊讶的基本限制。

  1. 没有本机缓存。你得到图像图层缓存(这很复杂),但没有别的。对于构建人工制品,您必须滚动自己的缓存(通过 AWS、Azure 等......),这可能是很多工作。(你可以在这里看到一个骇人听闻的设置
  2. 令人惊讶的是,不支持来自 forks 的拉取请求。这又有点复杂,从安全的角度来看也是可以理解的,但目前无法针对分叉 PR(base)的接收 repo 的秘密运行操作,和/或 b)针对可能的合并结果一个 fork PR(这就是 travis 所做的)。对于涉及分叉的工作流程,这使得 GitHub 操作在很大程度上无法用作 CI/CD 工具。
  3. 单一平台,它只是你可以在 docker 中运行的任何东西,所以一些 Linux 发行版。这似乎不太可能改变,但可能是一个可以接受的限制。您始终可以添加一个操作来调用其他跨平台 CI/CD 服务。
  4. 文档仍然很少。没有太多的最佳实践或脚手架。
  5. 已发布的 GitHub 操作(至少在市场上)的质量和广度仍然很低/有限。我们将看看这是否会起飞。
  6. 没有很好的方法来对动作进行单元测试。(我一起破解了一些东西,但我不太确定)。
于 2019-06-20T11:31:22.000 回答
7

在 GitHub 上拥有一个存储库并使用外部 CI 工具具有允许将存储库移动到另一个 Git 存储库平台(甚至是本地)的巨大好处,而无需重写整个 CI 过程。
使用 GitHub Actions,您或多或少地与 GitHub 生态系统联系在一起。

是的,从 2019 年 11 月开始,稍微少一点:

请参阅Joe Bourne的公告“ GitHub Actions 的自托管运行器现在处于测试阶段”。

您可以拥有自托管运行器,这意味着:

  • 你的环境,你的工具
  • 任何尺寸的机器或配置
  • 安全访问和网络
  • 大工作量支持

为了支持在您的工作流程中使用自托管运行器,我们扩展了使用runs-on密钥的体验。
在注册您的自托管运行器时,它们每个都被赋予一个只读标签 self-hosted ,您可以将其与runs-on.
这是一个例子:

# Use Any available Self-hosted runners connected to repo
runs-on: self-hosted

请参阅“托管您自己的跑步者”中的文档。

于 2019-11-05T21:36:02.250 回答