Commit addf8934 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Flexibiliza el uso de compose en build y deploy

Añade retrocompatibilidad con nomenclaturas de ficheros compose
antiguos, al tiempo que autodescubre la ubicación de los ficheros
compose de cada proyecto buscando en los lugares donde es más probable
que se encuentren.

En cualquier caso, se respeta la asignación de valores directos desde
variables, anulando esta nueva funcionalidad si fuera necesario.
parent 749204d2
Loading
Loading
Loading
Loading
+37 −2
Original line number Diff line number Diff line
@@ -6,9 +6,42 @@
    DOCKER_DEPLOY_IMAGE_NAME: redmic/docker-docker-deploy
    DOCKER_DEPLOY_IMAGE_TAG: latest
    STACK: ${CI_PROJECT_NAME}
    DEPLOY_DIR_NAME: deploy
    REGISTRY_URL: ${CI_REGISTRY}
    REGISTRY_USER: ${CI_DEPLOY_USER}
    REGISTRY_PASS: ${CI_DEPLOY_PASSWORD}
  before_script:
    - >
      if [ -z ${COMPOSE_FILE} ];
      then
        firstNewComposeFile=$(echo "${NEW_COMPOSE_FILE}" | cut -d ':' -f 1);
        newSingleComposeFile=compose.yaml;
        firstOldComposeFile=$(echo "${OLD_COMPOSE_FILE}" | cut -d ':' -f 1);
        oldSingleComposeFile=docker-compose.yml;
        if [ -f ${DEPLOY_DIR_NAME}/${firstNewComposeFile} ];
        then
          echo "Detected '${firstNewComposeFile}' compose file, nice!";
          COMPOSE_FILE="${NEW_COMPOSE_FILE}";
        elif [ -f ${DEPLOY_DIR_NAME}/${newSingleComposeFile} ];
        then
          echo "Detected '${newSingleComposeFile}' compose file, nice!";
          COMPOSE_FILE="${newSingleComposeFile}";
        elif [ -f ${DEPLOY_DIR_NAME}/${firstOldComposeFile} ];
        then
          echo "Detected '${firstOldComposeFile}' compose file (old naming)";
          COMPOSE_FILE="${OLD_COMPOSE_FILE}";
        elif [ -f ${DEPLOY_DIR_NAME}/${oldSingleComposeFile} ];
        then
          echo "Detected '${oldSingleComposeFile}' compose file (old naming)";
          COMPOSE_FILE="${oldSingleComposeFile}";
        else
          echo "No compose file specified or detected, using docker-deploy default for COMPOSE_FILE";
        fi;
        if [ ! -z ${COMPOSE_FILE} ];
        then
          echo "Automatically set COMPOSE_FILE to '${COMPOSE_FILE}'";
        fi;
      fi;
  script: deploy

.deploy-development:
@@ -17,7 +50,8 @@
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    SSH_PORT: ${DEV_SSH_PORT}
    DEPLOY_KEY: ${DEV_DEPLOY_KEY}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    NEW_COMPOSE_FILE: compose.tmpl.yaml:compose.dev.yaml
    OLD_COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
    DD_PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
  environment:
@@ -29,7 +63,8 @@
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    SSH_PORT: ${PRO_SSH_PORT}
    DEPLOY_KEY: ${PRO_DEPLOY_KEY}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    NEW_COMPOSE_FILE: compose.tmpl.yaml:compose.prod.yaml
    OLD_COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    PUBLIC_HOSTNAME: ${PRO_PUBLIC_HOSTNAME}
    DD_PUBLIC_HOSTNAME: ${PRO_PUBLIC_HOSTNAME}
  environment:
+45 −1
Original line number Diff line number Diff line
@@ -14,7 +14,51 @@
  extends: .docker-operations
  stage: package
  variables:
    COMPOSE_FILE_NAME: docker-compose.tmpl.yml:docker-compose.dev.yml
    NEW_COMPOSE_FILE_NAME: compose.tmpl.yaml:compose.dev.yaml
    OLD_COMPOSE_FILE_NAME: docker-compose.tmpl.yml:docker-compose.dev.yml
  before_script:
    - >
      for directory in ${COMPOSE_PROJECT_DIRECTORY:-build deploy .};
      do
        if [ -z ${COMPOSE_FILE_NAME} ];
        then
          firstNewComposeFile=$(echo "${NEW_COMPOSE_FILE_NAME}" | cut -d ':' -f 1);
          newSingleComposeFile=compose.yaml;
          firstOldComposeFile=$(echo "${OLD_COMPOSE_FILE_NAME}" | cut -d ':' -f 1);
          oldSingleComposeFile=docker-compose.yml;
          if [ -f ${directory}/${firstNewComposeFile} ];
          then
            echo "Detected '${directory}/${firstNewComposeFile}' compose file, nice!";
            COMPOSE_FILE_NAME="${NEW_COMPOSE_FILE_NAME}";
            COMPOSE_PROJECT_DIRECTORY="${directory}";
          elif [ -f ${directory}/${newSingleComposeFile} ];
          then
            echo "Detected '${directory}/${newSingleComposeFile}' compose file, nice!";
            COMPOSE_FILE_NAME="${newSingleComposeFile}";
            COMPOSE_PROJECT_DIRECTORY="${directory}";
          elif [ -f ${directory}/${firstOldComposeFile} ];
          then
            echo "Detected '${directory}/${firstOldComposeFile}' compose file (old naming)";
            COMPOSE_FILE_NAME="${OLD_COMPOSE_FILE_NAME}";
            COMPOSE_PROJECT_DIRECTORY="${directory}";
          elif [ -f ${directory}/${oldSingleComposeFile} ];
          then
            echo "Detected '${directory}/${oldSingleComposeFile}' compose file (old naming)";
            COMPOSE_FILE_NAME="${oldSingleComposeFile}";
            COMPOSE_PROJECT_DIRECTORY="${directory}";
          else
            echo "No compose file detected at '${directory}/'";
          fi;
          if [ ! -z ${COMPOSE_FILE_NAME} ];
          then
            echo "Automatically set COMPOSE_FILE_NAME to '${COMPOSE_FILE_NAME}' and COMPOSE_PROJECT_DIRECTORY to '${COMPOSE_PROJECT_DIRECTORY}'";
          fi;
        fi;
      done;
      if [ -z ${COMPOSE_FILE_NAME} ];
      then
        echo "No compose file specified or detected, using docker-build default for COMPOSE_FILE_NAME";
      fi;
  script: build

.docker-tag: