我们正处于从Jenkins迁移到Concourse CI的过程中,到目前为止一切都非常顺利。但现在我有问题,我不知道如何解决。我想从社区得到任何建议。
我想做的是可以使用Selenium运行集成或功能(Web)测试的工作。我们几乎没有问题:
正如您所看到的,这是非常重要的任务。当然,我可以创建一个包含我需要的所有内容的超级容器,但这是一个糟糕的解决方案。另一种选择是为此创建一个shell脚本,但这不够灵活。
我是否有任何示例可以为此问题实施该做法或良好做法?
谢谢!
答案 0 :(得分:6)
从版本1.3.0开始,您可以在任务中运行Docker-compose:https://concourseci.slack.com/archives/general/p1466556331001964
这似乎有效:
jobs:
- name: docker-compose
public: true
serial: true
plan:
- do:
- task: docker-compose
timeout: 20m
privileged: true
config:
platform: linux
image_resource:
type: docker-image
source: {repository: "mumoshu/dcind", tag: "latest"}
run:
path: sh
args:
- -exc
- |
source /docker-lib.sh
start_docker
docker ps
docker-compose version
答案 1 :(得分:3)
这是Concourse作者的评论:
主机上没有Docker二进制文件或套接字 - 它们只是运行Garden后端(可能是Guardian)。 Concourse在Docker上方的抽象层运行,因此提供任何类型的魔法都没有用。
1.3之后缺少的一件事是Docker要求你自己设置cgroup。我忘记了那是多么烦人。我希望他们做的是Guardian所做的并自动配置它,但是你可以做什么。
因此,完整的说明是:
在其中使用或构建带有泊坞窗的图像,例如泊坞窗:DIND。 在任务开始时运行以下命令:https://github.com/concourse/docker-image-resource/blob/master/assets/common.sh#L1-L40 使用docker daemon&。
启动Docker然后你可以照常运行docker-compose和朋友。
这样做的缺点是你每次都会获取图像。 #230将解决这个问题。
从长远来看,#324(评论)是我想要的方向。
请参阅此处https://github.com/concourse/concourse/issues/324
在接受的答案中,Slack档案数据被删除(由于Slack限制)
专用于用例的docker镜像:https://github.com/meAmidos/dcind
答案 2 :(得分:0)
这对我来说听起来并不复杂。我写了一篇关于如何使类似的东西运行here的帖子。我使用一些不同的容器用于堆栈和测试运行器并从官方docker中启动所有内容:在其上安装了docker-compose的dind图像......
除了通常的大厅CI资源获取等。 执行测试运行包括:
要干净地设置和拆除堆栈和测试运行器,您可以执行类似下面的操作(如果您的服务在测试开始时未启动,可能您可以使用depends,对我而言,它可以正常工作)< / p>
# Setup the SUT stack:
docker-compose up -d
# Run the test-runner container outside of the SUT to be able to teardown the SUT when testing is completed:
docker-compose run --rm test-runner --entrypoint '/entrypoint.sh /protractor/project/conf-dev.js --baseUrl=http://web:9000/dist/ --suite=my_suite'
# Store the return-code from the tests and teardown:
rc=$?
docker-compose down
echo "exit code = $rc "
kill %1
exit $rc