2016-04-25 33 views
16

GitHubPullRequestBuilder, Jenkins v2.0 pipeline işleriyle uyumlu değil gibi görünüyor.GitHub çekme isteğinden bir Jenkins 2.0 Pipeline işi nasıl tetiklenir

GitHub çekme isteği olayından tetiklenecek bir boru hattı işi nasıl yapılandırılır?
Bu konuyla ilgili dökümanlar seyrek ve bunun hiçbir örneği bulamıyorum. Ya da PR etkinliğinde boru hattı işini tetiklemek için GitHub'da bir web kancası oluşturmak daha iyi midir? GitHub çekme istekleri ile Boru Hattı kullanmak

cevap

1

en basit yolu adı Jenkinsfile altında depoya senaryoyu koyup GitHub Şube Kaynak eklenti yüklemektir. Documentation

+0

sadece bu kuruluşun üyelerinin PR'leri için mi, yoksa harici katılımcılardan gelen PR'lar için mi çalışacak? – elopio

+0

@elopio, eklentinin, aynı depodan ve aynı zamanda harici depolardan PR'lerin oluşturulmasını etkinleştirme/devre dışı bırakma seçenekleri vardır. Tam olarak istediğin şey değil, ama muhtemelen yeterince yakın. –

+1

PRs testleri ve 'Jenkinsfile' ile oynamak için bu resmi [jenkinsci/workflow-demo] (https://hub.docker.com/r/jenkinsci/workflow-demo/) docker görüntüsü var. PR'lerde bu güzel kırmızı ve yeşil çeklerin mümkün olup olmadığını merak ediyordum ve bu tamamen mümkün. ((Burada örnek) (https://github.com/jenkinsci/docker-workflow-plugin/pull/57)):) Ve bu [çokbağlı iş akışları hakkında yararlı bir yazı] (https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/) – GabLeRoux

2

kısaca akış böyle gidebilir:

  1. Sen kod olarak boru hattı oluşturmak ve bir dosyaya kaydetmek projenizin kök dir en Jenkinsfile aradı. Bu kod, projenizin nasıl inşa edileceğini açıklamalıdır. Örnekler için bakınız: https://jenkins.io/doc/pipeline/examples/

  2. Daha sonra, Jenkins'inizde yeni bir "Çok Kutuplu Boru Hattı Projesi" öğesi oluşturmalısınız. 1. adımın repo'unu taramak için bunu ayarlamanız gerekir.

  3. Şimdi adım 1 repo'nuza yeni bir PR dalı açtığınızda, şube kontrol edilir ve Jenkins dosyasına göre inşa edilir. yönergeleri onunla birlikte. Nelerin yapılacağı ve ne zaman isterseniz, daha fazla koşul ayarlayabilirsiniz.

Notlar:

  1. "çoklu şube Boru Hattı Projesi" örnek belgeleri: https://jenkins.io/doc/book/pipeline-as-code/ (çoklu şube Boru Hattı Projeleri için aşağı kaydırın)

  2. eklentisi almak bir inşa etmek unutmayın Halkla ilişkiler pratiği sonrası PR çalışmaz. Bunu analiz eden bir tartışma var: https://github.com/jenkinsci/gitlab-plugin/issues/298 Geçici çözümler var (bu tartışmada da açıklanmıştır), ancak kurulumları oldukça karmaşıktır. Benzer bir sorunla karşılaştım.

12

Benzer bir sorun yaşadım. İşte ver bana

Öncesi req

  • Jenkins çalıştı budur. 2+
  • Github (veya Githhub kuruluş) (Ben Jenkins 2.60 kullanıyordum)
  • Kişisel GitHub hesap ve Jenkins birbirleriyle konuşmak gerekir.
    1. Github

      günü

ilgili haklara sahip bir github Kişisel Erişim Token (PAT) oluşturun.senin repo

  • ,
    • URL
    • YourJenkinsURL/github-webhook/ olarak kök dizinine bir Jenkinsfile ekleyin ve 'İsteği çekin'
  • kontrol 'beni ayrı ayrı etkinlikleri seçmek Let' seç ile webhook oluşturmak Repo'nuzun klasörü. Test amaçla size GitHub Çekme Talebi Oluşturucu eklentisini yükleyin
    1. Jenkins

      günü
  • altına
     
        pipeline { 
         agent any 
         stages { 
          stage('Test') { 
           steps { 
            echo 'Hello World ...' 
           } 
          } 
         } 
        } 
    

    gibi temel bir merhaba dünya olarak içerik koyabilirim.

  • Jenkins (2+ Ayrıca “Github” eklentisi gerekiyor ama bu normalde ver Jenkins bir parçası olarak monte edilmelidir) - Kimlik
    • bir ‘gizli metin’ kimlik bilgisi olarak github Kişisel Erişim Token (PAT) ekleyin.
    • github kullanıcı adı-şifresini "kullanıcı adı-şifre" kimlik bilgisi olarak ekleyin. Bu Github Eklentinin parçasıdır: - Yapılandırma Sistemi
      • Github - Github Sunucular
    • Jenkins yönetin. Bir github sunucusu ekleyin. ‘API URL’si’ https://api.github.com’a varsayılan olacaktır. Kurumsal github kullanıyorsanız, kurumsal github url ve ardından/api/v3 ile değiştirin. Kimlik bilgisi için PAT seçeneğini seçin. Bağlantıyı test edin. Ho Hooksları Yönet ’kontrol edilir.
    • GitHub İstek İstek Oluşturucu: "GitHub Sunucu API URL'si" için Github Sunucu bölümünde belirtildiği gibi aynı URL'yi kullanın. ‘Paylaşılan Sırrı’ boş bırakın. Kimlik bilgileri için ‘kullanıcı adı-şifre’ kimlik bilgisi kullanın. Çalışmasını sağlamak için kimlik bilgilerini test edin. Ayarlarımda web Web sayfalarını otomatik yönet ’kontrol edildi.
  • Boru Hattı İşi
    • ‘Boru Hattı'nın’ seçeneğini kullanarak yeni bir öğe oluşturun. Not: Bu, Çok Kanallı Boru Hattı değil vanilya Boru Hattı işidir.
    • Genel Bölümü: 'Github Projesi' Çek - Proje URL:
    • Yapı tetikler sizin github Repo url girin: Check 'GitHub Pull Talebi Oluşturucu' Eğer GitHub'dan için belirlenen 'GitHub API kimlik bilgileri' seçeneğini seçenek için
      • istek oluşturucu çekin 'Manage Jenkins - yapılandır Sistemi' yönetici listesi için ekran
      • : eklemek adınızı
      • Kontrol Kullanım github kanca tetikleme yapı için
    • Boru Hattı:
      1. SC SCM’den Boru Hattı Komut Dosyası’nı seçin. Bu durum, repo dosyanızın kök klasörünün bir ‘Jenkins dosyası’ (
      2. ) içereceğini varsayar. SCM: Seç ‘Git’ Seçiniz
      3. Depolar - repo ayrıntılarını girin.Kimlik bilgileri için "kullanıcı adı-şifre" tabanlı kimlik bilgilerini kullanın.
      4. Gelişmiş tıklayın +refs/pull/*:refs/remotes/origin/pr/*
      5. Şubesi olarak refspec ekleyin - ${sha1}
      6. Senaryo Yolu olmalıdır: Jenkinsfilevarsayılan ayarı, olduğu gibi bırakın.
      7. Hafif Ödeme - bu kadar bu (https://github.com/jenkinsci/ghprb-plugin/issues/507)
  • işaretini kaldırın. Hepiniz ayarlandınız. Şimdi Jenkins Boru Hattı işini

    Bazı gözlemler

    • boru hattını tetiklemez github bir PR webhook yükünü tekrar verilmesini tetiklemesi gerektiğini repo ana daldaki bir PR oluşturma ancak yeniden Hatta yeni bir PR açmadan veya - Github üzerinde kapalı bir PR açmak, boru hattı işini tetikler
    • “Pipeline Script” öğesini seçerseniz ve pipeline komut dosyasını buraya yapıştırırsanız, iş tetiklemez !!!
    +0

    Aynı işlemi çoklu boru hattı ile de yapamayız mı? Çünkü oynamak istediğim dal ana dal değil. @Deepak Rao –

    +0

    'Yapı Tetikleyicileri: Check‘ GitHub Çekme İsteği Oluşturucu’nun bu seçeneği benim için yok. Eklenti, jenkinsfile kullanmayan diğer projelerde mevcut olduğundan yüklenmiştir. Düşüncesi olan var mı? – edthethird