creando trabajos de jenkins con ansible

2 minutos de lectura

Estoy trabajando en un proyecto para implementar un servidor jenkins CI en centos7 usando ansible y tengo problemas para crear trabajos jenkins desde una plantilla xml usando ansible.

Todo funciona bien hasta ahora, pero ahora quiero poder crear trabajos y darles una configuración básica desde un archivo xml usando ansible. Mi solución fue el siguiente comando de jenkins-cli:

sudo java -jar jenkins-cli.jar -s http://localhost:8080 create-job Job_test1 < Job_test1.xml

esto funciona perfectamente cuando se ingresa manualmente en el cuadro centos7, pero cuando lo pongo en ansible y lo ejecuto:

- name: create jenkins jobs with xml files
  sudo: yes
  command: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs

da el siguiente mensaje de error:

stderr: Too many arguments: <
java -jar jenkins-cli.jar create-job NAME
Creates a new job by reading stdin as a configuration XML file.

¿Alguien sabe una solución para esto? Por lo que puedo ver, lo estoy haciendo correctamente (ya que el comando funciona cuando ansible no lo ingresa)

Administro mis canalizaciones de CI/CD de jenkins y las configuro con ansible, y confío en gran medida en las bibliotecas disponibles (groovy DSL, python jenkins-job-builder) y modelo las entrañas de la configuración XML de jenkins usando jinja2. Me pidieron que mostrara lo que se puede hacer con ansible en una reunión local y he estado trabajando en un código que entregaré y compartiré en esa reunión en el nuevo año. Creo seriamente que esto podría ayudarlo mucho, actualmente uso esta configuración en mi proyecto actual y no puedo imaginar administrar jenkins de otra manera.

https://github.com/Azulinho/ansible-jenkins-showcase

  • aunque mi pregunta ya fue respondida, agradezco mucho su respuesta, y estoy seguro de que esto me será de mucha ayuda.

    – Magdalena

    23/11/2014 a las 21:00


  • @azul ¿Tiene más ejemplos sobre cómo convertir código JJB yaml a ansible? ¿Esto requiere configurar el complemento ansible en el lado de Jenkins?

    – preguntar

    2 de abril de 2018 a las 2:29

los módulo de mando no admite la redirección de entrada y salida ya que no pasa la cadena de comando a un shell. Esto es lo que dice su documentación:

No se procesará a través del shell, por lo que las variables como $HOME y operaciones como “<", ">“, “|” y “&” no funcionarán (utilice el módulo de concha si necesita estas características).

Entonces:

- name: create jenkins jobs with xml files
  sudo: yes
  shell: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs

Puede usar la redirección de shell ejecutando el shell. Por ejemplo, el comando ‘sh “echo test > hello.txt”‘ funcionará según lo previsto. Simplemente ajuste todo el comando con algo como ‘/bin/sh “java …>…”‘.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad