docker - Travis-CI:docker 镜像作为构建环境

标签 docker travis-ci gitlab-ci

特拉维斯 CI 是否可以从 docker 容器内运行构建过程?

GitLab CI这是默认设置。我们可以简单地在 .gitlab-ci.yml 中定义图像然后所有的构建/测试/部署都将在该容器内运行。然而,特拉维斯似乎有 totally different查看 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

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

可以在此处找到使用此技术的真实项目: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/

关于docker - Travis-CI:docker 镜像作为构建环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133107/

相关文章:

python - cryptography AssertionError : sorry, 但此版本仅支持 100 个命名组

Gitlab-ci.yml 创建 merge 请求

GitLab CI 和分布式构建混淆

macos - 有没有办法获取Docker守护程序REST API调用?

linux - "sudo apt-get install\ca-certificates\curl\gnupg\lsb-release"是什么意思?

android - Travis 无法构建 Android 项目,没有 local.properties

gitlab-ci - 带有 Gitlab-CI runner 的 Black Duck

docker - GitLab,无法登录 Docker 注册表

git - 如何将 Kubernetes 配置存储在与代码相同的存储库中?

python - Travis 构建失败,没有名为 scipy 的模块(使用 Miniconda)