Nenhuma dessas respostas foi suficiente para mim, usando o Jenkins CI v.1.555, o plug-in Git Client v.1.6.4 e o plug-in Git 2.0.4.
Eu queria criar um trabalho para um repositório Git para uma tag específica fixa (ou seja, não parametrizada). Eu tive que montar uma solução a partir das várias respostas, além da postagem no blog "build a Git tag" citada por Thilo .
- Envie sua tag para o repositório remoto com
git push --tags
- Na seção "Git Repository" do seu trabalho, sob o título "Source Code Management", clique em "Advanced".
- No campo Refspec, adicione o seguinte texto:
+refs/tags/*:refs/remotes/origin/tags/*
- Em "Ramificações a serem construídas", "Especificador de ramificação", coloque
*/tags/<TAG_TO_BUILD>
(substituindo <TAG_TO_BUILD>
pelo nome real da tag).
Adicionar o Refspec para mim acabou sendo crítico. Embora parecesse que os repositórios git estavam buscando todas as informações remotas por padrão quando deixei em branco, o plug-in Git falhou completamente ao encontrar minha tag. Somente quando especifiquei explicitamente "obter as tags remotas" no campo Refspec o plug-in Git foi capaz de identificar e criar a partir da minha tag.
Atualização 2014-5-7 : Infelizmente, esta solução possui um efeito colateral indesejável para o Jenkins CI (v.1.555) e o mecanismo de notificação por push do repositório Git no Stash Webhook para Jenkins : sempre que uma ramificação do repositório é atualizada de uma só vez, os trabalhos de criação de tags também serão acionados novamente. Isso leva a muitas recriações desnecessárias dos mesmos trabalhos de tag repetidamente. Tentei configurar os trabalhos com e sem a opção "Forçar sondagem usando espaço de trabalho" e parecia não ter efeito. A única maneira de impedir que Jenkins faça compilações desnecessárias para os trabalhos de tag é limpar o campo Refspec (por exemplo, excluir o +refs/tags/*:refs/remotes/origin/tags/*
).
Se alguém encontrar uma solução mais elegante, edite esta resposta com uma atualização. Eu suspeito, por exemplo, que talvez isso não aconteça se o refspec for especificamente, +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
e não o asterisco. Por enquanto, no entanto, esta solução está funcionando para nós, apenas removemos o Refspec extra após o trabalho ser bem-sucedido.