Vah*_*hid 5 travis-ci docker gitlab-ci
在Travis CI中,是否可以从docker容器内运行构建过程?
在GitLab CI中,这是默认值.我们可以简单地定义图像,.gitlab-ci.yml
然后所有build/test/deploy都将在该容器内运行.然而,Travis似乎对docker的使用有着截然不同的看法.如何在Travis中实现类似的行为?
事实证明,使用Travis-CI比首次出现更容易.您所要做的就是使用docker exec
调用编写正常的构建脚本.执行一些棘手的第三方服务集成可能需要专用的shell脚本,如下面的codecov.io示例所示.
例:
sudo: required
language: cpp
services:
- docker
before_install:
- docker pull user/build:latest
- docker run -it -d --name build user/build bash
- docker exec build git clone https://github.com/user/product.git
script:
- docker exec build cmake -H/product -B/_build
- docker exec build cmake --build /_build
- docker exec build cmake --build /_build --target documentation
- docker exec build cmake --build /_build --target run-tests
after_success:
- docker exec build bash /project/codecov.sh
Run Code Online (Sandbox Code Playgroud)
codecov.sh:
#!/usr/bin/env bash
cd /project && \
bash <(curl -s https://codecov.io/bash) \
-f /_build/app.coverage.txt \
-t uuid-project-token \
-X gcov \
-X coveragepy \
-X search \
-X xcode \
-R /project \
-F unittests \
-Z
Run Code Online (Sandbox Code Playgroud)
可以在此处找到使用此技术的真实项目:https://github.com/qbradq/tales-of-sosaria/tree/e28eb9877fd7071adae9ab03f40a82ea8317a7df
我在这里写了一篇关于整个过程的文章:https://normanblancaster.wordpress.com/2017/01/31/leading-edge-c-build-environments-with-docker-and-travis-ci/
归档时间: |
|
查看次数: |
1195 次 |
最近记录: |