Jenkins und Git spärliche Checkouts

Lesezeit: 3 Minuten

Ich habe ein großes Repository in Git. Wie erstelle ich einen Job in Jenkins, der nur einen Unterordner aus dem Projekt auscheckt?

  • Ist es wirklich notwendig, diese Komplexität hinzuzufügen? Sobald das Repository das erste Mal geklont wurde, würde Git nur neue Objekte abrufen. Sofern Ihr Jenkins-Server nicht über ausreichend Speicherplatz verfügt, würde ich das Ganze einfach klonen und zusätzliche Komplexität vermeiden.

    – Wattwelt

    28. Mai 2012 um 23:41 Uhr


  • Ja, denn in einer CI/CD-Umgebung kommen und gehen Ihre Slaves oder Jenkins-Server mit Bedarf und Last … also gibt es keine persistente Festplatte. Das Vertrauen auf Persistenz wird in vielen DevOps-Kreisen weniger geschätzt als die Wiederholbarkeit

    – cgseller

    7. Juni 2018 um 15:48 Uhr

Jenkins und Git sparliche Checkouts
uı6ʎɹnɯ ꞁəıuɐp

Jenkins Git-Plugin Unterstützung spärliche Kassen seit git-plugin 2.1.0 (April 2014). Für diese Funktion benötigen Sie git >= 1.7.0. Es befindet sich unter „Zusätzliche Verhaltensweisen“ -> „Sparse Checkout-Pfade“.

Bildschirmfoto

Siehe: Jira-Problem JENKINS-21809

  • Leider müsste Git immer noch das gesamte Repository lokal kopieren. Daher werden Sie möglicherweise keine Geschwindigkeitsverbesserungen für Git feststellen, um die Dateien vom Server abzurufen.

    – luka5z

    30. August 2016 um 14:09 Uhr

  • Leider checkt es es immer noch mit der ursprünglichen “Pfadstruktur” intakt aus, also ist es nicht so, als würde es tatsächlich “ein Verzeichnis” auschecken, es wird nur zufällig nur ein Verzeichnis, FWIW, gefüllt

    – Rogerpack

    15. September 2016 um 21:53 Uhr

  • Ziemlich alt, aber wie definieren wir einen Unterverzeichnisnamen mit Leerzeichen . Ich möchte “folder/to/include/directory withSpace” auschecken ..

    – OK999

    7. März 2017 um 19:07 Uhr

  • Wenn A das Stammverzeichnis ist und zum Unterverzeichnis B führt, lautet der Sparse-Checkout-Pfad: /B/ für B-Verzeichnis. @OK999: Versuchen Sie BackSlash \ vor Leerzeichen oder Sonderzeichen im Datei- oder Ordnernamen. Beispiel: /Path/To/My Folder wird sein wie /Path/To/My\ Folder oder versuchen Sie, den Pfad zwischen Anführungszeichen “/Path/To/My Folder” zu übergeben.

    – bh4r4th

    18. Juli 2018 um 14:32 Uhr


  • @luka5z Diese Antwort muss mit einem flachen Klon der Tiefe 1 kombiniert werden, den Jenkins ebenfalls unterstützt.

    – Johan Boule

    26. Juli 2018 um 16:10 Uhr


Sie können verwenden spärliche Kasse Funktion von Git. Beachten Sie, dass Git immer noch das gesamte Repository auf die lokale Festplatte klont. Das ist aber nicht weiter schlimm, da es komprimiert ist.

  1. Erstellen Sie einen neuen Job in Jenkins, legen Sie das Git-Repository im Abschnitt Source Code Management fest.
  2. Erstellen Sie das Projekt. Dadurch wird das gesamte Repository auf die lokale Festplatte geklont.
  3. Öffnen Sie den Arbeitsbereichsordner des Projekts und löschen Sie dort alles außer dem Ordner .git.
  4. Öffnen Sie die Git-Shell für den Arbeitsbereichsordner des Projekts. Sparse-Checkout aktivieren:

    git config core.sparsecheckout true
    
  5. Arbeitsbaum aktualisieren:

    git read-tree -mu HEAD
    
  6. Schaffen sparse-checkout Datei im Ordner .git/info. Fügen Sie den Pfad zum Unterordner hinzu, den Sie in diese Datei auschecken möchten, wie folgt (beachten Sie den abschließenden Schrägstrich):

    folder/to/include/
    
  7. Erstellen Sie das Projekt erneut. Dieses Mal sollte nur ein Unterordner im Arbeitsbereichsordner erscheinen.

  • @RuudLenders Ja, Sie müssen es für jeden Job tun, den Sie nur in einem Unterordner auschecken möchten.

    – Pavel Chuchuva

    25. Juni 2013 um 22:30 Uhr

  • Sollte Schritt 5 ´git read-tree -mu HEAD´ nicht auf Schritt 6 folgen? Soweit ich folgen kann, sollten Sie Git zunächst mitteilen, welche Dateien es sich ansehen soll (Schritt 6) und dann die Bauminformationen in den Index einlesen.

    – Borisdiakur

    22. Januar 2014 um 12:45 Uhr

Sie könnten einen benutzerdefinierten Schritt haben, der nur verwendet wird

git checkout your-branch -- the/desired/path anthother/desired/path

Um es zu löschen, könnten Sie einfach rm -rf den Arbeitsordner und erstellen Sie ihn neu mit mkdir workingdir. Dazu müssten Sie diese Option auf der Git-Ebene des obigen Befehls angeben:

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path

All dies hängt davon ab, wie gut Sie Jenkins kennen.

  • Das Problem ist, dass Jenkins normalerweise ein Plugin verwendet, um den Quellcode zu greifen, und das Git-Plugin es Ihnen nicht erlaubt, den Befehl zum Auschecken zu ändern.

    – Pavel Chuchuva

    29. Mai 2012 um 5:05 Uhr

  • Ich denke, das Schreiben oder Modifizieren eines bestehenden Plugins wäre ein zu großes Problem.

    – Adam Dymitruk

    29. Mai 2012 um 5:14 Uhr

882540cookie-checkJenkins und Git spärliche Checkouts

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy