2016-10-24 11 views
24

Jenkins işimde üç alt dizine üç git deposunu kontrol etmek için Jenkins Çoklu SCM eklentisini kullanıyorum. Daha sonra, her üç depodan alınan bilgi ve kod ile tek bir dizi yapay nesne oluşturmak için bir dizi komut yürütüyorum.Aynı işe birden fazla git reposunu kontrol etmek için bir Jenkins boruhattı kullanmak

Birden çok SCM artık amortismana tabi tutuluyor ve metin boru hatlarına taşınmanızı önerir. Denedim ama nasıl çalışacağımı anlayamıyorum.

$ ls 
Combination 
CombinationBuilder 
CombinationResults 

Bu üç alt dizinleri Her repo teslim tek budala vardır: İşte

benim Jenkins iş dizinin üst düzeyden görmeye ilgileniyorum dizin yapıdır. Çoklu SCM ile git'i kullandım ve sonra "bir alt dizine ödeme" davranışını ekledim.

node('ATLAS && Linux') { 
    sh('[ -e CalibrationResults ] || mkdir CalibrationResults') 
    sh('cd CalibrationResults') 
    git url: 'https://github.com/AtlasBID/CalibrationResults.git' 
    sh('cd ..') 
    sh('[ -e Combination ] || mkdir Combination') 
    sh('cd Combination') 
    git url: 'https://github.com/AtlasBID/Combination.git' 
    sh('cd ..') 
    sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder') 
    sh('cd CombinationBuilder') 
    git url: 'https://github.com/AtlasBID/CombinationBuilder.git' 
    sh 'cd ..' 

    sh('ls') 
    sh('. CombinationBuilder/build.sh') 
} 

Ancak git komutu (bazı mantıklı) çalışma alanının üst düzey dizinde yürütmek görünüyor ve çok sözdizimine göre orada değil,: Burada bir boru hattı komut dosyası ile benim girişimi olduğunu ödeme-alt-dizin davranışı gibi görünüyor.

cevap

39

Bir alt dizininde bir boru hattı aşamasının gerçekleştirilmesi için dir komutunu kullanabilirsiniz:

node('ATLAS && Linux') { 
    dir('CalibrationResults') { 
     git url: 'https://github.com/AtlasBID/CalibrationResults.git' 
    } 
    dir('Combination') { 
     git url: 'https://github.com/AtlasBID/Combination.git' 
    } 
    dir('CombinationBuilder') { 
     git url: 'https://github.com/AtlasBID/CombinationBuilder.git' 
    } 

    sh('ls') 
    sh('. CombinationBuilder/build.sh') 
} 
+2

Mükemmel, hile yaptığını, teşekkürler! Boru hatlarını yavaşça öğreniyorum. Keşke tüm yazılımlar iş akışı için sadece bir DSL'e karar verecek. Çok fazla öğrenmek zorundaydım. :-) – Gordon

+0

$ WORKSPACE dizinine/pipeline dizinine nasıl geri dönersiniz? Bazı senaryoları yürütmek için global içeriğe dönmek zorundayım. Dir, içeriği değiştirir ve orada bırakır. Son 'ls' komutu, CombinationBuilder repo'nun içeriğini yazdıracaktır. –

+0

Repolar için farklı kimlik bilgilerini nasıl kullanırsınız? Yani "ana" repo (Jenkins'in işi tetiklemek için izlediğini) Bitbucket'te yaşıyor ve yapı içindeki mevcut bir Github repo'yu klonlamak istiyorum, Bitbucket için bir set krediyi ve Github için farklı bir tane nasıl belirtebilirim? ? –

İlgili konular