Travis: запуск и сборка Docker-образов

Автор: | 18/07/2016
 

travis_logoTravis CI позволяет собирать, запускать и отправлять образы в репозиторий Docker.

Пример .travis.yml файла для запуска Docker:

sudo: required
services:
  - docker
branches:
  only:
    - develop
    - master
before_install:
  - docker pull microsoft/azure-cli:0.10.0
  - docker run microsoft/azure-cli:0.10.0 bash -c "azure --version;"
script:
  - if [ $TRAVIS_BRANCH = "develop" ]; then echo "DEV deploy"; fi
  - if [ $TRAVIS_BRANCH = "master" ]; then docker ps -a; fi

Сохраняем изменения:

$ git add .travis.yml && git commit -m "Docker run Azure CLI" && git push
[master b1e326b] Docker run Azure CLI
 1 file changed, 8 insertions(+), 5 deletions(-)
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 538 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:jm/azure-infrastructure.git
   44c1231..b1e326b  master -> master

И Travis триггерит билд:

travis_docker_1

Сборка и пуш образа выполняется так же.

Создаём Dockerfile:

$ cat dev_app_1/Dockerfile 
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y \
    node.js npm \
    && ln -s /usr/bin/nodejs /usr/bin/node \
    && npm install azure-cli -g \
    && azure --completion >> ~/azure.completion.sh \
    echo 'source ~/azure.completion.sh' >> ~/.bashrc \
    && azure

RUN azure config mode arm

Выносим данные авторизации в переменные:

music_prod_ok_2

Редактируем .travis.yml:

sudo: required
services:
  - docker
branches:
  only:
    - develop
    - master
before_install:
  - docker build -t setevoy/exampleapp1 dev_app_1/
  - docker login -u $DOCKER_USER -p $DOCKER_PASS -e $DOCKER_EMAIL
  - docker push setevoy/exampleapp1
script:
  - if [ $TRAVIS_BRANCH = "develop" ]; then echo "DEV deploy"; fi
  - if [ $TRAVIS_BRANCH = "master" ]; then docker ps -a; fi

Пушим в Github:

$ git add -A
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .travis.yml
        new file:   dev_app_1/Dockerfile
$ git commit -m "Build & push" && git push

Билд Travis:

travis_docker_3

Готово.