A folyamat testreszabása
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Ez egy részletes útmutató a folyamat testreszabásának gyakori módjairól.
Előfeltétel
Kövesse az Első folyamat létrehozása munkafolyamat létrehozásához című témakör utasításait.
A azure-pipelines.yml
fájl ismertetése
A folyamat egy YAML-fájllal van definiálva az adattárban. Ez a fájl általában el van nevezve azure-pipelines.yml
, és az adattár gyökerénél található.
Lépjen az Azure Pipelines Folyamat lapjára, válassza ki a létrehozott folyamatot, majd a folyamat helyi menüjében a Szerkesztés lehetőséget választva nyissa meg a folyamat YAML-szerkesztőjének megnyitásához.
Feljegyzés
A folyamatok Azure DevOps-portálon való megtekintésére és kezelésére vonatkozó utasításokért tekintse meg és kezelje a folyamatokat.
Vizsgálja meg a YAML-fájl tartalmát.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
Feljegyzés
A YAML-fájl tartalma az Azure Pipelinesban elindított mintaadattártól vagy a frissítésektől függően eltérő lehet.
Ez a folyamat akkor fut, amikor a csapat leküldi a módosítást az adattár fő ágára, vagy lekéréses kérelmet hoz létre. Egy Microsoft által üzemeltetett Linux-gépen fut. A folyamatfolyamat egyetlen lépéssel rendelkezik, amely a Maven-feladat futtatását teszi lehetővé.
A platform módosítása a buildeléshez
A projektet olyan Microsoft által üzemeltetett ügynökökre építheti, amelyek már tartalmaznak SDK-kat és eszközöket a különböző fejlesztési nyelvekhez. Használhat saját üzemeltetésű ügynököket is, amelyekhez speciális eszközökre van szüksége.
Lépjen a folyamat szerkesztőjéhez a folyamat szerkesztési műveletének kiválasztásával a builden, vagy válassza a Szerkesztés lehetőséget a folyamat főoldalán.
A folyamat jelenleg Linux-ügynökön fut:
pool: vmImage: "ubuntu-latest"
Ha másik platformot szeretne választani, például Windowst vagy Macet, módosítsa az
vmImage
értéket:pool: vmImage: "windows-latest"
pool: vmImage: "macos-latest"
Válassza a Mentés lehetőséget, majd erősítse meg a módosításokat, hogy a folyamat egy másik platformon fusson.
Lépések hozzáadása
A folyamathoz lépésként további szkripteket vagy tevékenységeket adhat hozzá. A feladatok előre csomagolt szkriptek. Feladatokat használhat az alkalmazás létrehozásához, teszteléséhez, közzétételéhez vagy üzembe helyezéséhez. Java esetén az általunk használt Maven-feladat kezeli az eredmények tesztelését és közzétételét, de egy feladattal a kódlefedettségi eredményeket is közzéteheti.
Nyissa meg a folyamatHOZ tartozó YAML-szerkesztőt.
Adja hozzá a következő kódrészletet a YAML-fájl végéhez.
- task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: "JaCoCo" summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/site/jacoco/jacoco.xml" reportDirectory: "$(System.DefaultWorkingDirectory)/**/site/jacoco" failIfCoverageEmpty: true
Válassza a Mentés lehetőséget, majd erősítse meg a módosításokat.
A teszt és a kódlefedettségi eredmények megtekintéséhez válassza ki a buildet, és lépjen a Tesztelés és lefedettség lapra.
Buildelés több platformon
A projektet több platformon is létrehozhatja és tesztelheti. Az egyik módja annak, hogy ezt az strategy
és matrix
. A változók segítségével kényelmesen helyezhet el adatokat a folyamat különböző részeibe. Ebben a példában egy változót használunk a használni kívánt kép nevének átadásához.
azure-pipelines.yml
A fájlban cserélje le a következő tartalmat:pool: vmImage: "ubuntu-latest"
a következő tartalommal:
strategy: matrix: linux: imageName: "ubuntu-latest" mac: imageName: "macOS-latest" windows: imageName: "windows-latest" maxParallel: 3 pool: vmImage: $(imageName)
Válassza a Mentés lehetőséget, majd erősítse meg a módosításokat, hogy a build három különböző platformon fusson.
Minden ügynök egyszerre csak egy feladatot futtathat. Több feladat párhuzamos futtatásához több ügynököt kell konfigurálni. Elegendő párhuzamos feladatra is szüksége van.
Buildelés több verzióval
Ha egy projektet az adott nyelv különböző verzióival szeretne létrehozni, használhat egy verziót matrix
és egy változót. Ebben a lépésben létrehozhatja a Java-projektet két különböző Java-verzióval egyetlen platformon, vagy futtathatja a Java különböző verzióit különböző platformokon.
Feljegyzés
Egy környezetben nem használhat strategy
többször.
Ha egyetlen platformra és több verzióra szeretne építeni, adja hozzá a következő mátrixot a
azure-pipelines.yml
fájlhoz a Maven-feladat előtt és avmImage
.strategy: matrix: jdk10: jdkVersion: "1.10" jdk11: jdkVersion: "1.11" maxParallel: 2
Ezután cserélje le ezt a sort a maven-feladatban:
jdkVersionOption: "1.11"
ezzel a sortal:
jdkVersionOption: $(jdkVersion)
Ügyeljen arra, hogy a változót
$(imageName)
a választott platformra módosítsa.Ha több platformra és verzióra szeretne építeni, cserélje le a fájl teljes tartalmát
azure-pipelines.yml
a közzétételi feladat előtt a következő kódrészletre:trigger: - main strategy: matrix: jdk10_linux: imageName: "ubuntu-latest" jdkVersion: "1.10" jdk11_windows: imageName: "windows-latest" jdkVersion: "1.11" maxParallel: 2 pool: vmImage: $(imageName) steps: - task: Maven@4 inputs: mavenPomFile: "pom.xml" mavenOptions: "-Xmx3072m" javaHomeOption: "JDKVersion" jdkVersionOption: $(jdkVersion) jdkArchitectureOption: "x64" publishJUnitResults: true testResultsFiles: "**/TEST-*.xml" goals: "package"
Válassza a Mentés lehetőséget, majd erősítse meg a módosításokat, hogy a build két feladatot futtasson két különböző platformon és SDK-n.
CI-eseményindítók testreszabása
A folyamat eseményindítói egy folyamat futtatását okozzák. trigger:
A folyamat futását okozhatja, amikor egy frissítést leküld egy ágba. A YAML-folyamatok alapértelmezés szerint egy CI-eseményindítóval vannak konfigurálva az alapértelmezett ágon (ami általában main
). Beállíthat triggereket adott ágakhoz vagy lekéréses kérelmek érvényesítéséhez. A lekéréses kérelmek érvényesítési eseményindítója esetén egyszerűen cserélje le a lépést pr:
az trigger:
alábbi két példában látható módon. Alapértelmezés szerint a folyamat minden lekéréses kérelem módosításához fut.
Ha eseményindítókat szeretne beállítani, a fájl elején adja hozzá az alábbi kódrészletek egyikét
azure-pipelines.yml
.trigger: - main - releases/*
pr: - main - releases/*
Megadhatja az ág teljes nevét (például
main
) vagy egy előtagegyező helyettesítő karaktert (példáulreleases/*
).
Folyamat beállításai
A folyamatbeállításokat a Folyamat részletei lap További műveletek menüjében tekintheti meg és konfigurálhatja.
- Biztonság - kezelése Biztonság kezelése
- Átnevezés/áthelyezés – A folyamat nevének és mappahelyének szerkesztése.
- Állapotjelvény - Állapotjelvény hozzáadása az adattárhoz
- Törlés – Törli a folyamatot, beleértve az összes buildet és a kapcsolódó összetevőket.
- Ütemezett futtatások - ütemezett futtatások nézete
A következő folyamatbeállítások konfigurálásához válassza a Beállítások lehetőséget.
A Folyamat beállításai panelen az alábbi beállításokat konfigurálhatja.
Új futtatási kérelmek feldolgozása – Előfordulhat, hogy meg szeretné akadályozni, hogy az új futtatások elinduljanak a folyamaton.
- Alapértelmezés szerint az új futtatási kérelmek feldolgozása engedélyezve van. Ez a beállítás lehetővé teszi az összes triggertípus szabványos feldolgozását, beleértve a manuális futtatásokat is.
- A szüneteltetett folyamatok lehetővé teszik a futtatási kérelmek feldolgozását, de ezek a kérések várólistára kerülnek anélkül, hogy ténylegesen elindulnak. Ha engedélyezve van az új kérésfeldolgozás, futtassa a feldolgozás folytatását az üzenetsor első kérésétől kezdve.
- A letiltott folyamatok megakadályozzák, hogy a felhasználók új futtatásokat indítsanak. A beállítás alkalmazása közben az összes eseményindító is le van tiltva. A letiltott folyamattal rendelkező összes buildszabályzat a "Nem lehet várólistára helyezni a buildelést" üzenet jelenik meg a buildelési szabályzat mellett a lekéréses kérelem áttekintési ablakában, és a buildelési szabályzat állapota megszakad.
YAML-fájl elérési útja – Ha a folyamatot egy másik YAML-fájl használatára szeretné irányítani, megadhatja a fájl elérési útját. Ez a beállítás akkor is hasznos lehet, ha át kell helyeznie/át kell neveznie a YAML-fájlt.
A futtatásban szereplő munkaelemek automatikus csatolása – Az adott folyamatfuttatáshoz társított módosításokhoz munkaelemek tartozhatnak. Ezzel a beállítással összekapcsolhatja ezeket a munkaelemeket a futtatáshoz. Ha az ebben a futtatásban szereplő munkaelemek automatikus csatolása lehetőség van kiválasztva, meg kell adnia egy adott ágat, vagy
*
az összes ágat, amely az alapértelmezett. Ha ágat ad meg, a munkaelemek csak az adott ág futtatásaihoz vannak társítva. Ha megadja*
, a munkaelemek az összes futtatáshoz vannak társítva.- Ha értesítéseket szeretne kapni, ha a futtatások sikertelenek, tekintse meg, hogyan kezelheti a csapat értesítéseit
Biztonság kezelése
A folyamatok biztonságát projektszinten konfigurálhatja a folyamatok kezdőlapján található További műveletek, valamint a folyamat részletei lapon található folyamatszinten.
A folyamatműveletek biztonságának támogatásához hozzáadhat felhasználókat egy beépített biztonsági csoporthoz, egyéni engedélyeket állíthat be egy felhasználóhoz vagy csoporthoz, vagy hozzáadhat felhasználókat előre definiált szerepkörökhöz. Az Azure Pipelines biztonsági funkcióit a webes portálon kezelheti, akár a felhasználói, akár a rendszergazdai környezetből. További információ a folyamatok biztonságának konfigurálásáról: Folyamatengedélyek és biztonsági szerepkörök.
Munkaelem létrehozása hiba esetén
A YAML-folyamatok nem rendelkeznek létrehozási munkaelemekkel a hibabeállításhoz , például a klasszikus buildelési folyamatokhoz. A klasszikus buildelési folyamatok egyszakaszosak, és a hibákhoz tartozó munkaelem létrehozása a teljes folyamatra vonatkozik. A YAML-folyamatok többfázisúak lehetnek, és előfordulhat, hogy a folyamatszint-beállítás nem megfelelő. Ha egy YAML-folyamatban hiba esetén szeretne munkaelemet létrehozni, használhat olyan módszereket, mint a Work Items – Create REST API call vagy az Azure DevOps CLI az boards work-item create parancs a folyamat kívánt pontján.
Az alábbi példában két feladat található. Az első feladat a folyamat munkáját jelöli, de ha nem sikerül, a második feladat fut, és hibát hoz létre ugyanabban a projektben, mint a folyamat.
# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
displayName: Succeed or fail
type: boolean
default: false
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Work
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
# This malformed command causes the job to fail
# Only run this command if the succeed variable is set to false
- script: git clone malformed input
condition: eq(${{ parameters.succeed }}, false)
# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
dependsOn: Work
condition: failed()
steps:
- bash: |
az boards work-item create \
--title "Build $(build.buildNumber) failed" \
--type bug \
--org $(System.TeamFoundationCollectionUri) \
--project $(System.TeamProject)
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: 'Create work item on failure'
Feljegyzés
Az Azure Boards lehetővé teszi a munkaelemek nyomon követésének konfigurálását különböző folyamatok, például az Agile vagy az Basic használatával. Minden folyamat különböző munkaelem-típusokkal rendelkezik, és nem minden munkaelemtípus érhető el az egyes folyamatokban. Az egyes folyamatok által támogatott munkaelem-típusok listáját a Munkaelemtípusok (WIT-ek) című témakörben találja.
Az előző példa futtatókörnyezeti paraméterekkel konfigurálja, hogy a folyamat sikeres vagy sikertelen legyen. A folyamat manuális futtatásakor beállíthatja a succeed
paraméter értékét. A folyamat első feladatának második script
lépése kiértékeli a paramétert succeed
, és csak akkor fut, ha succeed
hamis értékre van állítva.
A folyamat második feladata függ az első feladattól, és csak akkor fut, ha az első feladat meghiúsul. A második feladat az Azure DevOps CLI az boards work-item create parancsot használja egy hiba létrehozásához. Az Azure DevOps CLI-parancsok folyamatból való futtatásával kapcsolatos további információkért lásd : Parancsok futtatása YAML-folyamatban.
A YAML-folyamatok nem rendelkeznek létrehozási munkaelemekkel a hibabeállításhoz , például a klasszikus buildelési folyamatokhoz. A klasszikus buildelési folyamatok egyszakaszosak, és a hibákhoz tartozó munkaelem létrehozása a teljes folyamatra vonatkozik. A YAML-folyamatok többfázisúak lehetnek, és előfordulhat, hogy a folyamatszint-beállítás nem megfelelő. Ha egy YAML-folyamatban sikertelen munkaelemet szeretne létrehozni, használhatja a Munkaelemek – REST API-hívás létrehozása a folyamat kívánt pontján.
Az alábbi példában két feladat található. Az első feladat a folyamat munkáját jelöli, de ha nem sikerül, a második feladat fut, és hibát hoz létre ugyanabban a projektben, mint a folyamat.
# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
displayName: Succeed or fail
type: boolean
default: false
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Work
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
# This malformed command causes the job to fail
# Only run this command if the succeed variable is set to false
- script: git clone malformed input
condition: eq(${{ parameters.succeed }}, false)
# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
dependsOn: Work
condition: failed()
steps:
- bash: |
curl \
-X POST \
-H 'Authorization: Basic $(System.AccessToken)' \
-H 'Content-Type: application/json-patch+json' \
-d '[
{
"op": "add",
"path": "/fields/System.Title",
"from": null,
"value": "git clone failed"
}
]' \
"$(System.CollectionUri)$(System.TeamProject)/_apis//wit/workitems/$Bug?api-version=7.1-preview.3
"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
displayName: 'Create work item on failure'
Feljegyzés
Az Azure Boards lehetővé teszi a munkaelemek nyomon követésének konfigurálását különböző folyamatok, például az Agile vagy az Basic használatával. Minden folyamat különböző munkaelem-típusokkal rendelkezik, és nem minden munkaelemtípus érhető el az egyes folyamatokban. Az egyes folyamatok által támogatott munkaelem-típusok listáját a Munkaelemtípusok (WIT-ek) című témakörben találja.
Az előző példa futtatókörnyezeti paraméterekkel konfigurálja, hogy a folyamat sikeres vagy sikertelen legyen. A folyamat manuális futtatásakor beállíthatja a succeed
paraméter értékét. A folyamat első feladatának második script
lépése kiértékeli a paramétert succeed
, és csak akkor fut, ha succeed
hamis értékre van állítva.
A folyamat második feladata függ az első feladattól, és csak akkor fut, ha az első feladat meghiúsul. A második feladat az Azure DevOps API az boards work-item create parancsot használja egy hiba létrehozásához.
Ez a példa két feladatot használ, de ez a megközelítés több fázisban is használható.
Feljegyzés
Használhat egy marketplace-bővítményt is, például a Kiadási hiba létrehozása hibát , amely támogatja a YAML többfázisú folyamatait.
Következő lépések
Megismerte a folyamat testreszabásának alapjait. A következő lépésben azt javasoljuk, hogy tudjon meg többet a folyamat testreszabásáról a használt nyelvhez:
Vagy ha ci-/CD-folyamatra szeretné növelni a CI-folyamatot, adjon meg egy üzembe helyezési feladatot az alkalmazás környezetbe való üzembe helyezésének lépéseivel.
Az útmutató témaköreiről további információt a Feladatok, Feladatok, Feladatok katalógusa, Változók, Eseményindítók vagy Hibaelhárítás című témakörben talál.
A YAML-folyamatokban elvégezhető további műveletekről a YAML sémareferenciájában olvashat.