Files

105 lines
4.2 KiB
YAML

kind: pipeline
type: docker
name: build-and-deploy
steps:
# Budowanie obrazu frontendu dla release
- name: build-web-release
image: docker:latest
environment:
DOCKER_DRIVER: overlay2
OUTBO_BACKEND_URL: https://prodatapi.outbo.pl
services:
- name: docker
image: docker:dind
when:
ref:
include:
- /^refs/tags\/release\/.*$/
commands:
- docker login -u gitea-ci -p ${DRONE_GIT_PASSWORD} ${DRONE_REGISTRY}
- docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_BEFORE} || true
- docker build -f web.Dockerfile --build-arg outbo_env=staging --build-arg backend_url=https://prodatapi.outbo.pl --cache-from ${DRONE_REGISTRY}/web:${DRONE_COMMIT_BEFORE} --cache-from ${DRONE_REGISTRY}/web:latest -t ${DRONE_REGISTRY}/web:latest -t ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA} ./evg-outbo-web
- docker push ${DRONE_REGISTRY}/web:latest
- docker push ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}
# Budowanie obrazu frontendu dla master
- name: build-web-master
image: docker:latest
environment:
DOCKER_DRIVER: overlay2
services:
- name: docker
image: docker:dind
when:
ref:
include:
- refs/heads/master
commands:
- docker login -u gitea-ci -p ${DRONE_GIT_PASSWORD} ${DRONE_REGISTRY}
- docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_BEFORE} || true
- docker build -f web.Dockerfile --build-arg outbo_env=production --build-arg backend_url=https://prodatapi.outbo.pl --cache-from ${DRONE_REGISTRY}/web:${DRONE_COMMIT_BEFORE} --cache-from ${DRONE_REGISTRY}/web:latest -t ${DRONE_REGISTRY}/web:latest -t ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA} ./evg-outbo-web
- docker push ${DRONE_REGISTRY}/web:latest
- docker push ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}
# Budowanie obrazu backendu
- name: build-api
image: docker:latest
environment:
DOCKER_DRIVER: overlay2
services:
- name: docker
image: docker:dind
when:
ref:
include:
- refs/heads/master
- /^refs/tags\/release\/.*$/
commands:
- docker login -u gitea-ci -p ${DRONE_GIT_PASSWORD} ${DRONE_REGISTRY}
- docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_BEFORE} || true
- docker build -f api.Dockerfile --cache-from ${DRONE_REGISTRY}/api:${DRONE_COMMIT_BEFORE} --cache-from ${DRONE_REGISTRY}/api:latest -t ${DRONE_REGISTRY}/api:latest -t ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA} ./evg-outbo-api
- docker push ${DRONE_REGISTRY}/api:latest
- docker push ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}
# Wdrożenie na środowisko staging
# - name: deploy-staging
# image: kroniak/ssh-client
# environment:
# STAGE_HOST: staging.prodat.pl
# STAGE_USER: deploy
# STAGE_KEY:
# from_secret: stage_ssh_key
# DRONE_REGISTRY: your-docker-registry
# commands:
# - mkdir -p ~/.ssh
# - chmod 700 ~/.ssh
# - echo "${STAGE_KEY}" > ~/.ssh/id_rsa
# - chmod 600 ~/.ssh/id_rsa
# - scp -r ./docker-compose.staging.yml ${STAGE_USER}@${STAGE_HOST}:~/docker-compose.yml
# - >
# ssh ${STAGE_USER}@${STAGE_HOST} << EOF
# docker login -u gitea-ci -p your-password ${DRONE_REGISTRY}
# docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}
# docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}
# docker-compose rm --force backend
# docker-compose rm --force frontend
# docker-compose up -d backend frontend
# EOF
- name: deploy-production
image: docker:latest
environment:
DRONE_REGISTRY: your-docker-registry
services:
- name: docker
image: docker:dind
commands:
- docker login -u gitea-ci -p your-password ${DRONE_REGISTRY}
- docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}
- docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}
- sed -i -e "s#COMPOSE_BACKEND_IMAGE=.*#COMPOSE_BACKEND_IMAGE=${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}#" .env
- sed -i -e "s#COMPOSE_FRONTEND_IMAGE=.*#COMPOSE_FRONTEND_IMAGE=${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}#" .env
- docker-compose rm --force backend frontend
- docker-compose up -d backend frontend