使用Jenkins

时间:2016-07-28 10:57:25

标签: jenkins docker docker-compose

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

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

  1. dockerize project
  2. 从git repo拉出项目
  3. 以某种方式拉docker-compose.yml和项目Dockerfile - 或者:
    • 将其放入项目仓库
    • 把它放在单独的回购中(这就是它现在的做法)
    • 将某个地方放在服务器上并将其复制
  4. 执行docker-compose up
  5. 项目的Dockerfile将有ONBUILT部分来运行测试。单元测试通过mix tests运行,并通过scripts/acceptance.sh接受。并行运行它们会很酷。
  6. 关闭docker-compose,清理容器
  7. 因为这是我对Jenkins的第一次体验,所以出现了一系列问题:

    • 这是一个可行的策略吗?
    • 如何将测试输出与Jenkins连接?
    • 如何运行和关闭docker-compose?
    • 我们是否需要/想要为此编写管道?当我们下一阶段到达CD时,我们是否需要/想要管道?

    由于

1 个答案:

答案 0 :(得分:2)

  

这是一个可行的策略吗?

是的。我认为最好在项目仓库中包含<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="spot" id="spot-1" data-test="12345"> <div class="spot-main"> <span>Test</span> <a href="#" class="spot-info">view</a> </div> </div> <div class="spot" id="spot-2" data-test="67891"> <div class="spot-main"> <span>Test</span> <a href="#" class="spot-info">view</a> </div> </div>docker-compose.yml。这样,任何更改都与使用更改的代码版本相关联。如果它在外部仓库中变得更加困难(除非你以某种方式固定git sha,比如使用子模块)。

  

项目的Dockerfile将有Dockerfile部分来运行测试

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

  

如何将测试输出与Jenkins连接?

Jenkins只使用构建步骤中的退出状态,因此只要测试脚本在失败时以非零代码退出,并且只需要成功的零代码即可。从jenkins控制台可以看到打印到stdout / stderr的测试输出。

  

如何运行和关闭docker-compose?

我建议您运行Compose:

ONBUILD

在关闭后的构建步骤中:

docker-compose pull # if you use images from the hub, pull the latest version
docker-compose up --build -d
  

我们是否需要/想要为此编写管道?

不,我认为只有一份工作没问题。首先让它使用简单的设置,然后你可以找出你需要分成不同的工作。