Existe uma maneira de mostrar o status de criação do Jenkins no GitHub Readme.md do meu projeto?
Eu uso o Jenkins para executar compilações de integração contínua. Após cada confirmação, garante que tudo seja compilado, além de executar testes de unidade e integração, antes de finalmente produzir pacotes de documentação e liberação.
Ainda existe o risco de cometer inadvertidamente algo que interrompe a construção. Seria bom para os usuários que visitam a página do projeto GitHub saberem que o mestre atual está nesse estado.
Respostas:
Ok, veja como você pode configurar o Jenkins para definir os status de compilação do GitHub. Isso pressupõe que você já tenha o Jenkins com o plug-in GitHub configurado para criar compilações a cada push.
Vá para o GitHub, faça login, vá para Configurações , tokens de acesso pessoal , clique em Gerar novo token .
Verifique o repo: status (não tenho certeza se isso é necessário, mas o fiz e funcionou para mim).
Gere o token, copie-o.
Verifique se o usuário do GitHub que você vai usar é um colaborador de repositório (para repositórios particulares) ou é membro de uma equipe com acesso push e pull (para repositórios de organização) aos repositórios que você deseja criar.
Vá para o servidor Jenkins, faça o login.
Em GitHub Web Hook, selecione Permitir que Jenkins gerencie automaticamente os URLs de gancho e especifique seu nome de usuário do GitHub e o token OAuth que você obteve na etapa 3.
Verifique se ele funciona com o botão Testar credencial . Salve as configurações.
Localize o trabalho Jenkins e adicione Definir status de compilação no commit do GitHub nas etapas pós-compilação
É isso aí. Agora faça uma compilação de teste e vá para o repositório GitHub para ver se funcionou. Clique em Ramos na página principal do repositório para ver os status da compilação.
Você deve ver marcas de seleção verdes:
fonte
Enquanto isso, a interface do Jenkins e do GitHub mudou um pouco e demorei um pouco para descobrir como configurar o Jenkins agora corretamente. A explicação aqui é baseada na versão 2.121.1 do Jenkins.
Suponho também que você já configurou seu trabalho Jenkins ser acionado por um webhook ou por pesquisa. Essas são as etapas que eu tomei para fazê-lo funcionar:
repo:status
Configure System
e adicione o OAuth Secret como um servidor GitHub - useSecret Text
como um método de autenticação para colocar o OAuth Secret nele.Set GitHub commit status
como ação pós-compilação . Defina o resultado do status comoOne of the default messages and statuses
.Configurar o Github
Configurar Jenkins
Configurar trabalho de Jenkins
Resultado
Agora você verá o status dos seus commit e branches:
fonte
Manage Hooks
caixa está destacada, mas não marcada nas imagens acima. Isso significa que deve ser desmarcada quando salvarmos?O que eu fiz é bem simples:
Adicionar um plug-in de pós-tarefa que sempre coloca sucesso
Adicione um plug-in de pós-tarefa que apresentará falha se "marcado como compilação como falha"
Você também pode adicionar uma chamada a pendente no início dos testes
fonte
sh
e até mesmo aproveitar o armazenamento de credenciais Jenkins comwithCredentials
Este plug-in deve funcionar: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Você deve incorporar emblemas como este em seu
README.md
arquivo:fonte
A API de status de confirmação permite que você veja a " API de status de repositório ".
E desde 26 de abril de 2013, agora você pode ver o status da compilação na sua página de filial do repositório do GitHub :
Isso significa que é outra maneira, visitando a página do projeto GitHub, para ver esses status em vez de ter apenas Jenkins.
A partir de 30 de abril de 2013, o terminal da API para status de confirmação foi estendido para permitir nomes de ramificações e tags, bem como confirmar SHAs .
fonte
curl
( developer.github.com/v3/repos/statuses/… )Há também este plug-in que fornecerá um URL de crachá que você pode postar no README.md e se parecerá com este
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
fonte
Se você possui um
Github
plugin instalado no seu computadorJenkins
, pode fazê-lo daPost build actions
seguinte maneira:fonte
Adicione a linha abaixo no seu README.md e altere a URL de acordo com o seu projeto jenkins.
fonte
No que diz respeito à criação do ramo protegido do Jenkins e do GitHub. Estou usando o Jenkins 2.6, e estas são as etapas que eu fiz para fazê-lo funcionar:
Na página do GitHub do seu repositório:
No servidor Jenkins: (Verifique se você tem o plug-in Git e GitHub instalado)
Além disso, verifique se a conta do GitHub que seu Jenkins está usando é um colaborador do repositório. Eu o configurei com o nível de permissão de gravação.
Espero que isto ajude.
fonte
Eu segui as instruções de Alex e funcionou.
Mas, para o GitHub Enterprise, você precisa modificar o URL da API ao adicionar o servidor ao Jenkins.
Por exemplo, se sua empresa for creditcard.com, seu URL será
https://github.creditcard.com/api/v3/
fonte
Atualiza com justeza o status de confirmação do Github (conforme descrito por @vonc acima), infelizmente eles ainda não implementaram a API de status do repositório
fonte
Editar:
Não estou mais usando essa abordagem, use uma das outras respostas.
Atualização: o que acabei fazendo, para o nosso caso específico: (as respostas acima foram ótimas - obrigado!)
Como nosso servidor de compilação não está na Internet, temos um script para publicar o status de compilação na ramificação gh-pages no github.
O GitHub armazena em cache as imagens, por isso criamos o arquivo .htaccess, que instrui um tempo limite curto para a imagem de status da compilação.
Coloque isso no diretório com a imagem de status de construção:
Aqui está o script de compilação. O destino que publica nas páginas gh é '--publish.site.dry.run'
Com menos de 400 linhas de configuração, temos:
. . e esse script pode ser executado dentro ou fora do Jenkins, para que:
Os resultados:
A página principal do projeto possui o status da compilação, atualizado após cada compilação, junto com os últimos documentos da API, resultados e cobertura do teste.
fonte