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.