代码之家  ›  专栏  ›  技术社区  ›  Bennett Dams

github操作和其他ci工具(如jenkins)有什么区别?

  •  0
  • Bennett Dams  · 技术社区  · 6 年前

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

    我对像jenkins这样的ci工具在自动构建或测试方面的好处持肯定态度,github actions的目标是在将来使用这些工具。

    在github上拥有一个存储库并使用一个外部ci工具有着巨大的好处,可以将存储库移动到另一个git存储库平台(甚至本地),而无需重写整个ci过程。通过github操作,您或多或少地与github生态系统联系在一起。

    我认为github的动作的集成在 本地的 环境,但除此之外还有其他的优点或缺点吗?

    0 回复  |  直到 5 年前
        1
  •  1
  •   maxheld    5 年前

    我已经用github actions全职工作了几个月了。

    现在还早(2019年6月),但我的清单如下:

    优势:

    1. github操作只是连续的docker运行。很容易推理和调试。 重建建筑环境 container-based Travis is possible , 但更困难。 在github操作上 docker build docker run 离开。
    2. 个人 行动 在一个 工作流程 默认情况下是孤立的。 您可以使用完全不同的计算环境进行编译和测试。 travis ci(我认为其他“传统”ci)将在同一计算环境中运行所有“阶段”(~操作)。 同样,github操作更易于推理和调试。
    3. 这个 main.workflow spec(hcl的一个子集,实际上只是一个有向无环图)是 open source . 总之,整个事情都是Docker的一个很薄的包装,所以平台锁定可以说是最小的。
    4. 已经 GitHub操作的开源重新实现,例如 act 用于本地测试。
    5. 您已经准备好访问github api,并且可以立即(有点有限)进行身份验证。
    6. 那里 可以 成为一个充满活力的社区(市场?)人们可以分享行动的地方。 例如,我正在重用由不同生态系统中的不同人员构建的部署操作。
    7. 有向无环图及其可视化编辑器 main.工作流 s也许是对ci/cd和一般工作流建模的一种好方法。 需要一些习惯,但很好的概括。
    8. github操作可以做的远不止ci!基本上,整个api都在您的指尖上作为输入和输出。

    缺点:

    Github操作(仍然?)在这一点上(2019年6月)有时有令人惊讶的基础限制。

    1. 没有本机缓存。 你得到 形象 层缓存 (这是 complicated )但没有别的。 对于构建人工制品,您必须滚动自己的缓存(通过aws、azure等…),这可能需要大量工作。(你可以看到 hacky setup here .
    2. 令人惊讶的是, 不支持来自fork的pull请求 . 又来了一点 complicated ,从安全的角度来看可以理解,但目前不可能针对fork pr(base)的接收回购的秘密运行操作a)和/或b)针对 潜在的 fork pr的合并结果(travis就是这么做的)。 对于涉及fork的工作流,这使得github操作在很大程度上不能作为ci/cd工具使用。
    3. 单平台,你可以在Docker里面运行,所以一些Linux发行版。这似乎不太可能改变,但可能是一个可以接受的限制。 您始终可以添加一个操作来调用其他跨平台的CI/CD服务。
    4. 文档仍然非常稀少。 没有太多的最佳实践或脚手架。
    5. 发布的github操作(至少在市场上)的质量和广度仍然相当低/有限。 我们会看看是否能成功。
    6. 没有很好的方法来进行单元测试操作。(i hacked 但我不太确定。