Вопрос:

создание рабочих мест Дженкинс с ansible

git jenkins vagrant ansible jenkins-cli

7172 просмотра

3 ответа

28 Репутация автора

Я работаю над проектом по развертыванию CI-сервера jenkins на centos7 с использованием ansible. У меня возникают проблемы при создании заданий jenkins из шаблона xml с использованием ansible.

Пока все работает нормально, но теперь я хочу иметь возможность создавать задания и дать им некоторую базовую конфигурацию из файла XML с использованием ansible. Моим решением была следующая команда от jenkins-cli:

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

это прекрасно работает, когда вводится вручную в поле centos7, но когда я помещаю его в ansible и запускаю его:

- 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

выдает следующее сообщение об ошибке:

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

Кто-нибудь знает решение этой проблемы? Насколько я вижу, я делаю это правильно (так как команда работает, когда не введено ansible)

Автор: Muffin Источник Размещён: 19.11.2014 10:18

Ответы (3)


4 плюса

9882 Репутация автора

Решение

Командный модуль не поддерживает перенаправление ввода и вывода , так как он не проходит командную строку для оболочки. Вот что говорит его документация:

Он не будет обрабатываться через оболочку, поэтому такие переменные, как $ HOME, и такие операции, как "<", ">", "|" и "&" не будут работать (используйте модуль оболочки, если вам нужны эти функции).

Так:

- 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
Автор: Magnus Bäck Размещён: 19.11.2014 10:51

8 плюса

148 Репутация автора

Я управляю своими конвейерами CI / CD jenkins и настройкой с ansible, и я в значительной степени полагаюсь на доступные библиотеки (groovy DSL, python jenkins-job-builder) и шаблонирую кишки XML-конфигурации jenkins, используя jinja2. Меня попросили продемонстрировать, что можно сделать с ansible на местном собрании, и я работал над кодом, который я буду распространять и делиться на этом собрании в новом году. Я серьезно думаю, что эти вещи могут вам сильно помочь, в настоящее время я использую эту настройку в своем текущем проекте и не могу себе представить, как управлять Дженкинсом каким-либо другим способом.

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

Автор: azul Размещён: 23.11.2014 08:47

0 плюса

269 Репутация автора

Вы можете использовать перенаправление оболочки, выполнив ее. Например, команда 'sh "echo test> hello.txt"' будет работать так, как задумано. Просто оберните всю команду чем-то вроде '/ bin / sh "java ...> ..."'.

Автор: Benjamin Striner Размещён: 02.08.2016 06:30
Вопросы из категории :
32x32