Вы можете установить хук после получения, который проверяет, был ли зафиксирован тег, и создает сборку в jenkins.
Крючок может выглядеть примерно так [*]:
#!/usr/bin/env python
import sys
from subprocess import Popen, PIPE, check_call
def call_git(command, args):
return Popen(['git', command] + args, stdout=PIPE).communicate()[0]
JENKINS = 'http://localhost:8002/jenkins'
TOKEN = 'asdf8saffwedssdf'
jobname = 'project-tag'
def handle_ref(old, new, ref):
print 'handle_ref(%s, %s, %s)' % (old, new, ref)
if not ref.startswith('refs/tags/'):
return
url = '%s/job/%s/buildWithParameters?token=%s&branch=%s' % (
JENKINS, jobname, TOKEN, new)
print "queueing jenkins job " + jobname + " for " + new
check_call(["wget", "-O/dev/null", "--quiet", url])
if __name__ == '__main__':
for line in sys.stdin:
handle_ref(*line.split())
[*] примечание: это просто быстрое преобразование из немного другого скрипта, поэтому вполне вероятно, что здесь есть небольшие ошибки. Это в основном, чтобы показать идею.
На стороне Дженкинса вам необходимо настроить параметризованное задание. Единственный параметр - «ветвь».
- Проверьте, «эта сборка параметризована» и добавьте параметр
- В 'управление исходным кодом -> ветки для сборки' поместите '$ branch'
Это дает довольно безопасный и надежный способ сборки. Чтобы проверить, запустите сборку через веб-интерфейс, он запросит значение параметра.