jenkins - 使用 Jenkins 在 Docker 容器中运行测试

标签 jenkins docker docker-compose

我们想尝试使用 Jenkins 为我们的项目设置 CI/CD。该项目本身具有 Elasticsearch 和 PostgreSQL 作为运行时依赖项以及用于验收测试的 Webdriver。
在开发环境中,一切都设置在一个 docker-compose.yml文件,我们有 acceptance.sh运行验收测试的脚本。

在挖掘文档后,我发现可以通过以下步骤构建 CI:

  • docker 化项目
  • 从 git repo
  • 拉取项目
  • 以某种方式拉docker-compose.yml和项目Dockerfile - 任何一个:
  • 放入项目 repo
  • 把它放在单独的仓库中(现在就是这样)
  • 放在服务器上的某个地方,然后将其复制到
  • 执行docker-compose up
  • 项目的 Dockerfile 将有 ONBUILT部分运行测试。单元测试通过 mix tests 运行并通过scripts/acceptance.sh 接受.并行运行它们会很酷。
  • 关机docker-compose ,清理容器

  • 因为这是我第一次接触 Jenkins,所以出现了一系列问题:
  • 这是一个可行的策略吗?
  • 如何将测试输出与 Jenkins 连接起来?
  • 如何运行和关闭 docker-compose?
  • 我们是否需要/想要为此编写管道?当我们将在下一阶段获得 CD 时,我们是否需要/想要管道?

  • 谢谢

    最佳答案

    Is this a viable strategy?



    是的。我认为最好包含 docker-compose.ymlDockerfile在项目 repo 中。这样,任何更改都与使用更改的代码版本相关联。如果它在外部仓库中,则更改变得更加困难(除非您以某种方式固定 git sha,例如使用子模块)。

    project's Dockerfile will have ONBUILD section to run tests



    我会避免这种情况。只需设置一个不同的命令来在容器中运行测试,而不是在构建时。

    How to connect tests output with Jenkins?



    Jenkins 只使用构建步骤中的退出状态,因此只要测试脚本以非零代码退出,成功代码为零,这就是您所需要的。从 jenkins 控制台可以看到打印到 stdout/stderr 的测试输出。

    How to run and shut down docker-compose?



    我会推荐这个来运行 Compose:
    docker-compose pull # if you use images from the hub, pull the latest version
    docker-compose up --build -d
    

    在构建后关闭步骤中:
    docker-compose down --volumes
    

    Do we need/want to write a pipeline for that?



    不,我认为只有一份工作就可以了。首先通过简单的设置让它工作,然后你可以弄清楚你需要什么来分割不同的工作。

    关于jenkins - 使用 Jenkins 在 Docker 容器中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634371/

    相关文章:

    maven - 如何使用 Jenkins 并行运行我的集成测试?

    java - 积极开发 JAR 和依赖 JAR 时的开发实践?

    docker - Docker镜像备份

    symfony - docker-compose ERROR : The Compose file is invalid because: Service database has neither an image nor a build context specified. 至少一个必须是……

    jenkins - jenkins 错误中的 Sonar-scanner 与任何配置的安装不匹配

    linux - 在 groovy 脚本中更改文件扩展名时执行 shell 命令时出现意外标记 '.'

    python - 在 Windows 上运行 docker-py 的客户端错误

    python - 如何在Dockerfile中使用miniconda安装软件包?

    r - R plotly orca错误: No mapbox access token found

    docker - gocql + docker "not found"