Як зазначалося в " Опитування повинно померти: запускаючи зведення Дженкінса з гака ", ви можете повідомити Дженкінсу про нове зобов'язання:
З останнім плагіном Git 1.1.14 (який я щойно випускаю) ви можете це зробити більше> легко, просто виконавши таку команду:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
Це сканує всі завдання, налаштовані для перевірки вказаної URL-адреси, і якщо вони також налаштовані з опитуванням, вона негайно запустить опитування (і якщо це знайде зміну, яка вартує збірки, збірка буде запущена по черзі. )
Це дозволяє сценарію залишатися тим самим, коли роботи йдуть та йдуть у Дженкінсі.
Або якщо у вас є декілька сховищ під одним хост-додатком сховища (наприклад, Gitosis), ви можете поділитися одним скриптом гака, який отримує повідомлення після отримання, з усіма сховищами. Нарешті, ця URL-адреса не потребує автентифікації навіть для захищеного Дженкінса, оскільки сервер не використовує безпосередньо нічого, що надсилає клієнт. Він проводить опитування, щоб перевірити, чи є зміни, перш ніж він насправді починає збірку.
Як згадувалося тут , обов'язково використовуйте правильну адресу для свого сервера Jenkins:
оскільки ми використовуємо Дженкінса як окремий веб-сервер на порту 8080, URL-адреса повинна була бути без /jenkins
такої:
http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git
Щоб підкріпити цей останній пункт, ptha додає в коментарях :
Це може бути очевидним, але у мене виникли проблеми з:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.
Параметр URL повинен точно відповідати тому, що ви маєте в URL-сховищі вашої роботи в Дженкінсі.
Копіюючи приклади, я пропустив протокол, в нашому випадку ssh://
, і він не спрацював.
Ви також можете використовувати простий гачок після отримання, як у " Набір на основі Push за допомогою Jenkins та GIT "
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
Налаштуйте завдання Дженкінса, щоб мати можливість "тригера будується віддалено" та використовувати маркер автентифікації ( 1qaz2wsx
у цьому прикладі).
Однак це сценарій, специфічний для проекту, і автор згадує спосіб його узагальнення.
Перше рішення простіше, оскільки воно не залежить від автентифікації або конкретного проекту.
Я хочу перевірити в наборі змін, чи має бути хоча б один файл java, який слід починати.
Припустимо, розробники змінили лише XML-файли або файли властивостей, тоді збірка не повинна починатися.
В основному, ваш сценарій збирання може:
- поставте нотатки "побудови" (див.
git notes
) на перший дзвінок
- на наступних викликах, візьміть список коммітов між
HEAD
вашою гілки кандидата на збирання і фіксації , на який посилається git notes
«будувати» ( git show refs/notes/build
): git diff --name-only SHA_build HEAD
.
- ваш сценарій може проаналізувати цей список і вирішити, чи потрібно продовжувати його збирання.
- у будь-якому випадку створіть / перемістіть свій
git notes
' build
' до HEAD
.
Травень 2016 року: cwhsu вказує у коментарях наступну можливу URL-адресу:
ви можете просто скористатися, curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN
якщо встановити в своєму елементі налаштування тригера
Червень 2016, polaretto вказує в коментарях :
Я хотів би додати, що за допомогою невеликого сценарію оболонок ви можете уникнути конфігурації URL-адреси вручну, особливо якщо у вас є багато сховищ під загальним каталогом.
Наприклад, я використав ці розширення параметрів, щоб отримати ім'я репо
repository=${PWD%/hooks};
repository=${repository##*/}
а потім використовувати його так:
curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository