Estou tentando configurar o Jenkins-ci para um projeto usando o GitHub. Eu já configurei o Jenkins com os plugins apropriados. Quero que o Jenkins execute scripts de construção apenas sempre que alguém no projeto pressionar para dominar. Até agora, consegui configurá-lo para que uma compilação seja acionada a qualquer momento que alguém for para qualquer lugar, mas isso é muito amplo. Eu fiz isso com ganchos de serviço pós-recebimento no Git.
Eu li o wiki do Jenkins e alguns tutoriais, mas esse detalhe em particular está faltando ... talvez seja algo relacionado à pesquisa? Ou o trabalho deve ser feito no lado do Git, para que o Git só ative Jenkins quando master
for alterado?
Respostas:
Como já observado por gezzed em seu comentário, enquanto isso, há uma boa solução (descrita em Polling deve morrer: desencadear Jenkins constrói a partir de um gancho Git ):
Defina o gatilho de construção da tarefa Jenkins como Poll SCM , mas não especifique uma programação.
Crie um gatilho de pós-recebimento do GitHub para notificar o URL
Isso acionará todas as compilações que pesquisam o repositório Git especificado.
No entanto, a pesquisa realmente verifica se alguma coisa foi enviada para a ramificação usada.
Funciona perfeitamente.
fonte
A partir da versão 0.5, o plug-in GitHub para Jenkins pode disparar uma compilação quando uma alteração é enviada ao GitHub .
fonte
Em vez de disparar construções remotamente, altere a configuração do projeto Jenkins para acionar construções pesquisando.
Jenkins pode pesquisar com base em um interno fixo ou em um URL. O último é o que você deseja pular compilações se não houver alterações para esse ramo. Os detalhes exatos estão na documentação . Basicamente, você só precisa marcar a opção "Poll SCM", deixar a seção de agendamento em branco e definir um URL remoto para pressionar JENKINS_URL / job / name / polling.
Uma dica se você tiver um ambiente Jenkins protegido é diferente
/build
, a/polling
URL requer autenticação. As instruções aqui têm detalhes. Por exemplo, eu tenho um gancho GitHub Post-Receive indo parausername:apiToken@JENKIS_URL/job/name/polling
.fonte
Para o GitLab , siga estas etapas:
Digite o URL "Build Now" do seu projeto Jenkins como um URL de evento push:
http://server.com/jenkins/job/project_name/build?delay=0sec
por exemploAdd Web Hook
e depoistest hook
Então, sempre que você se comprometer com o repositório, o gancho da web é acionado e uma compilação é criada. Certifique-se de definir o espaço de trabalho do Jenkins para
delete workspace before each build
obter uma nova cópia do novo código.fonte
Não relacionado ao Git, mas abaixo ajudarei com a configuração do trabalho Jenkins em detalhes com o Mercurial. Pode ajudar outras pessoas com um problema semelhante.
Poll SCM
opção. Defina o valor como* * * * *
[URLTrigger] - Poll with a URL
. Agora você pode selecionar algumas opções, como alteração de data de modificação, conteúdo do URL etc.Monitor change of content
Agora, acione algumas alterações no repositório Mercurial fazendo alguns check-ins de teste.
Veja que o trabalho Jenkins agora é executado detectando as alterações do SCM. Quando a compilação for executada devido a alterações do Mercurial, você verá um texto
Started by an SCM change
. Senão, o usuário que o iniciou manualmente.fonte
Espero que isso ajude: Como acionar uma compilação Jenkins no Git commit
É apenas uma questão de usar curl para acionar um trabalho Jenkins usando os ganchos Git fornecidos pelo Git.
O comando
curl http://localhost:8080/job/someJob/build?delay=0sec
pode executar um trabalho Jenkins, ondesomeJob
é o nome do trabalho Jenkins.Procure a pasta "hooks" na sua pasta .git oculta. Renomeie o arquivo "post-commit.sample" para "post-commit". Abra-o com o bloco de notas, remova a linha ": Nothing" e cole o comando acima.
É isso aí. Sempre que você faz uma confirmação, o Git aciona os comandos pós-confirmação definidos no arquivo.
fonte
Integração contínua com o Jenkins, depois que o código é enviado para o repositório a partir do comando Git / GUI:
.git/hooks
pasta.A
hooks
pasta contém os poucos arquivos. Verifique o "pós-confirmação". Se não estiver presente, crie um arquivo, "pós-confirmação" sem uma extensão de arquivo:Edite o arquivo "pós-confirmação" com o comando abaixo. Verifique se ele está presente na pasta de ganchos do código-fonte local.
Exemplo:
5)
userName
: Nome de usuário de JenkinsjobName
: Nome da tarefa da construçãoapiToken
: Para obter seu token de API, acesse a página de usuário do Jenkins (canto superior direito da interface). Está disponível no menu "Configurar", à esquerda da página: "Mostrar token da API"Faça alterações no seu código-fonte e confirme o código no repositório.
Seu trabalho
http://localhost:8080/jenkins/job/Gitcommittest/
deve estar construindo.fonte
Você precisa especificar o ramo. Por padrão, ele ouve qualquer coisa. Veja a postagem do blog Hudson: plugins Git e Maven .
fonte
O plug-in de gatilho Webhook genérico pode ser configurado com filtros para isso.
Quando configurado com
ref
e expressão$.ref
.$ref
e expressão de filtro como^refs/heads/master$
.Em seguida, esse trabalho será acionado a cada push para
master
. Nenhuma pesquisa.Você provavelmente deseja mais valores do webhook para realmente executar a compilação. Basta adicionar mais variáveis, com JSONPath, para escolher o que você precisa.
Existem alguns casos de uso aqui: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
fonte
Na minha organização atual, não fazemos isso no master, mas no desenvolvimento e no release / branches (estamos usando o Git Flow), para gerar builds de snapshots.
Como estamos usando um pipeline de várias ramificações, fazemos isso no arquivo Jenkins com a sintaxe when {} ...
Isso está detalhado nesta postagem do blog: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
fonte
As respostas acima estão corretas, mas estou abordando quem é novato aqui por sua simplicidade
especialmente para definir o gatilho de compilação para o pipeline:
Considere que você tem duas ramificações do Github: 1.master, 2.dev e Jenkinsfile (onde o script de pipeline está gravado) e outros arquivos estão disponíveis em cada ramificação
Configurar novo projeto Pipeline (para ramificação dev)
## 1.Integração do código com o git-plugin e a abordagem baseada em cron Pré-requisito O plug-in git deve ser instalado e configurado com seu nome e email
## 2.Integração de código: abordagem do github-plugin e webhook Pré-requisito O plug-in do Github deve ser instalado e o servidor do Github deve ser configurado, a conexão deve ser testada se não considerar a seguinte configuração
Configurar o plug-in do Github com uma conta no Jenkins
Seção GitHub Adicione servidor Github se não estiver presente URL da API: https://api.github.com Credenciais: adicione texto secreto (clique no botão Adicionar: selecione o tipo de texto secreto) com o valor Token de acesso pessoal (gere-o nas suas contas do Github—> configurações -> configuração do desenvolvedor—> token de acesso pessoal—> adicionar token—> verificar escopos—> copiar o token) Testar Conexão—> Verifique se ele está conectado à sua conta do Github ou não. Marque a caixa de seleção na subseção Gerenciar ganchos. Antes, apenas selecione credencial anterior para 'segredo compartilhado'
Adicione webhook se não for adicionado ao seu repositório
http: // IP_ Público: Jenkins_PORT / github-webhook /
Se você possui o plug-in de solicitações Github Pull, configure-o também com o URL publicado do Jenkins.
fonte
Use o plug-in do pull request builder: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
É realmente simples. Você pode configurar os webhooks do GitHub para acionar compilações.
fonte
Minha solução para um servidor git local: vá para o diretório de gancho do servidor git local, ignore o update.sample existente e crie um novo arquivo literalmente chamado de "update", como:
A instrução echo será exibida sob o resultado do git push, o token pode ser obtido na configuração do seu trabalho jenkins, procure-o. Se o arquivo "update" não for chamado, tente outros arquivos com o mesmo nome sem a extensão "sample".
É tudo o que você precisa
fonte