Több adattár megtekintése a folyamatban

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

A folyamatok gyakran több adattárra támaszkodnak, amelyek olyan forrást, eszközöket, szkripteket vagy más elemeket tartalmaznak, amelyek a kód buildeléséhez szükségesek. A folyamat több checkout lépésének használatával a YAML-folyamat tárolásához használt mellett más adattárakat is lekérhet és megnézhet.

Több adattár megadása

Az adattárak megadható adattár-erőforrásként vagy a checkout lépéssel beágyazottként is.

Az alábbi adattártípusok támogatottak.


  • Azure DevOps Server (az ugyanabban a szervezetben található adattárakra korlátozódik)
  • Azure DevOps Services

GitHub (github)

  • Azure DevOps Services

GitHubEnterprise (githubenterprise)

  • Azure DevOps Services

Bitbucket Cloud (bitbucket)

  • Azure DevOps Services

Fontos

Az Azure DevOps Serverben csak a folyamattal azonos szervezetben található Azure Repos Git-adattárakgit támogatottak.

Feljegyzés

Az Azure Pipelines az Azure Repos Git-adattárak korlátfeladat-hatókörbeállításait biztosítja. Egy másik projektben üzemeltetett Azure Repos Git-adattárak megtekintéséhez a korlátfeladat hatókörét úgy kell konfigurálni, hogy engedélyezze a hozzáférést. További információ: Feladatengedélyezési hatókör korlátozása.

A következő lépések kombinációi checkout támogatottak.


Nincsenek checkout lépések

Az alapértelmezett viselkedés olyan, mintha checkout: self az első lépés lett volna, és a rendszer kivette az aktuális adattárat.


Egyetlen checkout: none lépés

Nincsenek szinkronizálva vagy kivett adattárak.


Egyetlen checkout: self lépés

A rendszer kivette az aktuális adattárat.


Egyetlen checkout lépés, amely nem vagy nem selfnone

A kijelölt adattárat a rendszer ahelyett, hogy kivenni.self


Több checkout lépés

A rendszer minden kijelölt adattárat kivesz egy, az adattárról elnevezett mappába, kivéve, ha a checkout lépésben más path van megadva. Ha az adattárak egyikeként szeretne kijelentkezni self , használja checkout: self az checkout egyik lépést.


Feljegyzés

Amikor a folyamatot tartalmazótól eltérő Azure Repos Git-adattárakat vesz ki, előfordulhat, hogy a rendszer kérni fogja, hogy engedélyezze az erőforráshoz való hozzáférést, mielőtt a folyamat első alkalommal lefut. További információ: Miért kéri a rendszer az erőforrások engedélyezését, amikor először megpróbálok egy másik adattárat megnézni? című témakört a GYIK szakaszban.

Adattár erőforrásdefiníciója

Adattárerőforrást kell használnia, ha az adattár típusa szolgáltatáskapcsolatot vagy más kiterjesztett erőforrásmezőt igényel. Az alábbi adattártípusokhoz szolgáltatáskapcsolat szükséges.

Adattár típusa Szolgáltatáskapcsolat
Bitbucket Cloud Bitbucket Cloud
GitHub GitHub
GitHub Enterprise Server GitHub Enterprise Server
Az Azure Repos Git-adattárak a folyamattól eltérő szervezetben Azure Repos/Team Foundation Server

Akkor is használhat adattárerőforrást, ha az adattár típusa nem igényel szolgáltatáskapcsolatot, például ha már definiált adattárerőforrást egy másik adattár sablonjaihoz.

Az alábbi példában a rendszer három adattárat deklarál adattár-erőforrásként. Egy másik szervezetben, a GitHubon és a Bitbucket Cloud-adattárban található Azure Repos Git-adattárhoz szolgáltatáskapcsolatokra van szükség, amelyek ezekhez az endpoint adattár-erőforrásokhoz vannak megadva. Ez a példa négy checkout lépésből áll, amelyek az adattárként deklarált három adattárat és a folyamat YAML-ét tartalmazó aktuális self adattárat ellenőrzik.

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)

Ha az self adattár neve el van nevezve CurrentRepo, a parancs a script következő kimenetet hozza létre: CurrentRepo MyAzureReposGitRepo MyBitbucketRepo MyGitHubRepo. Ebben a példában az adattárak nevei (az name adattár-erőforrás tulajdonsága által meghatározottak szerint) vannak használva a mappákhoz, mivel a kivételi lépésben nincs path megadva. Az adattármappák nevével és helyével kapcsolatos további információkért tekintse meg a következő Kivétel elérési útját ismertető szakaszt.

Beágyazott szintaxis kivétele

Ha az adattár nem igényel szolgáltatáskapcsolatot, a lépéssel checkout inline módon deklarálhatja azt.

Feljegyzés

Csak az ugyanabban a szervezetben lévő Azure Repos Git-adattárak használhatják a beágyazott szintaxist. Egy másik szervezetben található Azure Repos Git-adattárakhoz és más támogatott adattártípusokhoz szolgáltatáskapcsolatra van szükség, és adattár-erőforrásként kell deklarálni.

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

Feljegyzés

Az előző példában a rendszer a self kivételi adattárat adja meg a folyamathoz társított adattár forrásának kivételéhez.

Ha az alapértelmezett Azure Repos Git-adattárat használja (amelynek neve megegyezik a projekt nevével), használja a formátumot - checkout: git://MyRepo/MyRepo.

Kivétel elérési útja

path Ha nincs megadva a lépésben, a checkout forráskód egy alapértelmezett könyvtárba kerül. Ez a könyvtár attól függően eltérő, hogy egyetlen vagy több adattárat szeretne-e kivenni.

  • Egyetlen adattár: Ha egyetlen checkout lépéssel rendelkezik a feladatban, vagy nincs olyan kivételi lépése, amely egyenértékű checkout: selflenne, a forráskódot a rendszer kiveszi egy almappának (Agent.BuildDirectory)nevezett s könyvtárba. Ha (Agent.BuildDirectory) igen C:\agent\_work\1, akkor a kód kivétele a lesz C:\agent\_work\1\s.

  • Több adattár: Ha a feladatban több checkout lépés is szerepel, a forráskód ki lesz véve az adattárakról elnevezett könyvtárakba, mint a fájl almappája s(Agent.BuildDirectory). Ha (Agent.BuildDirectory) igen, C:\agent\_work\1 és az adattárak el vannak nevezve tools , és codea kód ki C:\agent\_work\1\s\tools van véve, és C:\agent\_work\1\s\code.

    Feljegyzés

    Ha a lépésben nincs path megadva, a rendszer az adattár nevét használja a mappához, nem pedig azt az repository értéket, amely a lépés adattárára checkout hivatkozik.checkout

Ha egy lépéshez checkout meg van adva egy path adott elérési út, akkor a rendszer a következőhöz viszonyítva használja az (Agent.BuildDirectory)elérési utat.

Feljegyzés

Ha alapértelmezett elérési utakat használ, egy második adattárlépés hozzáadása megváltoztatja checkout az első adattár kódjának alapértelmezett elérési útját. Például egy elnevezett tools adattár kódját ki kell venni, hogy C:\agent\_work\1\s mikor tools az egyetlen adattár, de ha hozzáad egy második adattárat, tools akkor ki lesz véve C:\agent\_work\1\s\toolsa rendszer. Ha rendelkezik olyan lépésekkel, amelyek attól függenek, hogy a forráskód az eredeti helyen található-e, ezeket a lépéseket frissíteni kell.

Adott ref kivétele

Az alapértelmezett ág ki van véve, hacsak nem jelöl ki egy adott hiv-t.

Ha beágyazott szintaxist használ, jelölje ki a hivot a hozzáfűzéssel @<ref>. Példa:

- 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.

Adattárerőforrás használatakor adja meg a tulajdonságot használó ref adattárat. Az alábbi példa a features/tools/ kijelölt adattár ágát ellenőrzi.

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

steps:
- checkout: MyGitHubRepo

Az alábbi példa címkéket használ a hivatkozott MyTagvéglegesítés kivételéhez.

resources:
  repositories:
  - repository: MyGitHubRepo
    type: github
    endpoint: MyGitHubServiceConnection
    name: MyGitHubOrgOrUser/MyGitHubRepo
    ref: refs/tags/MyTag

steps:
- checkout: MyGitHubRepo

Triggerek

Elindíthat egy folyamatot, ha a rendszer leküldi a frissítést az self adattárba vagy az erőforrásokként deklarált tárházakba. Ez például a következő esetekben hasznos:

  • Egy másik adattárból származó eszközt vagy tárat használ. Az eszköz vagy tár frissítésekor teszteket szeretne futtatni az alkalmazáshoz.
  • A YAML-fájlt az alkalmazáskódtól eltérő adattárban tárolhatja. A folyamatot minden alkalommal aktiválni szeretné, amikor a rendszer leküldi a frissítést az alkalmazás adattárába.

Fontos

Az adattárerőforrás-eseményindítók csak az ugyanabban a szervezetben lévő Azure Repos Git-adattárakban működnek, és ha az self adattár típusa Azure Repos Git. Nem működnek GitHub- vagy Bitbucket-adattár-erőforrásokhoz.

batch nem támogatott az adattárbeli erőforrás-eseményindítókban.

Ha nem ad meg szakaszt trigger egy adattár-erőforrásban, akkor a folyamat nem aktiválódik az adattár módosításaival. Ha megad egy szakaszt trigger , az eseményindító viselkedése hasonló ahhoz, ahogyan a CI-triggerek működnek az öntárházban.

