GitHub Enterprise Server depoları oluşturma

Azure DevOps Services

Şirket içi GitHub Enterprise Server'ınızı Azure Pipelines ile tümleştirebilirsiniz. Şirket içi sunucunuz İnternet'e açık olabilir veya açık olmayabilir.

GitHub Enterprise Server'ınıza Azure Pipelines hizmetini çalıştıran sunuculardan ulaşılabilirse:

  • klasik derleme ve YAML işlem hatlarını ayarlayabilirsiniz
  • CI, PR ve zamanlanmış tetikleyicileri yapılandırabilirsiniz

GitHub Enterprise Server'ınıza Azure Pipelines hizmetini çalıştıran sunuculardan ulaşılamıyorsa:

  • yalnızca klasik derleme işlem hatlarını ayarlayabilirsiniz
  • yalnızca el ile veya zamanlanmış derlemeler başlatabilirsiniz
  • YAML işlem hatlarını ayarlayamazsınız
  • Klasik derleme işlem hatlarınız için CI veya PR tetikleyicilerini yapılandıramazsınız

Şirket içi sunucunuza Microsoft tarafından barındırılan aracılardan ulaşılabilirse, işlem hatlarınızı çalıştırmak için bunları kullanabilirsiniz. Aksi takdirde, şirket içi sunucunuza erişebilecek ve kodu getirebilecek şirket içinde barındırılan aracılar ayarlamanız gerekir.

Azure Pipelines'dan ulaşılabilir

Denetlenecek ilk şey, GitHub Enterprise Server'ınıza Azure Pipelines hizmetinden erişilip ulaşılamayacağıdır.

  1. Azure DevOps kullanıcı arabiriminizde proje ayarlarınıza gidin ve İşlem Hatları'nın altında Hizmet Bağlan ions'ıseçin.
  2. Yeni hizmet bağlantısı'nı seçin ve bağlantı türü olarak GitHub Enterprise Server'ı seçin.
  3. GitHub Enterprise Server'ınıza bağlantı oluşturmak için gerekli bilgileri girin.
  4. Hizmet bağlantısı panelinde Doğrula'yı seçin.

Doğrulama başarılı olursa Azure Pipelines hizmetini çalıştıran sunucular şirket içi GitHub Enterprise Server'ınıza ulaşabilir. Devam edebilir ve bağlantıyı ayarlayabilirsiniz. Ardından, klasik derleme veya YAML işlem hattı oluştururken bu hizmet bağlantısını kullanabilirsiniz. İşlem hattı için CI ve PR tetikleyicilerini de yapılandırabilirsiniz. Azure Pipelines'ta GitHub ile çalışan özelliklerin çoğu GitHub Enterprise Server ile de çalışır. Bu özellikleri anlamak için GitHub belgelerini gözden geçirin. Bazı farklılıklar şunlardır:

  • GitHub ile Azure Pipelines arasındaki tümleştirme, GitHub marketindeki bir Azure Pipelines uygulaması aracılığıyla daha kolay hale getiriliyor. Bu uygulama, belirli bir kullanıcının OAuth belirtecini kullanmak zorunda kalmadan tümleştirme ayarlamanıza olanak tanır. GitHub Enterprise Server ile çalışan benzer bir uygulamamız yok. Bu nedenle, Azure Pipelines ile GitHub Enterprise sunucusu arasındaki bağlantıyı ayarlamak için PAT, kullanıcı adı ve parola veya OAuth kullanmanız gerekir.
  • Azure Pipelines, dış çatallardan gelen katkıları doğrulamak için bir dizi GitHub güvenlik özelliğini destekler. Örneğin, bir işlem hattında depolanan gizli diziler çalışan bir işin kullanımına sunulmaz. Bu korumalar GitHub Enterprise sunucusuyla çalışırken kullanılamaz.
  • Açıklama tetikleyicileri GitHub Enterprise sunucusunda kullanılamaz. İşlem hattını tetikleme amacıyla GitHub Enterprise sunucu deposu çekme isteğinde açıklamaları kullanamazsınız.
  • GitHub Denetimleri GitHub Enterprise sunucusunda kullanılamaz. Tüm durum güncelleştirmeleri temel durumlarla güncelleştirilir.

