我们想尝试使用Jenkins为我们的项目设置CI / CD。项目本身具有Elasticsearch和PostgreSQL作为运行时依赖项,Webdriver用于验证测试。
在开发环境中,所有内容都在一个docker-compose.yml
文件中设置,我们有acceptance.sh
脚本来运行验收测试。
在挖掘文档后,我发现可以通过以下步骤构建CI:
docker-compose.yml
和项目Dockerfile
- 或者:
docker-compose up
ONBUILT
部分来运行测试。单元测试通过mix tests
运行,并通过scripts/acceptance.sh
接受。并行运行它们会很酷。 docker-compose
,清理容器因为这是我对Jenkins的第一次体验,所以出现了一系列问题:
由于
答案 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
我们是否需要/想要为此编写管道?
不,我认为只有一份工作没问题。首先让它使用简单的设置,然后你可以找出你需要分成不同的工作。