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

Merge branch 'dev' into 'master'

Mejora salida de texto del proceso

See merge request redmic-project/docker/docker-deploy!6
parents 61f5bdef 2bfbd552
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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

@@ -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" \
+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\" ] ; \
@@ -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}}') ; \
@@ -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 ; \
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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'
+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\" ] ; \
@@ -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}"
+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 ./."
@@ -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}"
@@ -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