Commit 07faa073 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Actualiza CI/CD, se adapta a nuevo servidor web

Usa plantillas para gitlab-ci, actualiza definición de despliegue.
Apunta al nuevo servicio de nginx-proxy (separado en http y https, solo
nos interesa aquí el segundo).
parent b3af3275
Loading
Loading
Loading
Loading
+15 −96
Original line number Diff line number Diff line
include:
  - project: 'redmic-project/gitlab-ci-templates'
    ref: master
    file: '/deployment.yml'

stages:
  - deploy
  - maintenance

image: registry.gitlab.com/redmic-project/docker/docker-deploy:latest

variables:
  DOCKER_DRIVER: overlay2
  STACK: ${CI_PROJECT_NAME}
  SERVICES_TO_CHECK: ${CI_PROJECT_NAME}_${CI_PROJECT_NAME}
  STATUS_CHECK_DELAY: 10

services:
  - docker:dind

deploy-supporting-branch-develop:
  stage: deploy
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    CERT_NAME: ${DEV_CERT_NAME}
    DOMAIN_LIST: ${DEV_DOMAIN_LIST}
    EMAIL_LIST: ${DEV_EMAIL_LIST}
  script:
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} CERT_NAME=${CERT_NAME} DOMAIN_LIST=${DOMAIN_LIST}
      EMAIL_LIST=${EMAIL_LIST}
  environment:
    name: dev
  only:
    - branches
  except:
    - master
    - schedules
  when: manual
  STACK: gateway

deploy-stable-branch-develop:
  stage: deploy
.deploy:
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    CERT_NAME: ${DEV_CERT_NAME}
    DOMAIN_LIST: ${DEV_DOMAIN_LIST}
    EMAIL_LIST: ${DEV_EMAIL_LIST}
  script:
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} CERT_NAME=${CERT_NAME} DOMAIN_LIST=${DOMAIN_LIST}
      EMAIL_LIST=${EMAIL_LIST}
  environment:
    name: dev
  only:
    - master
  except:
    - schedules
  when: manual
    SERVICES_TO_CHECK: ${STACK}_${CI_PROJECT_NAME}

deploy-supporting-branch-production:
  stage: deploy
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    CERT_NAME: ${PRO_CERT_NAME}
    DOMAIN_LIST: ${PRO_DOMAIN_LIST}
    EMAIL_LIST: ${PRO_EMAIL_LIST}
  script:
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} CERT_NAME=${CERT_NAME} DOMAIN_LIST=${DOMAIN_LIST}
      EMAIL_LIST=${EMAIL_LIST}
  environment:
    name: pro
  only:
    - branches
  except:
    - master
    - schedules
  when: manual

deploy-stable-branch-production:
  stage: deploy
.scheduled-renew:
  stage: maintenance
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    CERT_NAME: ${PRO_CERT_NAME}
    DOMAIN_LIST: ${PRO_DOMAIN_LIST}
    EMAIL_LIST: ${PRO_EMAIL_LIST}
  script:
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} CERT_NAME=${CERT_NAME} DOMAIN_LIST=${DOMAIN_LIST}
      EMAIL_LIST=${EMAIL_LIST}
  environment:
    name: pro
    SERVICE: ${STACK}_${CI_PROJECT_NAME}
  script: relaunch.sh
  only:
    - master
  except:
    - schedules
  when: manual

scheduled-renew-develop:
  stage: maintenance
scheduled-renew-development:
  extends: .scheduled-renew
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    SERVICE: ${CI_PROJECT_NAME}_${CI_PROJECT_NAME}
  script: relaunch.sh
  only:
    - schedules

scheduled-renew-production:
  stage: maintenance
  extends: .scheduled-renew
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    SERVICE: ${CI_PROJECT_NAME}_${CI_PROJECT_NAME}
  script: relaunch.sh
  only:
    - schedules
+1 −1
Original line number Diff line number Diff line
SERVER_SERVICE=nginx-proxy_nginx-proxy
SERVER_SERVICE=gateway_nginx-proxy-https
CERTBOT_CONFIG_VOL_NAME=certbot-config-vol
CERTBOT_WORK_VOL_NAME=certbot-work-vol
CERTBOT_LOGS_VOL_NAME=certbot-logs-vol
+0 −7
Original line number Diff line number Diff line
version: '3.5'

services:
  certificates-manager:
    deploy:
      placement:
        constraints:
          - node.role == manager
+23 −19
Original line number Diff line number Diff line
@@ -2,23 +2,23 @@ version: '3.5'

services:
  certificates-manager:
    image: docker:latest
    image: ${IMAGE_NAME:-docker}:${IMAGE_TAG:-latest}
    command: manage-certificates
    environment:
      - CERT_NAME
      - DOMAIN_LIST
      - EMAIL_LIST
      - SERVER_SERVICE
      - CERTBOT_CONFIG_VOL_NAME
      - CERTBOT_WORK_VOL_NAME
      - CERTBOT_LOGS_VOL_NAME
      - ACME_VOL_NAME
      - PUSHGATEWAY_HOST
      CERT_NAME:
      DOMAIN_LIST:
      EMAIL_LIST:
      SERVER_SERVICE:
      CERTBOT_CONFIG_VOL_NAME:
      CERTBOT_WORK_VOL_NAME:
      CERTBOT_LOGS_VOL_NAME:
      ACME_VOL_NAME:
      PUSHGATEWAY_HOST:
    networks:
      - metric-net
      metric-net:
    volumes:
      - config-vol:/certs
      - lib-vol:/var/lib/docker
      - docker-vol:/var/lib/docker
      - /var/run/docker.sock:/var/run/docker.sock
    configs:
      - source: manage-certificates
@@ -27,14 +27,18 @@ services:
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        condition: none
      resources:
        limits:
          cpus: '0.5'
          memory: 64M
          cpus: '${RESOURCES_LIMITS_CPUS:-0.5}'
          memory: ${RESOURCES_LIMITS_MEMORY:-64M}
        reservations:
          memory: 16M
          cpus: '${RESOURCES_RESERVATIONS_CPUS:-0.001}'
          memory: ${RESOURCES_RESERVATIONS_MEMORY:-16M}

networks:
  metric-net:
@@ -45,16 +49,16 @@ volumes:
  config-vol:
    name: ${CERTBOT_CONFIG_VOL_NAME}

  docker-vol:
    name: ${DOCKER_VOL_NAME:-certificates-manager-docker-vol}

  work-vol:
    name: ${CERTBOT_WORK_VOL_NAME}

  logs-vol:
    name: ${CERTBOT_LOGS_VOL_NAME}

  lib-vol:
    name: ${CERTIFICATES_MANAGER_LIB_VOL_NAME:-certificates-manager-lib-vol}

configs:
  manage-certificates:
    name: ${MANAGE_CERTIFICATES_NAME:-manage-certificates}
    name: ${MANAGE_CERTIFICATES_NAME:-certificates-manager-script}
    file: ./scripts/manage-certificates.sh