Jenkins from the command line
el que tiene las de ganar es el proyecto de Netflix.
esta hecho en perl, y tiene un ejecutable estatico. Este ejecutable estatico lo he renombrado a jenkins-cli, y lo he situado en /usr/local/bin/
tambien es necesario un fichero ~/.jenkins como:
#baseuri: http://localhost baseuri: http://<hostname>/jenkins #jobs: # - <default jobs> stoplight: 1
algunos comandos:
- para ver todos los trabajos existentes:
./jenkins-cli ls --all --baseuri=http://localhost
- para ver el “console output” de todas las tareas:
./jenkins-cli tail --all --baseuri=http://localhost
- ver lista de tareas pendientes:
./jenkins-cli q --all --baseuri=http://localhost
- ver la lista de tareas ya hechas:
./jenkins-cli history --all --baseuri=http://localhost
- obtener el fichero XML de definicion de un job:
./jenkins-cli conf test01 --baseuri=http://localhost
- crear un nuevo job, a partir de un fichero de configuracion test01.xml
./jenkins-cli create test02 test01.xml --baseuri=http://localhost
- lanzar un job:
./jenkins-cli start test02 --baseuri=http://localhost
- hacer login:
./jenkins-cli login --password
…
para que funcione el login sobre la version de Jenkins que tenemos en produccion ( 2.7.3 ), hay que aplicar este patch:
11:59 $ diff jenkins-static ../../jenkins-cli/jenkins-static 597c597 < if ( $res->decoded_content =~ />log in</ ) { --- > if (index($res->decoded_content, "log in") == -1) {
y listo!
…
para hacer busquedas con cadenas,
jenkins-cli ls --all reports
muestra todos los jobs que contienen la cadena “reports”. Si solo tenemos un resultado, podemos ver el historico de builds con
jenkins-cli hist --all reports
…
el problema se plantea si queremos hacer un build con parametros…
jenkins-cli start test01 --param param01=12 --param param02='casa de'
cada pareja de parametro y valor se incluye en un –param, y listo!
…
ahora lo siguiente seria ver la lista de parametros de cada job, y preparar scripts locales para lanzar cada uno de ellos….
…aunque bien pensado, casi seria mas razonable lanzar los Ansibles directamente, pero entonces no habria en mismo nivel de traza uniforme…
…
solo faltaria tener un “build history” para que la herramienta fuera perfecta.