Як я можу змусити Дженкінса виконати сценарій, який він витягнув з Git?


12

Я використовую Jenkins, щоб запустити та керувати рядом завдань імпорту. Я хочу поставити свій скрипт імпорту в Github, і коли Дженкінс будує завдання, він повинен: (а) витягнути цей скрипт, керований версією, з Github і (b) запустити сценарій.

Проблема, з якою я стикаюся, полягає в тому, що я не знаю, як посилатись на ім'я сценарію для виконання завдання. Я припускаю, що вихідний код втягується в каталог робочої області. Чи правильно це припущення? (Якби тільки була документація!)

Ось що я зробив досі:

  1. Встановлено Дженкінс (очевидно) на моєму сервері Windows (ні, у мене цього не було вибору)
  2. Створив сховище на моєму акаунті github і вклав у нього свій код
    • Опубліковано на веб-сторінці https://github.com/mcholl/SARS-Import/
    • Ви побачите, що у мене є два сценарії, roottest.py та omniture-video \ test.py. Код існує під патентом Apple, я впевнений :)
    • Ідея полягає в тому, що я хотів би запустити roottest.py
  3. Встановлено плагін Github
  4. Створив роботу так:
    • Назва проекту = "Тестування інтеграції Github"
    • Проект GitHub: https://github.com/mcholl/SARS-Import.git/
    • Додайте пакетну команду Windows: python roottest.py
  5. Виконайте завдання вручну

Однак я отримую повідомлення про помилку про те, що файл неможливо знайти. Це дивно, тому що я припускаю, що робочим потоком буде "перетягнути локальну копію джерела до ... (Job) / робочої області / каталогу, а потім запустити команду batch у контексті каталогу робочої області.

Ось повний вихід консолі:

Розпочато користувачем з анонімного побудови в робочій області C: \ Файли програми (x86) \ Jenkins \ jobs \ Тестування інтеграції Github \ робоча область [робоча область] $ cmd / c виклик C: \ Windows \ TEMP \ hudson1966342425043540895.bat

C: \ Program Files (x86) \ Jenkins \ jobs \ Тестування інтеграції Github \ робоча область> python roottest.py python: не вдається відкрити файл 'roottest.py': [Errno 2] Немає такого файлу чи каталогу

C: \ Файли програми (x86) \ Jenkins \ jobs \ Тестування інтеграції Github \ робоча область> вихід 2 Крок складання 'Виконати пакетну команду Windows', позначена збіркою як помилка Завершено: ПОСТАНОВКА

Очевидно, я очікував, що я просто побачу результати конспекту друку на консолі.

Що я зіпсував? І чому мій сценарій вже не існує?


Давайте побачимо код із C: \ Windows \ TEMP \ hudson1966342425043540895.bat, ви використовуєте git pull?

Дженкінс автоматично створює, потім видаляє. Ви можете побачити повний вміст у консольному виході - однак це команда "python roottest.py", на яку я посилався вище
Affable Geek

roottest.py не на вашому шляху. Чи бачите ви файл у каталозі робочої області чи автоматично також видаляється? Коли ви запускаєте git pull, вам потрібно опинитися в локальній копії клонованого сховища, я вважаю, що він повинен перетягнути будь-які нові зміни в локальний репо. Важко вам допомогти, коли я не бачу жодної фактичної команди, що виконується.

Ви дотримувалися цих інструкцій для плагіну github wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin- ? Ви встановили екологічну змінну GIT_HOME тощо?

D'oh! Ще одна причина ненавидіти вікна. Дякую - я думаю, що це може бути проблема
привітний Geek

Відповіді:


5

Для моєї збірки (на хості Linux) я роблю щось подібне (як крок збирання у Дженкінса), щоб виконати сценарій збірки із щойно перевіреної робочої області:

Виконати команду оболонки:

 sh -x $WORKSPACE/build/myproject.build

Я припускаю, що він працює аналогічно в Windows, за винятком, звичайно, ви використовуєте \, а не / і ви використовуєте python, а не sh для виконання свого сценарію.


2

Ви можете написати два рядки у своїй збірці:

chmod 777 ./my_script.sh
./my_script.sh

1
Світові дозволи на запис не можуть бути найкращою ідеєю! Чому б не 755 (пишуть власники, всі інші читають / виконують.
kmarsh

777 справді не найкраща ідея, але ця відповідь насправді допомогла мені.
Робін Дійхоф

0

Ви можете зберігати якийсь сценарій у Git, наприклад, test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

Потім у вхід "Виконати оболонку" введіть імпорт цього сценарію та зателефонуйте "_test_func":

source test.sh
_test_func

Результат:

 + source test.sh
 + _test_func
 test
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.