Azure Pipelines'dan ulaşılamıyor

GitHub Enterprise Server bağlantısının yukarıdaki bölümde açıklandığı gibi doğrulanması başarısız olduğunda Azure Pipelines sunucunuzla iletişim kuramaz. Bunun nedeni büyük olasılıkla kurumsal ağınızın nasıl ayarlandığıdır. Örneğin, ağınızdaki bir güvenlik duvarı dış trafiğin sunucularınıza ulaşmasını engelleyebilir. Bu durumda iki seçeneğiniz vardır:

  • Azure Pipelines ile GitHub Enterprise Server arasında bir ağ yolu açmak için BT bölümünüzle birlikte çalışın. Örneğin, Azure Pipelines'dan gelen trafiğin akmasına izin vermek için güvenlik duvarı kurallarınıza özel durumlar ekleyebilirsiniz. İzin vermeniz gereken IP adreslerini görmek için Azure DevOps IP'leri bölümüne bakın. Ayrıca, Azure Pipelines'ın sunucunuzun FQDN'sini bir IP adresine çözümleyebilmesi için GitHub Enterprise Server için bir genel DNS girdiniz olmalıdır. Tüm bu değişikliklerle, Azure Pipelines'da GitHub Enterprise Server bağlantısı oluşturmayı ve doğrulamayı deneme.

  • GitHub Enterprise Server bağlantısı kullanmak yerine Diğer Git bağlantısı kullanabilirsiniz. Azure Pipelines'dan bu Git sunucusuna erişmeyi dene seçeneğinin işaretini kaldırdığından emin olun. Bu bağlantı türüyle yalnızca klasik derleme işlem hattı yapılandırabilirsiniz. CI ve PR tetikleyicileri bu yapılandırmada çalışmaz. Yalnızca el ile veya zamanlanmış işlem hattı çalıştırmalarını başlatabilirsiniz.

Microsoft tarafından barındırılan aracılardan ulaşılabilir

Yapmanız gereken bir diğer karar da işlem hatlarınızı çalıştırmak için Microsoft tarafından barındırılan aracıları mı yoksa şirket içinde barındırılan aracıları mı kullanacağınızdır. Bu genellikle Microsoft tarafından barındırılan aracıların sunucunuza ulaşıp ulaşamayacağına gelir. Kullanabileceklerini denetlemek için Microsoft tarafından barındırılan aracıları kullanmak için basit bir işlem hattı oluşturun ve sunucunuzdan kaynak kodu kullanıma almak için bir adım eklediğinizden emin olun. Bu başarılı olursa Microsoft tarafından barındırılan aracıları kullanmaya devam edebilirsiniz.

Microsoft tarafından barındırılan aracılardan erişilemiyor

Yukarıdaki bölümde belirtilen basit test işlem hattı hatasıyla TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attemptingbaşarısız olursa GitHub Enterprise Server'a Microsoft tarafından barındırılan aracılardan erişilemez. Bunun nedeni büyük olasılıkla bu sunuculardan gelen trafiği engelleyen bir güvenlik duvarıdır. Bu durumda iki seçeneğiniz vardır:

  • Microsoft tarafından barındırılan aracılar ile GitHub Enterprise Server arasında bir ağ yolu açmak için BT bölümünüzle birlikte çalışın. Microsoft tarafından barındırılan aracılarda ağ oluşturma bölümüne bakın.

  • Şirket içinde barındırılan aracıları veya ölçek kümesi aracılarını kullanmaya geçin. Bu aracılar ağınız içinde ayarlanabilir ve bu nedenle GitHub Enterprise Server'a erişebilir. Bu aracılar yalnızca Azure Pipelines'a giden bağlantılar gerektirir. Gelen bağlantılar için güvenlik duvarı açmaya gerek yoktur. GitHub Enterprise Server bağlantısını oluştururken belirttiğiniz sunucunun adının şirket içinde barındırılan aracılardan çözümlenebilir olduğundan emin olun.

Azure DevOps IP adresleri

Azure Pipelines, GitHub Enterprise Server'a şu istekler için istek gönderir:

  • İşlem hattı oluşturma sırasında depoların listesini sorgulama (klasik ve YAML işlem hatları)
  • İşlem hattı oluşturma sırasında mevcut YAML dosyalarını arayın (YAML işlem hatları)
  • YAML dosyalarını iade edin (YAML işlem hatları)
  • İşlem hattı oluşturma sırasında web kancası kaydetme (klasik ve YAML işlem hatları)
  • YAML dosyaları için düzenleyici sunma (YAML işlem hatları)
  • Şablonları çözme ve yürütmeden önce YAML dosyalarını genişletme (YAML işlem hatları)
  • Son zamanlanan çalıştırmadan (klasik ve YAML işlem hatları) bu yana herhangi bir değişiklik olup olmadığını denetleyin
  • En son işleme hakkındaki ayrıntıları getirin ve bunu kullanıcı arabiriminde (klasik ve YAML işlem hatları) görüntüleyin

YAML işlem hatlarının temel olarak Azure Pipelines ile GitHub Enterprise Server arasında iletişim gerektirdiğini gözlemleyebilirsiniz. Bu nedenle, GitHub Enterprise Server Azure Pipelines tarafından görülemiyorsa YAML işlem hattı ayarlamak mümkün değildir.

Klasik bir işlem hattı ayarlamak, Azure Pipelines hizmeti ile GitHub Enterprise Server arasındaki iletişimi devre dışı bırakmak ve kod oluşturmak için şirket içinde barındırılan aracıları kullanmak için Diğer Git bağlantısını kullandığınızda, düzeyi düşürülmüş bir deneyim elde edersiniz:

  • İşlem hattı oluşturma sırasında deponun adını el ile yazmanız gerekir
  • Azure Pipelines GitHub Enterprise Server'da web kancası kaydedemediği için CI veya PR tetikleyicilerini kullanamazsınız
  • Zamanlanmış tetikleyicileri yalnızca değişiklik olduğunda oluşturma seçeneğiyle kullanamazsınız
  • Kullanıcı arabiriminde en son işleme hakkındaki bilgileri görüntüleyemezsiniz

YAML işlem hatlarını ayarlamak veya klasik işlem hatlarıyla deneyimi geliştirmek istiyorsanız, Azure Pipelines'tan GitHub Enterprise Server'a iletişimi etkinleştirmeniz önemlidir.

Azure DevOps'tan gelen trafiğin GitHub Enterprise Server'ınıza ulaşmasına izin vermek için, Gelen bağlantılarda belirtilen IP adreslerini veya hizmet etiketlerini güvenlik duvarınızın izin verilenler listesine ekleyin. ExpressRoute kullanıyorsanız, güvenlik duvarınızın izin verilenler listesine ExpressRoute IP aralıklarını da eklediğinizden emin olun.

Sınırlamalar

  • En iyi performans için tek bir depoda en fazla 50 işlem hattı kullanmanızı öneririz. Kabul edilebilir performans için tek bir depoda en fazla 100 işlem hattı önerilir. Bir depoya gönderimi işlemek için gereken süre, bu depodaki işlem hatlarının sayısıyla artar. Bir depoya gönderim olduğunda Azure Pipelines'ın herhangi birinin çalıştırılması gerekip gerekmediğini öğrenmek için bu depodaki tüm YAML işlem hatlarını yüklemesi gerekir ve her işlem hattının yüklenmesi bir performans cezasına neden olur. Performans sorunlarına ek olarak, tek bir depoda çok fazla işlem hattı olması GitHub tarafında azaltmaya neden olabilir çünkü Azure Pipelines kısa sürede çok fazla istekte bulunabilir.
  • İşlem hattında genişletilen ve dahil edilen şablonların kullanılması, Azure Pipelines'ın GitHub API istekleri yapma hızını etkiler ve GitHub tarafında azaltmaya yol açabilir. İşlem hattını çalıştırmadan önce Azure Pipelines'ın tüm YAML kodunu oluşturması ve bu nedenle tüm şablon dosyalarını getirmesi gerekir.
  • Azure Pipelines, bir depodan en fazla 2000 dalı Azure Devops Portalı'ndaki açılan listelere yükler. Örneğin, el ile ve zamanlanmış derlemeler için Varsayılan dal ayarına veya işlem hattını el ile çalıştırırken dal seçerken. listede istediğiniz dalı görmüyorsanız, istediğiniz dal adını el ile yazın.

SSS

GitHub Enterprise tümleştirmesi ile ilgili sorunlar aşağıdaki kategorilere ayrılır:

  • Başarısız tetikleyiciler: Depoya güncelleştirme gönderdiğimde işlem hattım tetiklenmiyor.
  • Kullanıma alma başarısız oluyor: İşlem hattım tetikleniyor, ancak kullanıma alma adımında başarısız oluyor.
  • Yanlış sürüm: İşlem hattım çalışıyor, ancak kaynağın/YAML'nin beklenmeyen bir sürümünü kullanıyor.

Başarısız tetikleyiciler

CI/PR tetikleyicileriyle yeni bir YAML işlem hattı oluşturdum, ancak işlem hattı tetiklenmiyor.

Başarısız tetikleyicilerinizin sorunlarını gidermek için aşağıdaki adımların her birini izleyin:

  • YAML CI veya PR tetikleyicileriniz kullanıcı arabirimindeki işlem hattı ayarları tarafından geçersiz kılınıyor mu? İşlem hattınızı düzenlerken ... ve ardından Tetikleyiciler'i seçin.

    Pipeline settings UI.

    Deponuz için kullanılabilir tetikleyici türleri (Sürekli tümleştirme veya Çekme isteği doğrulaması) için buradan YAML tetikleyicisini geçersiz kıl ayarını işaretleyin.

    Override YAML trigger from here.

  • Web kancaları, GitHub Enterprise'dan Azure Pipelines'a güncelleştirmeleri iletmek için kullanılır. GitHub Enterprise'da deponuzun ayarlarına ve ardından Web kancalarına gidin. Web kancalarının var olduğunu doğrulayın. Genellikle iki web kancası görmeniz gerekir: push, pull_request. Aksi takdirde, hizmet bağlantısını yeniden oluşturmanız ve işlem hattını yeni hizmet bağlantısını kullanacak şekilde güncelleştirmeniz gerekir.

  • GitHub Enterprise'daki web kancalarının her birini seçin ve kullanıcının işlemesine karşılık gelen yükün mevcut olduğunu ve Azure DevOps'a başarıyla gönderildiğini doğrulayın. Olay Azure DevOps'a iletilemediyse burada bir hata görebilirsiniz.

  • Azure Pipelines, GitHub'dan bir bildirim aldığında GitHub ile iletişime geçerek depo ve YAML dosyası hakkında daha fazla bilgi getirmeye çalışır. GitHub Enterprise Server bir güvenlik duvarının arkasındaysa, bu trafik sunucunuza ulaşmayabilir. Azure DevOps IP Adresleri'ne bakın ve tüm gerekli IP adreslerine özel durumlar atadığınızdan emin olun. İlk olarak özel durum kurallarını ayarladığınızdan bu IP adresleri değişmiş olabilir.

  • İşlem hattınız duraklatıldı mı yoksa devre dışı mı bırakıldı? İşlem hattının düzenleyicisini açın ve denetlemek için Ayarlar seçin. İşlem hattınız duraklatılmış veya devre dışı bırakılmışsa tetikleyiciler çalışmaz.

  • YAML dosyasını doğru dalda güncelleştirdiniz mi? Bir güncelleştirmeyi bir dala iletirseniz, CI davranışını aynı daldaki YAML dosyası yönetir. Bir güncelleştirmeyi bir kaynak dala iletirseniz, kaynak dalın hedef dalla birleştirilmesinden kaynaklanan YAML dosyası çekme isteği davranışını yönetir. Doğru daldaki YAML dosyasının gerekli CI veya PR yapılandırmasına sahip olduğundan emin olun.

  • Tetikleyiciyi doğru yapılandırdınız mı? BIR YAML tetikleyicisi tanımlarken dallar, etiketler ve yollar için hem include hem de exclude yan tümcelerini belirtebilirsiniz. include yan tümcesinin işlemenizin ayrıntılarıyla eşleştiğinden ve exclude yan tümcesinin bunları dışlamadığından emin olun. Tetikleyicilerin söz dizimini denetleyin ve doğru olduğundan emin olun.

  • Tetikleyiciyi veya yolları tanımlarken değişkenleri kullandınız mı? Bu desteklenmez.

  • YAML dosyanız için şablonları kullandınız mı? Öyleyse, tetikleyicilerinizin ana YAML dosyasında tanımlandığından emin olun. Şablon dosyalarının içinde tanımlanan tetikleyiciler desteklenmez.

  • Değişikliklerinizi iletmiş olduğunuz dalları veya yolları dışladiniz mi? Eklenen bir daldaki dahil edilen yola bir değişiklik göndererek test edin. Tetikleyicilerdeki yolların büyük/küçük harfe duyarlı olduğunu unutmayın. Tetikleyicilerdeki yolları belirtirken gerçek klasörlerinkilerle aynı büyük/küçük harf kullandığınızdan emin olun.

  • Yeni bir dal mı ittirdin? Bu durumda, yeni dal yeni bir çalıştırma başlatamayabilir. "Yeni dallar oluşturulduğunda tetikleyicilerin davranışı" bölümüne bakın.

CI veya PR tetikleyicilerim sorunsuz çalışıyor. Ama artık çalışmayı bıraktılar.

İlk olarak, önceki sorudaki sorun giderme adımlarını izleyin ve ardından şu ek adımları izleyin:

  • Çekme isteğinizde birleştirme çakışmaları var mı? İşlem hattını tetiklemeyen bir çekme isteği için açın ve birleştirme çakışması olup olmadığını denetleyin. Birleştirme çakışmasını çözün.

  • Gönderme veya çekme isteği olaylarının işlenmesinde gecikme mi yaşıyorsunuz? Sorunun tek bir işlem hattına özgü olup olmadığını veya projenizdeki tüm işlem hatlarında veya depolarda yaygın olup olmadığını görerek genellikle gecikmeyi doğrulayabilirsiniz. Depolardan herhangi birine gönderim veya çekme isteği güncelleştirmesi bu belirtiyi gösterirse, güncelleştirme olaylarını işlemede gecikmeler yaşıyor olabiliriz. Gecikmenin nedenlerinden bazıları şunlardır:

    • Durum sayfamızda bir hizmet kesintisi yaşıyoruz. Durum sayfasında bir sorun görünüyorsa ekibimizin bu sorun üzerinde çalışmaya başlamış olması gerekir. Sorunla ilgili güncelleştirmeler için sayfayı sık sık denetleyin.
    • Deponuz çok fazla YAML işlem hattı içeriyor. En iyi performans için tek bir depoda en fazla 50 işlem hattı kullanmanızı öneririz. Kabul edilebilir performans için tek bir depoda en fazla 100 işlem hattı önerilir. ne kadar çok işlem hattı varsa, bu depoya gönderimin işlenmesi o kadar yavaş olur. Bir depoya gönderim olduğunda Azure Pipelines'ın herhangi birinin çalıştırılması gerekip gerekmediğini ve her yeni işlem hattının performans cezasına neden olup olmadığını öğrenmek için bu depodaki tüm YAML işlem hatlarını yüklemesi gerekir.
    • GitHub Enterprise Server örneğiniz yetersiz sağlanmış ve Azure Pipelines'dan gelen işleme isteklerini yavaşlatıyor olabilir. GitHub Enterprise Server için donanımla ilgili dikkat edilmesi gerekenler hakkında daha fazla bilgi edinin.

Teslim alma başarısız oluyor

Microsoft tarafından barındırılan aracıları kullanıyor musunuz? Bu durumda, bu aracılar GitHub Enterprise Server'ınıza ulaşamayabilir. Daha fazla bilgi için bkz . Microsoft tarafından barındırılan aracılardan erişilemiyor.

Yanlış sürüm

İşlem hattında YAML dosyasının yanlış bir sürümü kullanılıyor. Bunun nedeni nedir?

  • CI tetikleyicileri için, göndermekte olduğunuz dalda bulunan YAML dosyası, ci derlemesinin çalıştırılıp çalıştırılmaması gerektiğini görmek için değerlendirilir.
  • Çekme isteği tetikleyicileri için, çekme isteğinin kaynak ve hedef dallarının birleştirilmesinden kaynaklanan YAML dosyası, çekme isteği derlemesinin çalıştırılıp çalıştırılmaması gerektiğini görmek için değerlendirilir.