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:
Готово.