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 Repos Git (git
)
- 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 self
none
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: self
lenne, a forráskódot a rendszer kiveszi egy almappának(Agent.BuildDirectory)
nevezetts
könyvtárba. Ha(Agent.BuildDirectory)
igenC:\agent\_work\1
, akkor a kód kivétele a leszC:\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ájas
(Agent.BuildDirectory)
. Ha(Agent.BuildDirectory)
igen,C:\agent\_work\1
és az adattárak el vannak nevezvetools
, éscode
a kód kiC:\agent\_work\1\s\tools
van véve, ésC:\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 azrepository
értéket, amely a lépés adattáráracheckout
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\tools
a 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 MyTag
vé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ént resources.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.
- 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?
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.
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.
További információ: YAML-folyamat engedélyezésének hibaelhárítása.