Loading Dockerfile +2 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ FROM docker:latest LABEL maintainer="info@redmic.es" ENV DOCKER_COMPOSE_VERSION=1.21.2 \ ALPINE_GLIBC_PACKAGE_VERSION="2.27-r0" \ ALPINE_GLIBC_PACKAGE_VERSION="2.28-r0" \ ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \ LANG=C.UTF-8 Loading @@ -12,7 +12,7 @@ RUN ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ wget \ "https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub" \ "https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub" \ -O "/etc/apk/keys/sgerrand.rsa.pub" && \ wget \ "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ Loading script/_check-deploy.sh +14 −7 Original line number Diff line number Diff line #!/bin/sh SERVICES_TO_CHECK="${SERVICES_TO_CHECK:-${SERVICE}}" SERVICES_TO_CHECK="${SERVICES_TO_CHECK:-${STACK:-${SERVICE}}}" for serviceToCheck in ${SERVICES_TO_CHECK}; echo -e "\n${INFO_COLOR}Checking deployment of services [ ${SERVICES_TO_CHECK} ]..${NULL_COLOR}\n" for serviceToCheck in ${SERVICES_TO_CHECK} do echo -e "\n${INFO_COLOR}Checking deployment of service ${serviceToCheck}..${NULL_COLOR}" echo -e " ${INFO_COLOR}retries ${STATUS_CHECK_RETRIES}, interval ${STATUS_CHECK_INTERVAL}, min. hits \ ${STATUS_CHECK_MIN_HITS}${NULL_COLOR}\n" checkDeployCmd="\ docker stack ls > /dev/null 2> /dev/null ; \ if [ \"\${?}\" -eq \"0\" ] ; \ Loading @@ -13,7 +19,7 @@ do hits=0 && \ for i in \$(seq 1 ${STATUS_CHECK_RETRIES}) ; \ do \ echo \"Checking service ${serviceToCheck} status, try \${i}/${STATUS_CHECK_RETRIES} ...\" && \ echo -e \" try \${i}/${STATUS_CHECK_RETRIES} .. \\c\" && \ if [ \"\${SWARM_MODE}\" = true ] ; \ then \ stackServices=\$(docker service ls -f name=${serviceToCheck} --format '{{.Replicas}}') ; \ Loading @@ -38,7 +44,7 @@ do hits=\$((\${hits} + 1)) && \ if [ \"\${hits}\" -eq \"${STATUS_CHECK_MIN_HITS}\" ] ; \ then \ echo -e \"${PASS_COLOR}Service ${serviceToCheck} is running!${NULL_COLOR}\" && \ echo -e \"\\n${PASS_COLOR}Service ${serviceToCheck} is running!${NULL_COLOR}\" && \ echo -e \" got ${PASS_COLOR}\${hits}/${STATUS_CHECK_MIN_HITS}${NULL_COLOR} status hits\" && \ exit 0 ; \ fi ; \ Loading @@ -47,9 +53,10 @@ do fi ; \ sleep ${STATUS_CHECK_INTERVAL} ; \ done ; \ echo -e \"${FAIL_COLOR}Service ${serviceToCheck} is not running!${NULL_COLOR}\" && \ echo -e \"\\n${FAIL_COLOR}Service ${serviceToCheck} is not running!${NULL_COLOR}\" && \ echo -e \" got ${FAIL_COLOR}\${hits}/${STATUS_CHECK_MIN_HITS}${NULL_COLOR} status hits\" && \ exit 1 \ " ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${checkDeployCmd}" done script/_definitions.sh +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ STATUS_CHECK_INTERVAL="${STATUS_CHECK_INTERVAL:-5}" STATUS_CHECK_DELAY="${STATUS_CHECK_DELAY:-20}" STATUS_CHECK_MIN_HITS="${STATUS_CHECK_MIN_HITS:-3}" INFO_COLOR='\033[0;36m' FAIL_COLOR='\033[0;31m' PASS_COLOR='\033[0;32m' NULL_COLOR='\033[0m' Loading script/_do-deploy.sh +5 −4 Original line number Diff line number Diff line #!/bin/sh echo -e "\n${INFO_COLOR}Deploying at remote target..${NULL_COLOR}\n" deployCmd="\ cd ${SERVICE_HOME} && \ cd ${DEPLOY_HOME} && \ docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} && \ docker stack ls > /dev/null 2> /dev/null ; \ if [ \"\${?}\" -ne \"0\" ] ; \ Loading @@ -12,12 +14,11 @@ deployCmd="\ docker-compose up -d ${SERVICE} && \ rm ${DEFAULT_DEPLOY_FILES} ; \ else \ docker stack rm ${SERVICE} && \ composeFileSplitted=\$(echo ${COMPOSE_FILE} | sed 's/:/ -c /g') && \ env -i \$(grep -v '^#\\| ' .env | xargs) \ docker stack deploy -c \${composeFileSplitted} --prune --with-registry-auth ${SERVICE} && \ docker stack deploy -c \${composeFileSplitted} --prune --with-registry-auth ${STACK:-${SERVICE}} && \ rm ${DEFAULT_DEPLOY_FILES} ; \ fi\ " ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${deployCmd}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${deployCmd}" script/_prepare-deploy.sh +10 −8 Original line number Diff line number Diff line #!/bin/sh echo -e "\n${INFO_COLOR}Preparing deploy configuration and resources..${NULL_COLOR}\n" # Se comprueba si se despliega desde dentro de 'deploy' o desde la raíz del proyecto. if [ -d "${DEPLOY_DIR_NAME}" ] ; if [ -d "${DEPLOY_DIR_NAME}" ] then cd "${DEPLOY_DIR_NAME}" deployFiles="-r ./." Loading @@ -11,8 +13,8 @@ fi # Los argumentos pasados (opcionales) se tratan como variables de entorno. # Se prepara el fichero .env para usarlas en la máquina destino y se setean en este entorno también. envDefs="SERVICE=${SERVICE}" for arg in "${@}"; envDefs="SERVICE=${SERVICE}\\nSTACK=${STACK}" for arg in "${@}" do export "${arg}" envDefs="${envDefs}\\n${arg}" Loading @@ -21,17 +23,17 @@ echo -e ${envDefs} >> .env # Antes de continuar, se comprueba que la configuración de despliegue sea válida. docker-compose config > /dev/null if [ "${?}" -ne "0" ] ; if [ "${?}" -ne "0" ] then echo -e "${FAIL_COLOR}Invalid docker-compose configuration!${NULL_COLOR}" exit 1 fi SERVICE_HOME="${DEPLOY_PATH}/docker/${SERVICE}" DEPLOY_HOME="${DEPLOY_PATH}/docker/${STACK:-${SERVICE}}" # Se crea el directorio donde guardar los ficheros de despliegue del servicio. CREATE_DIR_CMD="mkdir -p ${SERVICE_HOME}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" ${CREATE_DIR_CMD} createDirCmd="mkdir -p ${DEPLOY_HOME}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" ${createDirCmd} # Se envían a su destino los ficheros de despliegue del servicio. scp ${SSH_PARAMS} ${deployFiles} "${SSH_REMOTE}:${SERVICE_HOME}" scp ${SSH_PARAMS} ${deployFiles} "${SSH_REMOTE}:${DEPLOY_HOME}" Loading
Dockerfile +2 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ FROM docker:latest LABEL maintainer="info@redmic.es" ENV DOCKER_COMPOSE_VERSION=1.21.2 \ ALPINE_GLIBC_PACKAGE_VERSION="2.27-r0" \ ALPINE_GLIBC_PACKAGE_VERSION="2.28-r0" \ ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \ LANG=C.UTF-8 Loading @@ -12,7 +12,7 @@ RUN ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ wget \ "https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub" \ "https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub" \ -O "/etc/apk/keys/sgerrand.rsa.pub" && \ wget \ "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ Loading
script/_check-deploy.sh +14 −7 Original line number Diff line number Diff line #!/bin/sh SERVICES_TO_CHECK="${SERVICES_TO_CHECK:-${SERVICE}}" SERVICES_TO_CHECK="${SERVICES_TO_CHECK:-${STACK:-${SERVICE}}}" for serviceToCheck in ${SERVICES_TO_CHECK}; echo -e "\n${INFO_COLOR}Checking deployment of services [ ${SERVICES_TO_CHECK} ]..${NULL_COLOR}\n" for serviceToCheck in ${SERVICES_TO_CHECK} do echo -e "\n${INFO_COLOR}Checking deployment of service ${serviceToCheck}..${NULL_COLOR}" echo -e " ${INFO_COLOR}retries ${STATUS_CHECK_RETRIES}, interval ${STATUS_CHECK_INTERVAL}, min. hits \ ${STATUS_CHECK_MIN_HITS}${NULL_COLOR}\n" checkDeployCmd="\ docker stack ls > /dev/null 2> /dev/null ; \ if [ \"\${?}\" -eq \"0\" ] ; \ Loading @@ -13,7 +19,7 @@ do hits=0 && \ for i in \$(seq 1 ${STATUS_CHECK_RETRIES}) ; \ do \ echo \"Checking service ${serviceToCheck} status, try \${i}/${STATUS_CHECK_RETRIES} ...\" && \ echo -e \" try \${i}/${STATUS_CHECK_RETRIES} .. \\c\" && \ if [ \"\${SWARM_MODE}\" = true ] ; \ then \ stackServices=\$(docker service ls -f name=${serviceToCheck} --format '{{.Replicas}}') ; \ Loading @@ -38,7 +44,7 @@ do hits=\$((\${hits} + 1)) && \ if [ \"\${hits}\" -eq \"${STATUS_CHECK_MIN_HITS}\" ] ; \ then \ echo -e \"${PASS_COLOR}Service ${serviceToCheck} is running!${NULL_COLOR}\" && \ echo -e \"\\n${PASS_COLOR}Service ${serviceToCheck} is running!${NULL_COLOR}\" && \ echo -e \" got ${PASS_COLOR}\${hits}/${STATUS_CHECK_MIN_HITS}${NULL_COLOR} status hits\" && \ exit 0 ; \ fi ; \ Loading @@ -47,9 +53,10 @@ do fi ; \ sleep ${STATUS_CHECK_INTERVAL} ; \ done ; \ echo -e \"${FAIL_COLOR}Service ${serviceToCheck} is not running!${NULL_COLOR}\" && \ echo -e \"\\n${FAIL_COLOR}Service ${serviceToCheck} is not running!${NULL_COLOR}\" && \ echo -e \" got ${FAIL_COLOR}\${hits}/${STATUS_CHECK_MIN_HITS}${NULL_COLOR} status hits\" && \ exit 1 \ " ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${checkDeployCmd}" done
script/_definitions.sh +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ STATUS_CHECK_INTERVAL="${STATUS_CHECK_INTERVAL:-5}" STATUS_CHECK_DELAY="${STATUS_CHECK_DELAY:-20}" STATUS_CHECK_MIN_HITS="${STATUS_CHECK_MIN_HITS:-3}" INFO_COLOR='\033[0;36m' FAIL_COLOR='\033[0;31m' PASS_COLOR='\033[0;32m' NULL_COLOR='\033[0m' Loading
script/_do-deploy.sh +5 −4 Original line number Diff line number Diff line #!/bin/sh echo -e "\n${INFO_COLOR}Deploying at remote target..${NULL_COLOR}\n" deployCmd="\ cd ${SERVICE_HOME} && \ cd ${DEPLOY_HOME} && \ docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} && \ docker stack ls > /dev/null 2> /dev/null ; \ if [ \"\${?}\" -ne \"0\" ] ; \ Loading @@ -12,12 +14,11 @@ deployCmd="\ docker-compose up -d ${SERVICE} && \ rm ${DEFAULT_DEPLOY_FILES} ; \ else \ docker stack rm ${SERVICE} && \ composeFileSplitted=\$(echo ${COMPOSE_FILE} | sed 's/:/ -c /g') && \ env -i \$(grep -v '^#\\| ' .env | xargs) \ docker stack deploy -c \${composeFileSplitted} --prune --with-registry-auth ${SERVICE} && \ docker stack deploy -c \${composeFileSplitted} --prune --with-registry-auth ${STACK:-${SERVICE}} && \ rm ${DEFAULT_DEPLOY_FILES} ; \ fi\ " ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${deployCmd}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" "${deployCmd}"
script/_prepare-deploy.sh +10 −8 Original line number Diff line number Diff line #!/bin/sh echo -e "\n${INFO_COLOR}Preparing deploy configuration and resources..${NULL_COLOR}\n" # Se comprueba si se despliega desde dentro de 'deploy' o desde la raíz del proyecto. if [ -d "${DEPLOY_DIR_NAME}" ] ; if [ -d "${DEPLOY_DIR_NAME}" ] then cd "${DEPLOY_DIR_NAME}" deployFiles="-r ./." Loading @@ -11,8 +13,8 @@ fi # Los argumentos pasados (opcionales) se tratan como variables de entorno. # Se prepara el fichero .env para usarlas en la máquina destino y se setean en este entorno también. envDefs="SERVICE=${SERVICE}" for arg in "${@}"; envDefs="SERVICE=${SERVICE}\\nSTACK=${STACK}" for arg in "${@}" do export "${arg}" envDefs="${envDefs}\\n${arg}" Loading @@ -21,17 +23,17 @@ echo -e ${envDefs} >> .env # Antes de continuar, se comprueba que la configuración de despliegue sea válida. docker-compose config > /dev/null if [ "${?}" -ne "0" ] ; if [ "${?}" -ne "0" ] then echo -e "${FAIL_COLOR}Invalid docker-compose configuration!${NULL_COLOR}" exit 1 fi SERVICE_HOME="${DEPLOY_PATH}/docker/${SERVICE}" DEPLOY_HOME="${DEPLOY_PATH}/docker/${STACK:-${SERVICE}}" # Se crea el directorio donde guardar los ficheros de despliegue del servicio. CREATE_DIR_CMD="mkdir -p ${SERVICE_HOME}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" ${CREATE_DIR_CMD} createDirCmd="mkdir -p ${DEPLOY_HOME}" ssh ${SSH_PARAMS} "${SSH_REMOTE}" ${createDirCmd} # Se envían a su destino los ficheros de despliegue del servicio. scp ${SSH_PARAMS} ${deployFiles} "${SSH_REMOTE}:${SERVICE_HOME}" scp ${SSH_PARAMS} ${deployFiles} "${SSH_REMOTE}:${DEPLOY_HOME}"