tipos tag sirve qué para oneline nos log hace existen etiquetas eliminar cuando crear creamos git version-control cron fabric

git - oneline - ¿para qué nos sirve el sha-1 cuando creamos tags?



¿Cómo puedo controlar el control de versiones de mis proyectos? (2)

Así que aquí está mi mejor idea hasta ahora:

  • Todos mis proyectos viven en /web/project_name/
  • Cualquier proyecto que necesite cronjobs los pega en /web/project_name/cron
  • Al implementar, fab ejecuta lo siguiente en el servidor:

    find /web/ -maxdepth 2 -name cron | xargs cat | crontab

Esto consume cualquier archivo cron que encuentre en /web/ y los rellena en el crontab para mi usuario. Mejor aún, si tengo trabajos independientes del proyecto que quiero ejecutar, puedo pegarlos en /web/cron y ellos irán a la parte superior del crontab resultante.

Tengo un montón de proyectos que llevo a un servidor con git y fab. Son una carga de sitios de Django. Algunos de estos sitios tienen trabajos cron.

Me gustaría estar en una situación en la que pueda:

  • Gestione los trabajos cron del sitio editando un archivo localmente y ejecutando un comando fab (por ejemplo, fab save deploy como lo hago actualmente)

  • Haga que se instalen nuevos trabajos de forma remota (solo) y reemplace los trabajos anteriores (no quiero clonar trabajos cada vez)

  • Mantenga la misma configuración de tiempo altamente personalizable. No todos mis problemas pueden ser resueltos por @hourly.

¿Cuál es la mejor manera de abordar esto?

Soy consciente de cómo se implementan los trabajos cron en producción? pero parece que el objetivo es piratear el cronning en el script de estructura y (al menos en las respuestas) no hay consideración de que pueda haber más de un proyecto que necesite trabajos cron por usuario.

Estoy buscando algo que esté almacenado en el VCS (no empujo mi fabfile a git, y se comparte entre todos mis proyectos) que funcionará junto con otros trabajos en crontab. No es bueno si ProjectA y ProjectB sobrescriben los trabajos de los demás cada vez que los despliego.


No soy partidario de editar los trabajos cron de crontab o cron por usuario; Cualquiera que edite el crontab puede arruinar su implementación. En cambio, creo scripts que entran en /etc/cron.$interval que me permite implementarlos con Puppet (ver el tipo cron ) o con un simple comando cp .

Entonces, si necesito un script que se ejecute una vez por día, lo pongo en $project/cron/cron.daily/$project si lo instalo sin Puppet.

Alternativamente, si realmente necesita fusionar crontabs, debe agregar un encabezado y un pie de página a cada script, para que sea fácil ver de dónde proviene alguna parte del crontab. El encabezado / pie de página también le permite agregar / eliminar automáticamente cada script.

Nunca debe reemplazar todo el crontab porque un día alguien lo editará manualmente. La edición funcionará hasta que vuelva a implementar, momento en el que fallará de forma repentina.

[Artículo más largo con guiones de títeres] [3].