Jenkins - como construir um branch específico

95

Isso não é tão simples quanto fazer uma compilação parametrizada. Já tenho um processo de construção específico que vai construir e implantar sempre que qualquer um desses branches for enviado ao GitHub:

insira a descrição da imagem aqui

Então, se eu apenas fiz push develope construísse com sucesso, como faço para acionar uma compilação manual e fazer pull feature/my-new-feature(sem fazer um git push)? Tentei habilitar a construção parametrizada, adicionando uma nova string chamada branche, em seguida, adicionando um novo especificador de branch */$branch,. Em seguida, executei uma compilação e configurei branchpara feature/my-new-featuree ainda puxou develop.

Agradeço qualquer ajuda!

ffxsam
fonte
Você está falando sobre github webhook. isso pode resolver seu problema. você quer acionar isso do github?
Abhijeet Kamble de
1
Não, a integração com o GitHub já está funcionando. Eu preciso saber como construir manualmente um ramo específico.
ffxsam de
3
Eu tenho o mesmo problema. O trabalho é configurado para construir diferentes branches e é acionado por um gancho git. Mas quando eu gostaria de construir um branch específico manualmente (sem novas mudanças no GIT), eu clico em "Build now", mas ele sempre cria o último branch verificado. Também tentei várias propriedades de construção.
cornz
Se o seu parâmetro é denominado branch, você só precisa especificar $branchno campo especificador de branch.
Alexey
1
@Alexey, mas durante a construção iniciada automaticamente, isso $branchresultará em uma string vazia, suponho.
Nakilon

Respostas:

109

A melhor solução pode ser:

Adicione um parâmetro de string no trabalho existente insira a descrição da imagem aqui

Então, na Source Code Managementseção, atualize Branches to buildpara usar o parâmetro string que você definiuinsira a descrição da imagem aqui

Se você vir uma caixa de seleção rotulada Lightweight checkout , verifique se ela está desmarcada.

A configuração indicada nas imagens dirá ao trabalho jenkins para usar mastercomo o branch padrão, e para compilações manuais ele pedirá que você insira os detalhes do branch (FYI: por padrão é definido como master)insira a descrição da imagem aqui

Ranjith's
fonte
4
A construção mestre por padrão não é suficiente para uma construção de desenvolvimento genérica que deve construir todas as ramificações de desenvolvimento.
static_rtti
9
Meu Deus, isso é uma merda. Por que Jenkins não mantém a Branches to buildseção com o repositório Git ao qual ela se aplica? É um PITA estúpido ter que fazer isso para especificar um branch a ser construído.
Alex Zavatone
9
Dong isso não funciona (para mim). Acabei com Jenkins tentando verificar um branch git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --pruneque é obviamente inválido.
Liam
1
isso é registrado como um bug no Jenkins, então é difícil ver como isso funcionou.
Liam
19
@Liam Como sugerido no tíquete de bug, você precisa desmarcar "Check-out leve" para fazer isso funcionar.
asmaier
10

Eu não acho que você pode fazer os dois no mesmo trabalho jenkins, o que você precisa fazer é configurar um novo trabalho jenkins que terá acesso ao seu github para recuperar branches e então você pode escolher qual construir manualmente.

Basta marcá-lo como uma construção parametrizada, especificar um nome e um parâmetro configurado como git parameter

insira a descrição da imagem aqui

e agora você pode configurar as opções do git:

insira a descrição da imagem aqui

envergonhado
fonte
7
Esse parâmetro git é um plugin jenkins ?? Não vejo a opção de adicionar esse tipo de prameter. Se for um plugin, você pode apontar para ele na resposta?
Leandro David de
@LeandroDavid yes Git Parameter é um plugin que precisa ser instalado depois disso, você verá esta opção em Add Parameter.
gotosachin
9

Para fazer check-out do branch por meio de scripts do Jenkins, use:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}
Igor L.
fonte
1
Eu sei que não é exatamente sobre isso que a pergunta é, mas eu estava procurando por essa informação e o Google continuou sugerindo este site como uma resposta.
Igor L.
mesmo aqui mano. Você conseguiu encontrar a resposta para a resposta exata
thinkingmonster
0

Esta é uma extensão da resposta fornecida por Ranjith

Eu sugiro que você escolha uma construção de parâmetro de escolha e especifique os ramos que gostaria de construir. Parâmetro de escolha ativa

E depois disso, você pode especificar ramos para construir. Filial para construir

Agora, quando você construir seu projeto, você receberá "Construir com Parâmetros, onde você pode escolher o ramo a construir"

Você também pode escrever um script bacana para buscar todos os seus branches no parâmetro de escolha ativa.

Ashish Chandra
fonte
Por favor elabore. O TeamCity faz isso por padrão, mas o Jenkins não consegue nem amarrar os próprios sapatos !!!
C Johnson,
0

insira a descrição da imagem aqui

Haverá uma opção em configurar em Build Triggers

Verifique as ramificações do GitHub

Um gancho será criado e então você pode construir qualquer branch que quiser do Jenkins ao selecionar Github Branches insira a descrição da imagem aqui

Espero que ajude :)

Rohit Thomas
fonte
Estou tentando usar este plugin com esta configuração, mas não consigo encontrar uma maneira de iniciar o trabalho. Existe uma maneira diferente de verificar se os eventos estão vindo corretamente de gh?
Vito De Tullio
Você está recebendo a Run Branch Triggeropção, ele verifica o repo do git para todos os branches disponíveis ... Também basta olhar os Logs do jenkins -> em Gerenciar Jenkins ... para ver se ocorreu um erro
rohit thomas
1
Explique, sua descrição é muito pequena e curta.
C Johnson