#git #jenkins #jenkins-pipeline #webhooks #jenkins-generic-webhook-trigger
#git #дженкинс #дженкинс-конвейер #веб-крючки #дженкинс-общий триггер веб-крючка
Вопрос:
Я пытаюсь сгенерировать webhook из Github, чтобы запускать сборку всякий раз, когда ветвь функций объединяется с конкретной ветвью (например master
). Я использую плагин «Generic Webhook Trigger» в Jenkins для этого, поскольку не смог найти других подходящих плагинов.
И я обнаружил, что могу ссылаться на две переменные в полезной нагрузке.
payload.ref
== «ссылки / head / master»payload.commits[1].message
МатчиMerge pull request*
Однако в плагине кажется, что я мог установить только один фильтр. Есть ли какой-либо способ установить несколько фильтров?
Ответ №1:
Я решил это с помощью regexpFilterExpression
.
Сначала вам нужно будет поместить имя ветки, для которой пришло событие push, в переменную с именем ref
, добавив это в GenericTrigger
класс:
genericVariables: [
[key: 'ref', value: '$.ref']
]
Теперь нам нужны все заголовки из коммитов, которые были в полезной нагрузке триггера, поэтому добавьте для него еще одну переменную
,[key: 'commit_titles', value: '$.commits[*].title']
Затем нам нужно собрать строку, к которой будет применен фильтр, определив regexpFilterText
свойство в GenericTrigger
class
...
regexpFilterText: 'BRANCH: $ref COMMIT_TITLES: $commit_titles END',
...
Переменные будут заменены.
Затем пришло время определить фактический фильтр
...
regexpFilterExpression: "BRANCH: refs/heads/master COMMIT_TITLES: .*?(Merge pull request).*? END"
...
Полный пример:
properties ([
pipelineTriggers([
[$class: 'GenericTrigger',
genericVariables: [
[key: 'ref', value: '$.ref'],
[key: 'commit_titles', value: '$.commits[*].title']
],
token: 'my secret token',
causeString: 'Triggered because of $commit_titles in branch $ref',
printContributedVariables: true,
printPostContent: true,
silentResponse: false,
regexpFilterText: 'BRANCH: $ref COMMIT_TITLES: $commit_titles END',
regexpFilterExpression: "BRANCH: refs/heads/master COMMIT_TITLES .*?(Merge pull request).*? END"
]
])
])