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!


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


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


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"
}

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.


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 :)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.