Last active
July 2, 2019 09:55
-
-
Save igorkamyshev/66b1a08ac1735f8cea61e5da6a4d908f to your computer and use it in GitHub Desktop.
Medium — Breadhead — CD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: 2 | |
jobs: | |
# ... | |
build_and_push: | |
docker: | |
# Для билда контейнера нам нужен только докер | |
- image: docker:17.05.0-ce-git | |
working_directory: ~/repo | |
steps: | |
- checkout | |
# Сделайте это, потом почитайте в документации | |
- setup_remote_docker | |
- run: | |
name: Setup Env | |
# Замените "my-favorite-image" на имя вашего образа | |
# В этом шаге мы в качестве докер-тега будем использовать гит-тег | |
# Если гит-тега нет, используем докер-тег "latest" | |
command: | | |
echo 'export IMAGE_TAG=${CIRCLE_TAG:-latest}' >> $BASH_ENV | |
echo 'export IMAGE_NAME=my-favorite-image' >> $BASH_ENV | |
- run: | |
name: Build and push Docker image | |
# Замените "my-organization" на имя вашей организации | |
# DOCKER_USERNAME и DOCKER_PASSWORD — переменные окружения | |
# Их можно задать в интерфейсе CircleCI | |
command: | | |
source $BASH_ENV | |
docker build -f Dockerfile-front -t my-organization/$IMAGE_NAME:$IMAGE_TAG . | |
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" | |
docker push my-organization/$IMAGE_NAME:$IMAGE_TAG | |
deliver: | |
machine: | |
enabled: true | |
steps: | |
- run: | |
# Деплоим просто по SSH | |
# Заходим на сервер, выкачиваем новый образ и перезапускаем все | |
# SSH_USER и SSH_HOST — переменные окружения | |
name: Deploy Over SSH | |
command: ssh $SSH_USER@$SSH_HOST "cd /path-to-app && | |
sudo docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" && | |
sudo docker pull my-organization/my-favorite-image && | |
sudo docker logout && | |
sudo docker-compose down && | |
sudo docker-compose up -d && | |
sudo docker image prune -f" | |
workflows: | |
version: 2 | |
# ... | |
deploy-dev: | |
jobs: | |
- build_and_push: | |
# Билд нового контейнера запускаем только для мастер ветки | |
filters: | |
branches: | |
only: | |
- master | |
- deliver: | |
# Доставку тоже | |
filters: | |
branches: | |
only: | |
- master | |
# Доставку следует начинать только после того, как билд завершился | |
requires: | |
- build_and_push |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment