Impostare un lavoro Jenkins in modo da non clonare il repository in SCM


17

Ho integrato Jenkins con Bitbucket usando il plugin Bitbucket . Secondo il Wiki del plugin, un determinato lavoro verrà attivato se il repository è impostato nell'SCM del lavoro. Come sapete, se si imposta SCM in un lavoro Jenkins, questo viene clonato in fase di pre-build.

Fin qui tutto bene. Tuttavia, lo scopo principale del lavoro che sto impostando non ha nulla a che fare con il contenuto del repository; invece, voglio solo che il lavoro elabori il payload inviato da Bitbucket. Si potrebbe dire che non è un grosso problema in termini di archiviazione clonare un repository nonostante non ne abbiate davvero bisogno. Non credo, l'aggiunta di passaggi non necessari, il consumo di tempo e risorse non è una buona pratica.

Quindi, la domanda è: qualcuno sa come impostare un SCM in un lavoro Jenkins ma impedire che cloni il repository?


2
Sembra che tu stia cercando di usare Jenkins come un micro servizio che è un po 'fuori dall'ambito di Jenkins :). Pubblica post se riesci a farlo funzionare perché è interessante.
Travis Thompson,

Non sto usando Jenkins come micro servizio. Perché dici questo? In realtà, tutto questo è una soluzione: sto usando un Pipeline Job che è comune a molti repository. Jenkinsfile si trova in un repository diverso. Pertanto, non posso attivare la pipeline direttamente con il plug-in Bitbucket perché non la attiva, quindi ho deciso di creare un "processo proxy" per repository e inviare le informazioni alla pipeline come processo a valle. In tale "processo proxy" non ho bisogno di clonare il repository, ma deve essere in SCM.
Héctor Valverde Pareja

È molto difficile da capire e scrivi di più su ciò che è impossibile che su ciò che desideri effettivamente ottenere, forse puoi aggiungere maggiori dettagli su ciò che desideri effettivamente ottenere e su come si adattano i tuoi processi proxy?
Michael Le Barbier Grünewald,

Immagino tu stia parlando del mio commento sopra. È solo una risposta al primo commento. Si prega di fare riferimento alla domanda principale, non c'è nient'altro da aggiungere. Quello che voglio ottenere è molto chiaro: "Impedisci a Jenkins di clonare un repository durante la compilazione".
Héctor Valverde Pareja,

1
@HéctorValverdePareja Certo, ma la tua formulazione sembra esitare tra A / fornire abbastanza dettagli in modo che tutti possano verificare se ti trovi in ​​una situazione di problema XY e B / solo per concentrarti sull'esatto obiettivo che desideri ottenere. Penso che (opinione) potresti rimuovere questa esitazione descrivendo abbastanza attentamente il tuo problema originale e la soluzione che stai cercando di implementare. Ma ora che qualcuno ha scritto una risposta, questo potrebbe non essere più così importante.
Michael Le Barbier Grünewald,

Risposte:


18

Sì, sicuramente. Lo faccio sempre. È possibile specificare le opzioni di configurazione per la propria pipeline e una di esse è skipDefaultCheckout, il che fa sì che la pipeline salti la fase predefinita "Dichiarazione: Checkout SCM".

L' skipDefaultCheckoutopzione è documentata nella sintassi della pipeline ed ecco un esempio di Jenkinsfile che mostra come usarlo:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}

1
Come vorresti. Clonare manualmente il repository in uno stage?
Oz123,

2
è possibile eseguire checkout scmper clonare manualmente dove è necessario. vedi devops.stackexchange.com/a/1916/2450 .
Burnettk,

5

Nel caso in cui non si utilizzi la pipeline dichiarativa, è possibile evitare il check-out da SCM:

node {
        skipDefaultCheckout()
        //...
}

1
Potresti aggiungere un link alla documentazione e spiegare di più su skipDefaultCheckout ()?
030

Non vedo alcun valore aggiunto rispetto alla risposta esistente, è solo un "prova questo" senza spiegazioni e non una buona risposta.
Tensibai,

Questa risposta va bene come supplemento alla risposta accettata - non tutti useranno il plug-in dichiarativo Pipeline, quindi questo funziona per coloro che usano quella procedurale.
RichVel,

1

Penso che quello che vuoi ottenere sia l'elaborazione di un payload webhook in un lavoro Jenkins. L'uso del plugin bitbucket non sarà necessario ed è probabilmente fortemente progettato per clonare il repository.

Credo che questa risposta a StackOverflow possa aiutarti.


Si prega di includere una citazione pertinente da quella risposta collegata ...
Pierre.Vriens

1
Benvenuto in DevOps! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Richard Slater,

@RichardSlater Non sono sicuro della politica su DevOps, ma altri siti fanno un'eccezione per i collegamenti in rete.
pulcini,

3
@chicks anche i collegamenti StackOverflow sono soggetti a marcescenza dei collegamenti e riassumendo la domanda fornisce una chiara indicazione ad altri motivi per cui il rispondente ritiene che la risposta abbia una risposta tramite il collegamento.
Richard Slater,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.