Bir Jenkins işini SCM'de repoyu klonlamamak için ayarlama


18

Jenkins'i Bitbucket Eklentisini kullanarak Bitbucket ile entegre ettim . Eklentinin Wiki'sine göre, depo işin SCM'sinde ayarlanırsa belirli bir iş tetiklenir. Bildiğiniz gibi, biri Jenkins işine SCM koyarsa, bu yapım öncesi aşamada klonlanır.

Çok uzak çok iyi. Ancak, belirlediğim işin asıl amacının deponun içeriği ile ilgisi yoktur; bunun yerine, sadece işin Bitbucket tarafından gönderilen yükü işlemesini istiyorum. Bir depoyu klonlamak gerçekten gerekli olmasa da, depolama açısından büyük bir şey değil diyebiliriz. Sanmıyorum, gereksiz adımlar eklemek, zaman ve kaynak tüketmek iyi bir uygulama değil.

Yani, soru şudur: Herkes Jenkins işinde bir SCM'nin nasıl ayarlanacağını biliyor ancak depoyu klonlamasını engelliyor mu?


2
Jenkins, Jenkins'in kapsamı dışında olan bir mikro servis olarak kullanmaya çalıştığınız anlaşılıyor. İlginç olsa bu çalışma olsa alırsanız geri gönderin.
Travis Thompson

Jenkins'i mikro servis olarak kullanmıyorum. Neden öyle diyorsun? Gerçekte, tüm bunlar bir çözümdür: Birçok veri havuzunda ortak olan bir Boru Hattı İşi kullanıyorum. Jenkinsfile farklı bir depoda. Böylece, doğrudan Bitbucket Eklentisi ile boru hattını tetikleyemiyorum çünkü sadece tetiklemiyor, bu yüzden repo başına bir "proxy işi" oluşturmaya karar verdim ve bilgileri aşağı yönde bir iş olarak boru hattına göndermeye karar verdim. Böyle bir "vekil iş" repo klonlamak gerekmez, ama SCM olması gerekir.
Héctor Valverde Pareja

Anlamak çok zor ve aslında neyi başarmak istediğinizden daha neyin imkansız olduğu hakkında daha fazla yazıyorsunuz, Belki aslında neye ulaşmak istediğiniz ve vekil işlerinizin oraya nasıl uyduğu hakkında daha fazla ayrıntı ekleyebilirsiniz?
Michael Le Barbier Grünewald

Sanırım yukarıdaki yorumumdan bahsediyorsun. Bu sadece ilk yoruma bir cevap. Lütfen ana soruya bakın, eklenecek başka bir şey yok. Elde etmenizi istediğim çok açık: "Jenkins'in yapım sırasında bir havuzu klonlamasını önleyin".
Héctor Valverde Pareja

1
@ HéctorValverdePareja Tabii, ancak ifadeleriniz A / yeterli ayrıntı vermek arasında tereddüt ediyor gibi görünüyor, böylece herkes bir XY sorunu durumunda olup olmadığınızı kontrol edebilir ve B / sadece elde etmek istediğiniz kesin şeye odaklanabilir. Bence (görüşünüz) bu tereddütleri, orijinal probleminizi ve uygulamaya çalıştığınız çözümü yeterince dikkatli bir şekilde tanımlayarak kaldırabilirsiniz. Ama şimdi birisi bir cevap yazdığına göre, bu artık o kadar önemli olmayabilir.
Michael Le Barbier Grünewald

Yanıtlar:


20

Evet kesinlikle. Bunu her zaman yaparım. Boru hattınız için yapılandırma seçeneklerini belirtebilirsiniz ve bunlardan biri skipDefaultCheckout, boru hattının varsayılan "Bildirici: Checkout SCM" aşamasını atlamasına neden olur.

skipDefaultCheckoutSeçenek belgelenmiştir Boru Hattı sözdizimi ve burada Jenkinsfile nasıl kullanılacağını gösteren bir örnek:

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

1
Nasıl yapardın. Deposu manuel olarak bir aşamada klonlar mı?
Oz123

2
checkout scmİhtiyacınız olan yerde manuel olarak klonlamak için çalışabilirsiniz . bkz. devops.stackexchange.com/a/1916/2450 .
burnettk

6

Bildirici İletim Hattı'nı kullanmıyorsanız, SCM'den şu işlemleri yapmaktan kaçınabilirsiniz:

node {
        skipDefaultCheckout()
        //...
}

1
Belgelere bir bağlantı ekleyebilir ve skipDefaultCheckout () hakkında daha fazla bilgi verebilir misiniz?
030

Mevcut cevaba kıyasla herhangi bir katma değer görmüyorum, bu sadece bir açıklama olmadan ve iyi bir cevap olmadan bir 'bunu deneyin'.
Tensibai

Bu cevap, kabul edilen cevaba ek olarak iyidir - herkes bildirimsel Boru Hattı eklentisini kullanmaz, bu yüzden prosedürel olanı kullananlar için çalışır.
RichVel

1

Bence elde etmek istediğiniz şey Jenkins işinde bir webhook yükü işlemek. Bitbucket eklentisinin kullanılması gerekli değildir ve muhtemelen repoyu klonlamak için güçlü bir şekilde tasarlanmıştır.

Bu yığın akışı yanıtının size yardımcı olabileceğine inanıyorum .


Lütfen bu bağlantılı cevaptan ilgili bir alıntı
ekleyin

1
DevOps'a Hoş Geldiniz! Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
Richard Slater

@RichardSlater DevOps'taki politikadan emin değilim, ancak diğer siteler ağ içi bağlantılar için bir istisna oluşturuyor.
civcivler

3
@ chicks bile StackOverflow bağlantıları bağlantı çürümesine maruz kalır ve soruyu özetleyerek, yanıtlayıcının sorunun bağlantı tarafından yanıtlandığına inandığının diğer nedenlerine açık bir işaret verir.
Richard Slater
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.