/ / Як налаштувати Jenkins на побудову всіх гілок, крім кількох, які я виключаю? - регулярні вирази, git, jenkins

Як налаштувати Дженкінса на створення всіх гілок, крім кількох, які я виключаю? - регекс, гіт, джинкіни

У нас є код в git, і я почав налаштовуватиДженкінс, щоб схопити наші гілки та спробувати скласти. Здається, що деякі гілки, можливо, почали гнити за роки з моменту їх останнього побудови, оскільки їм не вдається закінчити виготовлення.

Я хотів би побудувати всі гілки, які єзнайдено, крім списку виключених. Чи можливо це у Дженкінса? Це дозволить мені почати роботу, а потім повернутися, щоб увімкнути більше гілок, коли я намагаюся їх виправити.

Те, що я намагався поки що

Виразний вираз з лукахедом

Дивлячись на опцію "Git> Відділення для побудови", я сподівався, що зможу замінити підстановочний знак "**" за замовчуванням на:. Трохи копання і подвійна перевірка з http://rubular.com/ припустив, що наступні можуть робити те, що я хотів.

: ^ (?! origin / exclude-this-branch.v1 | origin / exclude-this-branch-too.v2) (S +)

Зараз тут існує припущення щодо регулярного виразудвигун працює у фоновому режимі. Я сподівався б, що це може зрозуміти lookahead, але якщо це не так, це пояснює, чому цей метод не працює. Здається, будуються всі гілки, включаючи ту, яку я намагаюся виключити. Можливо, мені просто потрібно знайти ще якусь налагоджувальну систему?

Шукав подібні запитання тут

Я зіткнувся Дженкінс / Хадсон будують усі філії з пріоритетом який, здавалося, містив можливе рішення в тому, що деякі додали зворотний можливість відповідності гілок https://github.com/jenkinsci/git-plugin/pull/45 звучить як те, що мені потрібно. На жаль, цього, схоже, немає у моїй версії Дженкінса, що дивно, оскільки 2011 рік давно.

Система, якою я користуюся

Ubuntu LTS 14.04. Дженкінс вір. 1.611. Ланцюжки інструментів GNU для створення коду C / C ++.

Відповіді:

4 для відповіді № 1

Як щодо використання

^(?!.*master).*$

як специфікатор гілки. Цей регулярний вираз означає, що всі гілки не відповідають майстру.

Зламатися:

^(?!.*master).*$
^                ---> beginning of string
(?!        )    ---> negative lookahead find all that doesnt match
.*           ---> zero or more of "any" character
master     ---> should not match master
.*$ ---> will match anything to the end of string

Пов'язані: https://stackoverflow.com/a/18709097/109305


0 для відповіді № 2

Мені потрібно було скористатися інструментом Дженкінса "гілка фільтра за регулярним виразом", і я виявив, що цей регулярний вираз працює лише із зворотним посиланням. Отже, слідуючи Jesper відповідь і ця проблема, тут я зробив ще два приклади:

^(?:.*release/d+.d+.d+(?!.))$
// check all branches like "release/0.0.0" or "origin/release/1.2.3"
^(?:.*release/d+.d+.d+_any)$
// check all branches like "release/0.0.0_any" or "origin/release/1.2.3_any"

Сподіваюсь, це комусь допоможе

EDIT - Новий приклад

^(?:origin/develop|origin/master|origin/release/d+.d+.d+(?!.)|origin/release/d+.d+.d+(?:_uat|_preprod))$