Stellen Sie einen Jenkins-Job so ein, dass das Repo in SCM nicht geklont wird


17

Ich habe Jenkins mit Bitbucket über das Bitbucket-Plugin integriert . Gemäß dem Wiki des Plugins wird ein bestimmter Job ausgelöst, wenn das Repository im SCM des Jobs festgelegt ist. Wenn Sie SCM in einem Jenkins-Job festlegen, wird dies bekanntlich in der Vorbereitungsphase geklont.

So weit, ist es gut. Der Hauptzweck des Jobs, den ich festlege, hat jedoch nichts mit dem Inhalt des Repositorys zu tun. Stattdessen soll der Job nur die von Bitbucket gesendeten Nutzdaten verarbeiten. Man könnte sagen, es ist im Hinblick auf die Speicherkapazität keine große Sache, ein Repository zu klonen, obwohl Sie es wirklich nicht benötigen. Ich denke nicht, unnötige Schritte hinzuzufügen, Zeit und Ressourcen zu verbrauchen, ist keine gute Praxis.

Die Frage ist also: Weiß jemand, wie man einen SCM in einem Jenkins-Job einstellt, ihn aber daran hindert, das Repository zu klonen?


2
Es hört sich so an, als würden Sie versuchen, Jenkins als Mikrodienst zu verwenden, der sich dem Geltungsbereich von Jenkins entzieht :). Schreiben Sie einen Beitrag zurück, wenn dies funktioniert, da es interessant ist.
Travis Thompson

Ich benutze Jenkins nicht als Mikrodienst. Warum sagst du das? In Wirklichkeit ist dies alles eine Umgehung: Ich verwende einen Pipeline-Job, der vielen Repositorys gemeinsam ist. Jenkinsfile befindet sich in einem anderen Repository. Aus diesem Grund kann ich die Pipeline nicht direkt mit dem Bitbucket-Plugin auslösen, da dies nicht der Fall ist. Daher habe ich beschlossen, einen "Proxy-Job" pro Repo zu erstellen und die Informationen als Downstream-Job an die Pipeline zu senden. In einem solchen "Proxy-Job" muss ich das Repo nicht klonen, aber es muss in SCM sein.
Héctor Valverde Pareja

Es ist sehr schwer zu verstehen und Sie schreiben mehr über das Unmögliche als über das, was Sie tatsächlich erreichen möchten. Vielleicht können Sie weitere Details hinzufügen, was Sie tatsächlich erreichen möchten und wie Ihre Proxy-Jobs dort hineinpassen?
Michael Le Barbier Grünewald

Ich denke, du sprichst über meinen Kommentar oben. Es ist nur eine Antwort auf den ersten Kommentar. Bitte beziehen Sie sich auf die Hauptfrage, da gibt es nichts anderes hinzuzufügen. Was Sie erreichen möchten, ist ganz klar: "Verhindern Sie, dass Jenkins während des Builds ein Repository klont".
Héctor Valverde Pareja

1
@ HéctorValverdePareja Klar, aber Ihre Formulierung scheint zu zögern, wenn Sie nicht genügend Details angeben, damit jeder prüfen kann, ob Sie sich in einer XY-Problemsituation befinden, und wenn Sie sich auf das konzentrieren, was Sie erreichen möchten. Ich denke, Sie könnten dieses Zögern beseitigen, indem Sie Ihr ursprüngliches Problem und die Lösung, die Sie implementieren möchten, sorgfältig genug beschreiben. Aber jetzt, da jemand eine Antwort geschrieben hat, ist dies vielleicht nicht mehr so ​​wichtig.
Michael Le Barbier Grünewald

Antworten:


18

Ja auf jeden Fall. Ich mache das die ganze Zeit. Sie können Konfigurationsoptionen für Ihre Pipeline angeben. Eine davon skipDefaultCheckoutbewirkt, dass die Pipeline die Standardstufe "Deklarativ: Checkout-SCM" überspringt.

Die skipDefaultCheckoutOption ist in der Pipeline-Syntax dokumentiert. Hier ist ein Beispiel für eine Jenkins-Datei, die zeigt, wie sie verwendet wird:

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

1
Wie würdest du das? Manuelles Klonen des Repositorys in einer Phase?
Oz123

2
Sie können ausführen, checkout scmum manuell zu klonen, wo Sie müssen. Siehe devops.stackexchange.com/a/1916/2450 .
Burnettk

5

Wenn Sie die deklarative Pipeline nicht verwenden, können Sie das Auschecken aus SCM vermeiden, indem Sie:

node {
        skipDefaultCheckout()
        //...
}

1
Könnten Sie der Dokumentation einen Link hinzufügen und mehr über skipDefaultCheckout () erklären?
030

Ich sehe keinen Mehrwert gegenüber der bestehenden Antwort, das ist nur ein "Versuch dies" ohne Erklärung und ohne eine gute Antwort.
Tensibai

Diese Antwort ist in Ordnung als Ergänzung zur akzeptierten Antwort - nicht jeder wird das deklarative Pipeline-Plugin verwenden, daher funktioniert dies für diejenigen, die das prozedurale Plugin verwenden.
RichVel

1

Ich denke, Sie möchten eine Webhook-Payload in einem Jenkins-Job verarbeiten. Die Verwendung des Bitbucket-Plugins ist nicht erforderlich, und es ist wahrscheinlich stark darauf ausgelegt, das Repo zu klonen.

Ich glaube, diese Stackoverflow-Antwort könnte Ihnen helfen.


Bitte
fügen

1
Willkommen bei DevOps! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Richard Slater

@RichardSlater Ich bin mir nicht sicher, was die Richtlinien für DevOps angeht, aber andere Websites machen eine Ausnahme für netzwerkinterne Links.
Küken

3
@chicks selbst StackOverflow-Links unterliegen einem Link-Rot und geben durch Zusammenfassung der Frage einen klaren Hinweis auf andere Gründe, warum der Antwortende der Meinung ist, dass die Frage vom Link beantwortet wird.
Richard Slater
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.