devops/pipline/deploy_postgres-compose/deploy_postgres_compose.yml

111 lines
3.3 KiB
YAML

workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "push"
when: never
- when: always
variables:
GIT_CLEAN_FLAGS: -ffdx
ENV:
value: "dev"
options:
- "dev"
description: 'environment'
HOST:
value: "$APN2_HOST"
options:
- "$APN1_HOST"
- "$APN2_HOST"
- "$DBN1_HOST"
- "$DBN2_HOST"
description: 'host to deploy'
POSTGRESQL_HOSTNAME_NAME:
value: ""
description: 'hostname for postgresql/container_name'
POSTGRES_PORT:
value: ""
description: 'external port for postgresql_container'
PROXY_NETWORK:
value: "proxy"
description: 'network port for postgresql_container'
POSTGRES_DB:
value: ""
description: 'default DB postgresql instance'
POSTGRES_USER:
value: ""
description: 'default USER postgresql instance'
POSTGRES_PASSWORD:
value: ""
description: 'PASSWD for default USER postgresql instance'
include:
- project: 'sed/devops/services/gitlab-flow/ci-flow'
ref: v1.0.1
file: 'deploy_docker-compose-context.yml'
.set_docker_context_vars: &set-docker-context-vars
- |
case "$HOST" in
"$APN1_HOST")
export CA_FILE="$APN1_HOST_CA_FILE"
export CERT_FILE="$APN1_HOST_CERT_FILE"
export KEY_FILE="$APN1_HOST_KEY_FILE"
;;
"$APN2_HOST")
export CA_FILE="$APN2_HOST_CA_FILE"
export CERT_FILE="$APN2_HOST_CERT_FILE"
export KEY_FILE="$APN2_HOST_KEY_FILE"
;;
"$DBN1_HOST")
export CA_FILE="$DBN1_HOST_CA_FILE"
export CERT_FILE="$DBN1_HOST_CERT_FILE"
export KEY_FILE="$DBN1_HOST_KEY_FILE"
;;
"$DBN2_HOST")
export CA_FILE="$DBN2_HOST_CA_FILE"
export CERT_FILE="$DBN2_HOST_CERT_FILE"
export KEY_FILE="$DBN2_HOST_KEY_FILE"
;;
*)
echo "Unknown HOST: $HOST"
exit 1
;;
esac
.docker_login_stdin_base64: &docker-login-stdin-base64
- echo $REGISTRY_PASSWORD | base64 -d | docker login -u $REGISTRY_USER $REGISTRY --password-stdin
.docker_context_create: &docker-context-create
- docker context create ${CI_PROJECT_NAME}-${ENV} --docker "host=tcp://${HOST},ca=${CA_FILE},cert=${CERT_FILE},key=${KEY_FILE}"
.create_docker_volumes: &create-docker-volumes
- |
DOCKER_CONTEXT=${CI_PROJECT_NAME}-${ENV} docker run --rm \
-v ${DOCKER_DATA}/${POSTGRESQL_HOSTNAME_NAME}/data:/var/lib/pgpro/ent-16/data \
-v ${DOCKER_DATA}/${POSTGRESQL_HOSTNAME_NAME}/backups:/backups \
--user root \
sed-docker.artifacts.tn.tngrp.ru/ubi7:v7.3.6 \
sh -c "chown -R 26:26 /var/lib/pgpro/ent-16/data /backups"
.docker_context_rm: &docker-context-rm
- docker context rm ${CI_PROJECT_NAME}-${ENV} --force
deploy_compose:
extends: .deploy_from_registry
environment:
name: ${ENV}
variables:
DOCKER_HOST: ""
REGISTRY: $SED_DOCKER_REGISTRY
REGISTRY_USER: $SED_NEXUS_USER
REGISTRY_PASSWORD: $SED_NEXUS_PASS_BASE64
COMPOSE_FILES: -f ./docker-compose.yml
before_script:
- *set-docker-context-vars
- *docker-login-stdin-base64
- *docker-context-create
- *create-docker-volumes
- *docker-context-rm
tags:
- mmedo