He estado usando Fabric con éxito desde mi máquina local por un time y finalmente tengo un script de implementación decente que me gustaría llamar durante un gancho de Git post-receive. Para lograr esto, tengo el siguiente código, que se verifica hasta el command fab
:
deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY if [[ $deploy ]] ; then TMPFILE="/tmp/$(basename $0).$$.tmp" git cat-file blob release:fabfile.py > $TMPFILE fab -f $TMPFILE deploy:servername.mycompany.com rm $TMPFILE fi
Revisé cada paso del path y estoy seguro de que TMPFILE se está creando correctamente (contiene mi file fab). Ejecutar manualmente los pasos anteriores con un file compuesto en / tmp / produce el mismo comportamiento.
La peor parte es que me "restring" que puedo usar -f
para especificar un fabfile … que soy.
Esto es porque quiere un file con el .py al final. Cambie su file temporal para usar esta extensión de file y funcionará. Es muy probable que Fab quiera permitir que las personas usen classs de directory de estilo python, ya que fabfile/__init__.py
sería recogido con un -f fabfile
Ejemplo de este comportamiento aquí:
╭─mgoose@Macintosh ~ ╰─$ fab -f tmp.py test [localhost] local: whoami mgoose Done. ╭─mgoose@Macintosh ~ ╰─$ mv tmp.py tmp.py.tmp ╭─mgoose@Macintosh ~ ╰─$ fab -f tmp.py.tmp test Fatal error: Couldn't find any fabfiles! Remember that -f can be used to specify fabfile path, and use -h for help. Aborting. ╭─mgoose@Macintosh ~ ╰─$ cat tmp.py.tmp 1 ↵ from fabric.api import local, task @task def test(): local("whoami")