İşlem hattınıza birden çok depoyu göz at


  • Azure DevOps Server 2020 (aynı kuruluşta depolar ile sınırlıdır)
  • Azure DevOps Services

GitHub ( )

  • Azure DevOps Services

  • Azure DevOps Services

  • Azure DevOps Services

Önemli

2020 Azure Repos de birden çok depoyu iade etmek için yalnızca işlem hattıyla aynı kuruluşta yer alan Git ( ) Azure DevOps Server kullanılabilir.

Not

Azure Pipelines Git depoları için iş kapsamı Azure Repos sınırla sağlar. Başka bir projede Azure Repos Git depolarını kontrol etmek için Sınırla kapsamının erişime izin verecek şekilde yapılandırılması gerekir. Daha fazla bilgi için bkz. İş yetkilendirme kapsamını sınırlama.

Aşağıdaki adım checkout birleşimleri de desteklene.


Adım checkout yok

Varsayılan davranış ilk adım checkout: self gibi olur ve geçerli depo kullanıma alınmış olur.


Tek bir checkout: none adım

Hiçbir depo eşitlenir veya kullanıma alınmış olmaz.


Tek bir checkout: self adım

Geçerli depo kullanıma alınmış.


veya checkout olmayan tek bir self adım none

Belirlenen depo yerine kullanıma self alınmış.


Birden çok checkout adım

Belirlenen her depo, adımda farklı bir belirtilmemişse depodan sonra adlı bir path klasöre iade checkout edilir. Depolardan self biri olarak kontrol etmek için checkout: self adımlardan biri olarak checkout kullanın.


Not

İşlem hattını içeren Azure Repos Git depolarına göz atarak işlem hattı ilk kez çalıştırılamadan önce bu kaynağa erişim yetkisi vermeniz istenebilirsiniz. Daha fazla bilgi için SSS bölümündeki Farklı bir depoyu ilk kez denetlemeye çalışmam için neden kaynakları yetkilendirmem isten ediyor?bölümüne bakın.

Depo kaynağı tanımı

Depo türünüz bir hizmet bağlantısı veya diğer genişletilmiş kaynaklar alanı gerektiriyorsa bir depo kaynağı kullansanız gerekir. Aşağıdaki depo türleri bir hizmet bağlantısı gerektirir.

Depo türü Hizmet bağlantısı
Bitbucket Cloud Bitbucket Cloud
GitHub GitHub
GitHub Enterprise Server GitHub Enterprise Server
Azure Repos farklı bir kuruluşta Git depolarını çalıştırma Azure Repos/Team Foundation Server

Örneğin, farklı bir depoda şablonlar için zaten tanımlanmış bir depo kaynağınız varsa, depo türünüz bir hizmet bağlantısı gerektirmese bile bir depo kaynağı kullanabilirsiniz.

Aşağıdaki örnekte, üç depo depo kaynağı olarak bildirildi. Başka Azure Repos gitdeposu , GitHubve Bitbucket Cloud depo kaynakları, bu depo kaynakları için olarak belirtilen hizmet bağlantıları gerektirir. Bu örnekte, yaML işlem hattını içeren geçerli depoyla birlikte depo kaynakları olarak bildirilen üç depoyu kontrol eden checkoutself dört adım vardır.

resources:
  repositories:
  - repository: MyGitHubRepo # The name used to reference this repository in the checkout step
    type: github
    endpoint: MyGitHubServiceConnection
    name: MyGitHubOrgOrUser/MyGitHubRepo
  - repository: MyBitbucketRepo
    type: bitbucket
    endpoint: MyBitbucketServiceConnection
    name: MyBitbucketOrgOrUser/MyBitbucketRepo
  - repository: MyAzureReposGitRepository # In a different organization
    endpoint: MyAzureReposGitServiceConnection
    type: git
    name: OtherProject/MyAzureReposGitRepo

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- checkout: self
- checkout: MyGitHubRepo
- checkout: MyBitbucketRepo
- checkout: MyAzureReposGitRepository

