Defina um trabalho Jenkins para não clonar o repositório no SCM

17

Integrei o Jenkins ao Bitbucket usando o Bitbucket Plugin . Conforme o Wiki do plug-in, um determinado trabalho será acionado se o repositório estiver definido no SCM do trabalho. Como você sabe, se definir um SCM em um trabalho Jenkins, isso será clonado no estágio de pré-construção.

Por enquanto, tudo bem. No entanto, o principal objetivo do trabalho que estou definindo não tem nada a ver com o conteúdo do repositório; em vez disso, só quero que o trabalho processe a carga útil enviada pelo Bitbucket. Pode-se dizer que não é grande coisa em termos de armazenamento clonar um repositório, apesar de você realmente não precisar dele. Acho que não, adicionar etapas desnecessárias, consumir tempo e recursos não é uma boa prática.

Portanto, a pergunta é: alguém sabe como definir um SCM em um trabalho Jenkins, mas evita que ele clone o repositório?

Héctor Valverde Pareja
fonte
2
Parece que você está tentando usar o Jenkins como um microsserviço, que está fora do escopo do Jenkins :). Publique de volta se você conseguir isso funcionando, porque é interessante.
Travis Thompson
Não estou usando o Jenkins como um micro serviço. Por que você diz isso? Na realidade, tudo isso é uma solução: estou usando um trabalho de pipeline que é comum a muitos repositórios. Jenkinsfile está em um repositório diferente. Portanto, não consigo acionar o pipeline diretamente com o Bitbucket Plugin, porque ele simplesmente não o aciona, então decidi criar um "trabalho de proxy" por repo e enviar as informações ao pipeline como um trabalho downstream. Nesse "trabalho de proxy", não preciso clonar o repositório, mas ele precisa estar no SCM.
Héctor Valverde Pareja 31/03
É muito difícil de entender e você escreve mais sobre o que é impossível do que sobre o que realmente deseja alcançar. Talvez você possa adicionar mais detalhes sobre o que realmente deseja alcançar e como seus trabalhos de proxy se encaixam lá?
Michael Le Barbier Grünewald
Eu acho que você está falando sobre o meu comentário acima. É apenas uma resposta para o primeiro comentário. Por favor, consulte a pergunta principal, não há mais nada a acrescentar. O que eu quero que você alcance é muito claro: "Impeça o Jenkins de clonar um repositório durante a compilação".
Héctor Valverde Pareja
1
@ HéctorValverdePareja Claro, mas sua redação parece hesitar entre A / fornecendo detalhes suficientes para que todos possam verificar se você está em uma situação de problema XY e B / apenas para se concentrar na coisa exata que deseja alcançar. Eu acho que (opinião) você pode remover essa hesitação descrevendo com cuidado o problema original e a solução que você está tentando implementar. Mas agora que alguém escreveu uma resposta, isso pode não ser mais tão importante.
Michael Le Barbier Grünewald

Respostas:

18

Sim definitivamente. Eu faço isso toda hora. Você pode especificar opções de configuração para seu pipeline e uma delas é skipDefaultCheckout, o que faz com que o pipeline ignore o estágio "Declarative: Checkout SCM" padrão.

A skipDefaultCheckoutopção está documentada na sintaxe do pipeline e aqui está um exemplo do arquivo Jenkins mostrando como usá-lo:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}
Burnettk
fonte
1
Como você faria. Clonar manualmente o repositório em um estágio?
precisa saber é o seguinte
2
você pode executar checkout scmpara clonar manualmente onde for necessário. consulte devops.stackexchange.com/a/1916/2450 .
Burnettk 11/09/17
5

Caso você não esteja usando o pipeline declarativo, evite fazer check-out no SCM:

node {
        skipDefaultCheckout()
        //...
}
user3118604
fonte
1
Você poderia adicionar um link à documentação e explicar mais sobre skipDefaultCheckout ()?
030
Não vejo nenhum valor agregado em comparação com a resposta existente, isso é apenas um 'tente isso' sem explicação e não é uma boa resposta.
Tensibai
Esta resposta é adequada como complemento da resposta aceita - nem todos usarão o plug-in declarativo Pipeline, portanto, isso funciona para aqueles que usam o procedimento.
23417 RichVel
1

Acho que o que você deseja alcançar é processar uma carga útil de webhook em um trabalho de Jenkins. O uso do plugin bitbucket não será necessário e provavelmente foi desenvolvido para clonar o repositório.

Acredito que essa resposta do stackoverflow possa ajudá-lo.

Fanch
fonte
Por favor, inclua uma citação relevante do que a resposta ligada ...
Pierre.Vriens
1
Bem-vindo ao DevOps! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Richard Slater
@RichardSlater Não tenho certeza sobre a política do DevOps, mas outros sites abrem uma exceção para links na rede.
pintainhos
3
@chicks até os links StackOverflow estão sujeitos à podridão do link e, resumindo a pergunta, fornece uma indicação clara de outras razões pelas quais o respondente acredita que a pergunta é respondida pelo link.
Richard Slater