Привет всем,
столкнулся с казалось бы тривиальной задачей в Jenkins — необходимо запускать build при попадании нового тега с определенным именем, например
build_[0-9]{6,10}. Сам код хранится на github, так как права ограничены, то использую SCP Polling для опроса изменений.
Казалось бы все должно быть очень просто, а на деле оказалось что нет. Использую следующие параметры
Name: origin
Refspec: +refs/tags/*:refs/remotes/origin/tags/*
Branch Specifier: :.*/tags/build_[0-9]{6,10}$
Например у нас есть следующая история
550313e -> 22ce31f -> e31e663 -> e4c4bf6 (head)
tag1 tag2 tag3 tag4
В таком случае все работает как и ожидалось, каждый раз при появлении нового тега Jenkins запускает build, т.е. при следующих командах
$ git tag build_000002 550313e && git push --tags -u origin
$ git tag build_000003 22ce31f && git push --tags -u origin
$ git tag build_000004 e31e663 && git push --tags -u origin
$ git tag build_000001 e4c4bf6 && git push --tags -u origin
будет запущенно 4 сборки. Но, если мы сначала тегируем head, то сборка будет запущена только для head, для остальных 3х тегов она будет игнорироваться.
550313e -> 22ce31f -> e31e663 -> e4c4bf6 (head)
tag2 tag3 tag4 tag1
$ git tag build_000001 e4c4bf6 && git push --tags -u origin
$ git tag build_000002 550313e && git push --tags -u origin
$ git tag build_000003 22ce31f && git push --tags -u origin
$ git tag build_000004 e31e663 && git push --tags -u origin
Можно ли без велосипедов и ручной фильтрации тегов реализовать данное поведение?