- script: dir $(Build.SourcesDirectory)

Depo self olarak CurrentRepo adlandırılmışsa, script komut şu çıkışı üretir: CurrentRepo MyAzureReposGitRepo MyBitbucketRepo MyGitHubRepo . Bu örnekte, depoların adları, iade adımlarında hiçbir belirtilmediklerinden path klasörler için kullanılır. Depo klasör adları ve konumları hakkında daha fazla bilgi için aşağıdaki Checkout path bölümüne bakın.

Satır içi söz dizimi alma

Deponun hizmet bağlantısı gerektirmesi, adımınız ile satır içi olarak checkout bildirebilirsiniz.

Not

Yalnızca Azure Repos git depoları satır içi söz dizimi kullanabilir. Azure Repos Git depoları için ve desteklenen diğer depo türleri için bir hizmet bağlantısı gerekir ve bunun bir depo kaynağı olarak bildir olması gerekir.

steps:
- checkout: git://MyProject/MyRepo # Azure Repos Git repository in the same organization

Not

Önceki örnekte depo self kullanıma alınmış değildir. Herhangi bir adım checkout belirtirsanız, kullanıma checkout: self alınmış olması için dahil self edilmelidir.

Çıkış yolu

Adımda path belirtilmezse, checkout kaynak kodu varsayılan dizine yerleştirilir. Bu dizin, tek bir depoyu veya birden çok depoyu denetlemenize bağlı olarak farklıdır.

  • Tek depo:İşte tek bir adımınız varsa veya ile eşdeğer bir kullanıma alma adımınız yoksa kaynak kodunuz, alt klasörü olarak bulunan adlı dizine iade checkout: selfs(Agent.BuildDirectory) edilir. ise (Agent.BuildDirectory)C:\agent\_work\1 kodunuz için kullanıma alınmış C:\agent\_work\1\s olur.

  • Birden çok depo:İşte birden çok adımınız varsa, kaynak kodunuz içinde alt klasörü olarak depolardan sonra adlı dizinlere s(Agent.BuildDirectory) denetlenir. ise (Agent.BuildDirectory)C:\agent\_work\1 ve depolarınızı ve olarak toolscode adlandırılmıştır; kodunuz ve için kullanıma C:\agent\_work\1\s\tools alınmış C:\agent\_work\1\s\code olur.

    Not

    Adımda bir belirtilmezse, adımda depoya başvuru yapmak için kullanılan değer değil, klasör pathcheckout için repository deponun adı checkout kullanılır.

Bir path adım için checkout belirtilirse, bu yol ile göreli olarak (Agent.BuildDirectory) kullanılır.

Not

Varsayılan yolları kullanıyorsanız, ikinci bir depo adımı eklemek, ilk checkout depo için kodun varsayılan yolunu değiştirir. Örneğin, adlı bir deponun kodu tek deponun ne zaman olduğu için denetlenir, ancak ikinci bir depo eklenirse, için toolsC:\agent\_work\1\s kullanıma alınmış toolstoolsC:\agent\_work\1\s\tools olur. Kaynak kodun özgün konumda olmasıyla ilgili adımlar varsa bu adımların güncelleştirilmiş olması gerekir.

Belirli bir başvuruya göz atma

Belirli bir başvuru atamadıkça varsayılan dal kullanıma alınmış olur.

Satır içi söz dizimi kullanıyorsanız, ekini kullanarak başvuruya @<ref> bakın. Örnek:

- checkout: git://MyProject/MyRepo@features/tools # checks out the features/tools branch
- checkout: git://MyProject/MyRepo@refs/heads/features/tools # also checks out the features/tools branch
- checkout: git://MyProject/MyRepo@refs/tags/MyTag # checks out the commit referenced by MyTag.

Depo kaynağı kullanırken özelliğini kullanarak başvuruyu ref belirtin. Aşağıdaki örnek, belirlenen features/tools/ deponun dallarını denetler.

resources:
  repositories:
  - repository: MyGitHubRepo
    type: github
    endpoint: MyGitHubServiceConnection
    name: MyGitHubOrgOrUser/MyGitHubRepo
    ref: features/tools

steps:
- checkout: MyGitHubRepo

Tetikleyiciler

Bir güncelleştirme depoya veya kaynak olarak bildirilen depolardan herhangi biri için self bir işlem hattı tetiklersiniz. Bu, aşağıdaki senaryolarda olduğu gibi yararlıdır:

  • Farklı bir depodan bir araç veya kitaplık tüketirsiniz. Araç veya kitaplık her güncelleştirildiğinde uygulamanıza yönelik testler çalıştırmak istediğiniz.
  • YAML dosyanızı uygulama kodundan ayrı bir depoda tutabilirsiniz. Uygulama deposuna her güncelleştirme her işlendiğinde işlem hattını tetiklemek istemeniz gerekir.

Önemli

Depo kaynağı tetikleyicileri şu anda Azure Repos Git depoları için çalışır. Bu kaynaklar, GitHub veya Bitbucket deposu kaynakları için çalışmaz.

Depo kaynağında bir bölüm belirtmezseniz, işlem hattı bu depoda yapılan trigger değişikliklerle tetiklanmaz. Bir bölüm belirtirsiniz, tetikleme davranışı CI tetikleyicileri kendi kendine depo trigger için nasıl çalışır benzer.

Birden çok depo trigger kaynağı için bir bölüm belirtirsiniz, herhangi bir kaynakta yapılan bir değişiklik yeni bir çalıştırmayı başlatacak.

Depo tetikleyicisi YAML dosyasının kökünde yer alan bir bölümde veya için selftrigger bir depo kaynağında self tanımlanabilir. Örneğin, aşağıdaki ikisi eşdeğerdir.

trigger:
- main

steps:
...
resources:
  repositories:
  - repository: self
    type: git
    name: MyProject/MyGitRepo
    trigger:
    - main

steps:
...

Not

Depo tetikleyicisi iki kez tanımladığınız self için bir hatadır. Hem YAML dosyasının kökünde hem de bölümünde resources tanımlamayın.

İşlem hattı tetiklendiğinde, Azure Pipelines yaML dosyasının sürümünü ve kullanıma alınmış olması gereken her depo için bir sürümü belirlemesi gerekir. Depoda yapılan bir değişiklik bir işlem hattını tetiklerse, YAML dosyasının sürümünü belirlemek için işlem hattını tetikleyen işleme self kullanılır. Başka bir depo kaynağında yapılan bir değişiklik işlem hattını tetiklerse, deponun varsayılan daldan en son YAML sürümü kullanılır.

Depolardan birinin güncelleştirmesi bir işlem hattını tetikleyene zaman, aşağıdaki değişkenler depoyu tetiklemeye göre ayarlanır:

  • Build.Repository.ID
  • Build.Repository.Name
  • Build.Repository.Provider
  • Build.Repository.Uri
  • Build.SourceBranch
  • Build.SourceBranchName
  • Build.SourceVersion
  • Build.SourceVersionMessage

Tetiklenen depo için işlem hattını tetikleyen işleme, kullanıma alınmış kodun sürümünü belirler. Diğer depolar için, bu depo kaynağı için YAML'de tanımlanan, kullanıma ref alınan varsayılan sürümü belirler.

Deponun YAML dosyasını ve depolarını içerdiği ve ek kaynak kodu self içerdiği aşağıdaki örneği göz önünde AB bulundurabilirsiniz.

trigger:
- main
- feature

resources:
  repositories:
  - repository: A
    type: git
    name: MyProject/A
    ref: main
    trigger:
    - main

  - repository: B
    type: git
    name: MyProject/B
    ref: release
    trigger:
    - main
    - release

Aşağıdaki tabloda, sırasında davranışı açıkça geçersiz kılmadıkça, yukarıdaki YAML dosyası kullanılarak bir işlem hattı tarafından her depo için hangi sürümlerin kullanıma alınmış olduğu checkout gösterir.

