Automatizar el flujo de trabajo en Shell

Automatizar el flujo de trabajo en Shell

Viniendo de las interfaces GUI, finalmente he llegado a comprender el poder de tener todo canalizado en texto, pero realmente no sé cómo usar todo ese poder todavía.

Me di cuenta de que el flujo de trabajo para un proyecto en particular es el siguiente...

# compile repo 1
cd ~/workspace/repo1
make -B
# deploys compiled code into repo2
make deploy

# commit repo 1
cd ~/workspace/repo1
git add .
git commit -m "changes"
git push origin master

# commit repo 2
cd ~/workspace/repo2
git add .
git commit -m "changes"
git push origin master

Mi pregunta no es tanto cómo lograr esto, sino ¿cuál es la herramienta adecuada para esto? Al leer, parece que lo que necesito es un script Bash, pero me gustaría saberlo de los expertos.

Respuesta1

Tienes un muy buen comienzo al escribirlo todo en un solo lugar.

Copie todo eso en un archivo de texto (por ejemplo, workflow.shpero el nombre realmente no importa) y luego coloque estoen la primera línea del archivo:

#!/bin/sh

Ahora tienes un script de shell. Hazlo ejecutable:

chmod +x workflow.sh

Ahora puedes ejecutarlo como un comando:

./workflow.sh

Ejecutará cada uno de esos comandos en orden simplemente llamando al flujo de trabajo.

Ahora eres un programador de sistemas principiante. Sólo puedes subir desde allí.

Actualizar

Para especificarcambiossin tener que editar el script cada vez que debes cambiar:

git commit -m "changes"

Leer:

git commit -m "$1"

Entonces puedes pasarcambioscomo argumento de línea de comando:

./workflow "Describe changes made"

Otras herramientas útiles son los alias y PATH. Puede crear un directorio especial (por ejemplo ~/bin) y colocar todos los scripts allí, agregar este directorio a su PATHvariable y no necesita escribir la ruta completa al script cada vez que desee ejecutarlo. En el caso de los alias, necesita crear un alias para cada secuencia de comandos; sin embargo, a veces el alias es más cómodo debido a que puede especificar diferentes parámetros de ejecución en él.

Respuesta2

Puedes organizar tu código con utilidades de Python:https://wiki.python.org/moin/FlowBasedProgramming

Otro paquete que no se mencionó anteriormente pero que sigue siendo prometedor es Snakemake.

información relacionada