114 lines
4.4 KiB
YAML
114 lines
4.4 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
|
|
|
|
# Wdrożenie na środowisko produkcyjne
|
|
- name: deploy-production
|
|
image: kroniak/ssh-client
|
|
environment:
|
|
PROD_HOST: prodat.outbo.pl
|
|
PROD_USER: deploy
|
|
PROD_KEY:
|
|
from_secret: prod_ssh_key
|
|
DRONE_REGISTRY: your-docker-registry
|
|
commands:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo "${PROD_KEY}" > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- scp -r ./docker-compose.prod.yml ${PROD_USER}@${PROD_HOST}:~/docker-compose.yml
|
|
- >
|
|
ssh ${PROD_USER}@${PROD_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
|