şu şekilde değişiklik yapıldı: İşlem hattı tetiklenir YAML sürümü sürümü self sürümü A sürümü B
self içinde main Yes işlem hattını main tetikleyen işleme işlem hattını main tetikleyen işleme en son sürüm: main en son sürüm: release
self içinde feature Yes işlem hattını feature tetikleyen işleme işlem hattını feature tetikleyen işleme en son sürüm: main en son sürüm: release
A içinde main Yes en son sürüm: main en son sürüm: main işlem hattını main tetikleyen işleme en son sürüm: release
B içinde main Yes en son sürüm: main en son sürüm: main en son sürüm: main işlem hattını main tetikleyen işleme
B içinde release Yes en son sürüm: main en son sürüm: main en son sürüm: main işlem hattını release tetikleyen işleme

Ayrıca, depolardan herhangi birsinde çekme isteği güncelleştirmeyi veya güncelleştirmeyi de tetiklersiniz. Bunu yapmak için, yukarıdaki örneklerde olduğu gibi YAML dosyalarında depo kaynaklarını bildirin ve depoda bir dal ilkesi Azure Repos yapılandırmanız gerekir.

Depo ayrıntıları

Birden çok depoyu kontrol edin, depoyla ilgili bazı self ayrıntılar değişken olarak self Çok depolu tetikleyicileri kullanırken, bu değişkenlerden bazıları bunun yerine tetikleyici depo hakkında bilgi içerir. İş tarafından tüketilen tüm depolarla ilgili ayrıntılar adlı bir şablon bağlam nesnesi olarak kullanılabilir.

Örneğin, depo olmayan bir deponun başvurusunu self almak için aşağıdakine benzer bir işlem hattı yazabilir:

resources:
  repositories:
  - repository: other
    type: git
    name: MyProject/OtherTools

variables:
  tools.ref: $[ resources.repositories['other'].ref ]

steps:
- checkout: self
- checkout: other
- bash: |
    echo "Tools version: $TOOLS_REF"

SSS

Neden başka bir projeden depoyu kontrol ediyorum? Eskiden oluyordu.

Azure Pipelines, etkinleştirildiğinde işlem hattının işlem hattını içeren projenin dışındaki kaynaklara erişmesini izin vermeyebilirsiniz. Bu ayar kuruluş veya proje düzeyinde ayar olabilir. Bu ayar etkinleştirilirse, açıkça erişim izni verilmediği sürece başka bir projede depoyu kontrol etmek mümkün olmayacaktır. Daha fazla bilgi için bkz. İş yetkilendirme kapsamı.

Farklı bir depoyu ilk kez denetlemeye çalışmam için neden kaynakları yetkilendirmem isten ediyor?

İşlem hattını içeren Azure Repos Git depolarına göz atarak işlem hattı ilk kez çalıştırılamadan önce bu kaynağa erişim yetkisi vermeniz istenebilirsiniz. Bu istemler işlem hattı çalıştırma özeti sayfasında görüntülenir.

Bu işlem hattının bir kaynağa erişmek için izni olması gerekir

Kaynağı yetkilendirme

Kaynakları görüntüle veya Yetkilendir'iseçin ve kaynakları yetkilendirmek için istemleri izleyin.

Gözden geçirme bekliyor

Erişime izin ver

Daha fazla bilgi için bkz. YAML işlem hattı için yetkilendirme sorunlarını giderme.

Azure Pipelines | Azure DevOps Server 2020

Pipelines genellikle kodunuzu derlemek için ihtiyacınız olan kaynak, araç, betik veya diğer öğeleri içeren birden çok depoyu kullanabilirsiniz. İşlem hattınızı birden çok adım kullanarak YAML işlem hattınızı depolamak için kullanabileceğiniz depoya ek olarak diğer depoları da getirebilirsiniz checkout ve kontrol edin.

Birden çok depo belirtme

Depolar, bir depo kaynağı olarak veyaadımla satır içi olarak belirtilebilir.

Aşağıdaki depo türleri de kullanılabilir.