Skip to content

Instantly share code, notes, and snippets.

@ramingar
Last active March 15, 2022 13:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ramingar/6b5245acb20dcb96f9a775d08070e8ac to your computer and use it in GitHub Desktop.
Save ramingar/6b5245acb20dcb96f9a775d08070e8ac to your computer and use it in GitHub Desktop.
Script para despliegues automatizados (https) #git #continuos delivery #deploy #ssh

Este script solo se encarga de lanzar los push al repo de PROD (o el entorno que se decida).

La configuración se hará en la máquina desde la que se lanzará. Primero, hay que guardar las credenciales, para ello:

git config --global credential.helper store

Esto prepara al git para que las credenciales se guarden en un fichero .git-credentials en el /home/<user>/.git-credentials del usuario que ejecute la instrucción. El próximo push tratará de buscar en ese archivo si se tienen almacenadas credenciales para poder conectar al repo remoto y, si no, se pedirá por pantalla las credenciales (como normalmente) y estas se guardarán en este archivo. La próxima vez no se volverán a pedir.

Hay que tener en cuenta dos cosas:

  • El fichero guarda las credenciales en texto plano (hay que proteger el archivo via seguridad del OS, esto no se diferencia mucho del id_rsa que se guarda en ~/.ssh/id_rsa).
  • Solo funciona cuando el protocolo usado en el push es https (por ej., para repos privados, que se usa ssh, no funcionará).

Por último, el script que lanzará todos deployments contendrá lo siguiente (~/deploy-all.sh):

#!/bin/sh

sh ./deploy-to-program1.sh &  PID_program1=$!
sh ./deploy-to-program2.sh &  PID_program2=$!

wait PID_program1
echo 'Deployment PID_program1 complete!!'
wait PID_program2
echo 'Deployment PID_program2 complete!!'
echo 'Deployment COMPLETE!!'

Y en la misma carpeta se encontrará cada uno de los despliegues de cada programa. Por ej., el de program1 tendrá lo siguiente (~/deploy-to-program1.sh):

#!/bin/sh

git -C /home/user/projects/program1 push PROD master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment