Travis 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 триггерит билд:
Сборка и пуш образа выполняется так же.
Создаём 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
Выносим данные авторизации в переменные:
Редактируем .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:
Готово.


