Estou tendo problemas para que Jenkins construa uma tag especificada. A tag faz parte de uma compilação parametrizada, mas não sei como passar isso para o plug-in git para criar apenas essa tag. Isso levou três horas do meu dia e eu concedi derrota aos mestres no estouro de pilha.
120
Respostas:
Consegui fazer isso usando o parâmetro "branches to build":
Substitua [tag-name] pelo nome da sua tag.
fonte
HEAD
. A lógica do plugin git parece comparar essas duas revisões, que no meu repositório são sempre desiguais e, portanto, uma nova compilação é sempre acionada.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 .
git push --tags
+refs/tags/*:refs/remotes/origin/tags/*
*/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.fonte
+refs/heads/*:refs/remotes/origin/*
, será agora+refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*
. (Eu não tenho trabalhado com refspecs muito, assim que tomou alguma experimentação para aprender que este campo é delimitado por espaço.)Você não pode dizer ao Jenkins para construir a partir de um nome de referência? Se sim, então é
De todas as perguntas que vejo sobre Jenkins e Hudson, sugiro mudar para o TeamCity. Não tive que editar nenhum arquivo de configuração para que o TeamCity funcionasse.
fonte
git push --tags
Se você estiver usando os pipelines Jenkins e quiser fazer check-out de uma tag específica (por exemplo: um
TAG
parâmetro de sua compilação), eis o que você pode fazer:fonte
Em uma Jenkins mais recente (1.639 e superior), você pode:
fonte
1.0.1
) nos ramos para construir o campo.Eu fiz algo assim e funcionou:
O log de Jenkins confirmou que estava obtendo a fonte da tag
Verificando a revisão
0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)fonte
refspec
truque foi clicar no botão Avançado.Defino o campo Avançado-> Refspec como
refs/tags/[your tag name]
. Isso parece mais simples do que as várias outras sugestões para o Refspec, mas funcionou muito bem para mim.ATUALIZAÇÃO 23/7/2014 - Na verdade, após mais testes, verifica-se que isso não funcionou como esperado. Parece que a versão HEAD ainda estava sendo retirada. Desfaça isso como a resposta aceita. Acabei obtendo uma solução de trabalho seguindo o post de gotgenes neste tópico (30 de março). O problema mencionado nesse post de acionamento desnecessário de compilações não foi um problema para mim, pois meu trabalho é acionado a partir de um trabalho upstream, não da pesquisa do SCM.
ATUALIZAÇÃO ABRIL DE 2018 - Observe nos comentários que isso funciona para uma pessoa e concorda com a documentação de Jenkins.
fonte
refs/tags/<tagname>
é o que a documentação do Jenkins diz que deve ser usado e está funcionando bem para mim. Talvez o plug-in estivesse com defeito no momento da postagem original, mas ... a partir de abril de 2018, esta é a resposta correta.refs/tags
prefixo e apenas usá-lo<tagname>
. YMMV, mas ... está funcionando bem para os meus propósitos.Consegui convencer Jenkins a criar uma tag, definindo o Refspec e o Especificador de filial, conforme detalhado nesta postagem do blog .
Eu também tive que definir o Nome do Repositório (como "origem" no meu caso) para poder referenciá-lo no Refspec (caso contrário, ele aparentemente usaria um nome gerado aleatoriamente).
fonte
O que eu fiz no final foi:
jenkins-target
e conseguiu que Jenkins acompanhassejenkins-target
jenkins-target
ramificaçãoNão tenho certeza se isso funcionará para todos, meu projeto era bem pequeno, não havia muitas tags e outras coisas, mas é fácil de fazer, não é necessário mexer com refspecs, parâmetros e outras coisas :-)
fonte
Você pode criar até mesmo um tipo de tag, por exemplo
1.2.3-alpha43
, usando curingas:Refspec:
+refs/tags/*:refs/remotes/origin/tags/*
Especificador de filial:
origin/tags/1.2.3-alpha*
Você também pode marcar " Criar quando uma alteração é enviada ao GitHub " para acionar o envio, mas é necessário adicionar a ação "criar" ao webhook
fonte
Adicionando meus dois centavos aqui, pois não vi uma resposta que use a opção "Construir com parâmetros" no Jenkins.
Aqui estou usando o console do navegador Jenkins CI para o projeto starwars_api e consegui construir diretamente com "Construir com parâmetros" com o valor refs / tags / tag-name
construir com o nome da tag ref
fonte