2016-06-30 3 views
1

В Travis CI Можно ли запустить процесс сборки из контейнера-докера?Travis-CI: изображение докера в качестве среды сборки

В GitLab CI это значение по умолчанию. Мы можем просто определить изображение в .gitlab-ci.yml, после чего весь контейнер build/test/deploy будет запущен внутри этого контейнера. Однако у Трэвиса есть totally different вид на использование докеров. Как я могу достичь аналогичного поведения в Трэвисе?

+0

С 'sudo: false' сборка всегда находится в a docker cuntainer –

+0

@ набиячлэвэлиь Это не то, что я хочу. С 'sudo: false' мы не контролируем используемое изображение. Он выбирает только контейнерную инфраструктуру (https://docs.travis-ci.com/uer/ci-environment/#Virtualization-environments). Также сборка на докере доступна только для sudo: required. – Vahid

ответ

2

Оказалось, что это проще сделать с Travis-CI, чем кажется на первый взгляд. Все, что вам нужно сделать, это написать свой обычный скрипт сборки, используя вызовы docker exec. Выполнение некоторых из более сложных сторонних сервисов может потребовать специальных сценариев оболочки, как в примере 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/