Ha több adattár-erőforráshoz ad meg egy trigger szakaszt, akkor bármelyikük módosítása új futtatásba kezd.

Amikor egy folyamat aktiválódik, az Azure Pipelinesnak meg kell határoznia a használni kívánt YAML-fájl verzióját és az egyes adattárak azon verzióját, amelyet ki kell venni. Ha az self adattár módosítása elindít egy folyamatot, akkor a rendszer a folyamatot aktiváló véglegesítést használja a YAML-fájl verziójának meghatározására. Ha bármely más adattárerőforrás módosítása aktiválja a folyamatot, akkor a rendszer a YAML legújabb verzióját használja az adattár alapértelmezett ágábólself.

Amikor az egyik adattár frissítése elindít egy folyamatot, a rendszer a következő változókat állítja be az adattár aktiválása alapján:

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

Az eseményindító adattár esetében a folyamatot aktiváló véglegesítés határozza meg a kivett kód verzióját. Más adattárak esetében az ref adott adattár-erőforrás YAML-ben definiált verziója határozza meg a kivett alapértelmezett verziót.

Vegye figyelembe az alábbi példát, amelyben az self adattár tartalmazza a YAML-fájlt és az adattárakat A , és B további forráskódot tartalmaz.

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
steps:
- checkout: self
- checkout: A
- checkout: B

Az alábbi táblázat azt mutatja be, hogy az egyes adattárak mely verzióit vette ki egy folyamat a fenti YAML-fájl használatával.

A módosítás a Folyamat aktiválva A YAML verziója A verziószáma self A verziószáma A A verziószáma B
main a(z) self rendszerben Igen véglegesítés abból main , amely aktiválta a folyamatot véglegesítés abból main , amely aktiválta a folyamatot legújabb verzió: main legújabb verzió: release
feature a(z) self rendszerben Igen véglegesítés abból feature , amely aktiválta a folyamatot véglegesítés abból feature , amely aktiválta a folyamatot legújabb verzió: main legújabb verzió: release
main a(z) A rendszerben Igen legújabb verzió: main legújabb verzió: main véglegesítés abból main , amely aktiválta a folyamatot legújabb verzió: release
main a(z) B rendszerben Igen legújabb verzió: main legújabb verzió: main legújabb verzió: main véglegesítés abból main , amely aktiválta a folyamatot
release a(z) B rendszerben Igen legújabb verzió: main legújabb verzió: main legújabb verzió: main véglegesítés abból release , amely aktiválta a folyamatot

A folyamatot akkor is aktiválhatja, ha lekéréses kérelmet hoz létre vagy frissít bármelyik adattárban. Ehhez deklarálja az adattár erőforrásait a YAML-fájlokban a fenti példáknak megfelelően, és konfiguráljon egy ágházirendet az adattárban (csak Azure-adattárak esetén).

Adattár részletei

Ha több adattárat is kivesz, az self adattár néhány részlete változóként érhető el. Többadattár-eseményindító használata esetén ezek közül a változók némelyike inkább az eseményindító adattárra vonatkozó információkkal rendelkezik. A feladat által felhasznált összes adattár részletei sablonkörnyezeti objektumkéntresources.repositoriesérhetők el.

Ha például egy nemself adattár adattárát szeretné lekérni, az alábbi módon írhat egy folyamatot:

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"

GYIK

Miért nem tudok egy másik projekt adattárát kivenni? Korábban ez működött.

Az Azure Pipelines egy Feladat engedélyezési hatókörének aktuális projektre való korlátozása beállítást nyújt, amely ha engedélyezve van, nem teszi lehetővé, hogy a folyamat elérje a folyamatot tartalmazó projekten kívüli erőforrásokat. Ez a beállítás a szervezet vagy a projekt szintjén állítható be. Ha ez a beállítás engedélyezve van, nem tud kivenni adattárakat más projektekből, ha külön nem ad hozzáférést. További információért lásd a feladatengedélyezési hatókört ismertető részt.

Miért kéri a rendszer az erőforrások engedélyezését, amikor először megpróbálok egy másik adattárat megnézni?

Amikor a folyamatot tartalmazótól eltérő Azure Repos Git-adattárakat vesz ki, előfordulhat, hogy a rendszer kérni fogja, hogy engedélyezze az erőforráshoz való hozzáférést, mielőtt a folyamat első alkalommal lefut. Ezek a kérések a folyamatfuttatás összegzési oldalán jelennek meg.

This pipeline needs permission to access a resource

Authorize resource

Válassza az Erőforrások megtekintése vagy engedélyezése lehetőséget, és kövesse az utasításokat az erőforrások engedélyezéséhez.

Waiting for review

Permit access

További információ: YAML-folyamat engedélyezésének hibaelhárítása.