Travis-CI:作为构build环境的docker映像

Travis CI中是否可以从Docker容器中运行构build过程?

GitLab CI中,这是默认的。 我们可以简单地在.gitlab-ci.yml定义图像,然后所有build / test / deploy将在该容器内运行。 不过,特拉维斯似乎对docker使用者有完全不同的看法。 我怎样才能在Travis中实现类似的行为?

事实certificate,对于Travis-CI来说,这比第一次出现更容易。 你所要做的就是使用docker exec调用编写你的普通的构build脚本。 做一些棘手的第三方服务集成可能需要专门的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 

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 

使用这种技术的真实项目可以在这里find: 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/