【问题标题】:How to write automated test for Gitlab CI/CD configuration?如何为 Gitlab CI/CD 配置编写自动化测试?
【发布时间】:2021-10-20 05:28:47
【问题描述】:

我已通知我的 Gitlab CI/CD 配置的复杂性增长得相当快。通常,我可以使用编程语言或基础架构代码为代码编写自动化测试。

是否可以为 gitlab-ci.yml 文件本身编写自动化测试?

它是否存在任何库或测试框架?

理想情况下,我想设置不同的环境变量,执行 gitlab-ci.yml 文件,并对输出进行断言。

【问题讨论】:

    标签: gitlab automated-tests gitlab-ci gitlab-ci-runner


    【解决方案1】:

    我不知道目前有任何工具可以真正测试行为。但我最终有两种方法:

    1。以更小的块进行测试,也就是单元测试我的构建块。

    我将我的构建提取成更小的块,我可以包含这些块并单独测试。这适用于脚本块等,但对于规则块来说还不够——但提供了很大的价值,例如,我将模板用于某些步骤作为生成的 docker 图像的验证,这些步骤将使用这些图像。

    2。通过 gitlab-ci-local 验证

    https://github.com/firecow/gitlab-ci-local 是一个允许你在本地测试它的工具,它允许你提供环境变量。 pr 管道中的分支名称解析存在一些小问题,但除此之外它工作得很好。我用它来测试 GitHub Actions 中的 gitlab ci 文件。

    我希望这会有所帮助

    【讨论】:

    • 将代码分成更小的块肯定有帮助。看起来 gitlab-ci-local 正在构建自己的 docker 映像,而不是使用实际的 gitlab-runner。想知道这是否可以很好地模仿 gitlab-runner 并且不会导致意外行为。想知道他们为什么不尝试围绕 gitlab-runner 创建一个包装器。
    【解决方案2】:

    Gitlab 有一个 gitlab-ci.yaml 的 linter 要访问 CI Lint 工具,请导航到项目中的 CI/CD > Pipelines 或 CI/CD > Jobs,然后单击 CI lint。

    Docs

    【讨论】:

    • 我知道他们有一个 linter,但这仅验证我的语法是否正确。我想要的是编写测试来验证逻辑。
    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 2021-01-15
    • 1970-01-01
    • 2021-11-29
    • 2022-06-23
    • 1970-01-01
    • 2022-04-12
    • 2019-08-07
    相关资源
    最近更新 更多