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