A folyamat testreszabása
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
Ez egy részletes útmutató a folyamat testreszabásának gyakori módjairól.
Előfeltétel
A munkafolyamat létrehozásához kövesse az első folyamat létrehozása 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. A fájl neve azure-pipelines.yml általában az adattár gyökerében található.
Lépjen az Azure Pipelines Pipelines lapjára, válassza ki a létrehozott folyamatot, majd a folyamat helyi menüjében a Szerkesztés parancsot választva nyissa meg a folyamat YAML-szerkesztőjének megnyitását.
Megjegyzés
A folyamatok Azure DevOps-portálon való megtekintésére és kezelésére vonatkozó utasításokért tekintse meg a folyamatok navigálását ismertető cikket.
Vizsgálja meg a YAML-fájl tartalmát.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
Megjegyzés
A YAML-fájl tartalma eltérő lehet az ön által elindított mintaadattártól vagy az Azure Pipelinesban végrehajtott frissítésektől függően.
Ez a folyamat akkor fut, amikor a csapat módosítást küld az adattár fő ágához, 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ára szolgál.
A platform módosítása a buildeléshez
A projektet létrehozhatja a Microsoft által üzemeltetett ügynökökre , amelyek már tartalmaznak SDK-kat és eszközöket a különböző fejlesztési nyelvekhez. Vagy használhat saját üzemeltetésű ügynököket a szükséges eszközökkel.
Lépjen a folyamat szerkesztőjéhez a folyamat szerkesztése művelet 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 (például Windowst vagy Macet) szeretne választani, 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
További szkripteket vagy feladatokat is hozzáadhat a folyamat lépéseihez. A feladat egy előre csomagolt szkript. 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ében 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 folyamat YAML-szerkesztőjében.
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: trueVá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 a 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.ymlA fájlban cserélje le ezt a 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 feladatig fusson három különböző platformon.
Minden ügynök egyszerre csak egy feladatot futtathat. Több feladat párhuzamos futtatásához több ügynököt kell konfigurálnia. 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 különböző platformokon futtathatja a Java különböző verzióit.
Megjegyzés
Kontextusban nem használhat strategy többszörösöket.
Ha egyetlen platformra és több verzióra szeretne építeni, adja hozzá a következő mátrixot a
azure-pipelines.ymlfájlhoz a Maven-feladat előtt és után.vmImagestrategy: matrix: jdk10: jdkVersion: "1.10" jdk11: jdkVersion: "1.11" maxParallel: 2Ezutá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)visszaváltsa a választott platformra.Ha több platformra és verzióra szeretne építeni, cserélje le a fájl teljes tartalmát
azure-pipelines.ymla 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@3 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. A folyamat futását okozhatja trigger: , amikor frissítést küld egy ágba. A YAML-folyamatok alapértelmezés szerint ci-eseményindítóval vannak konfigurálva az alapértelmezett ágon (ami általában main). Eseményindítókat állíthat be adott ágakhoz vagy lekéréses kérelmek érvényesítéséhez. Lekéréses kérelmek érvényesítési eseményindítója esetén egyszerűen cserélje le a trigger: lépést pr: az 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, adja hozzá az alábbi kódrészletek egyikét a
azure-pipelines.ymlfájl elején.trigger: - main - releases/*pr: - main - releases/*Megadhatja az ág teljes nevét (például
main) vagy egy előtag-egyező helyettesítő karaktert (példáulreleases/*).
Folyamat beállításai
Vannak olyan folyamatbeállítások, amelyeket nem kezel a YAML-fájlban, például a YAML-fájl elérési útja és a folyamat engedélyezett állapota. A beállítások konfigurálásához lépjen a folyamat részletei lapra , és válassza a További műveletek, Beállítások lehetőséget. A folyamatok navigálásával és böngészésével kapcsolatos további információkért lásd: Navigálás a folyamatok között.
A Folyamatbeállítások 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 új futtatások induljanak el 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 eseményindító-tí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 elindulna. Ha az új kérésfeldolgozás engedélyezve van, a feldolgozási folytatások futtatása az üzenetsor első kérésével kezdődik.
- 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.
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 a munkaelemeket a futtatáshoz csatolhatja. Ha a futtatásban szereplő munkaelemek automatikus csatolása van kiválasztva, meg kell adnia egy adott ágat vagy
*az összes ágat, amely az alapértelmezett. Ha megad egy ágat, a munkaelemek csak az adott ág futtatásaihoz lesznek 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 meghiúsulnak, tekintse meg, hogyan kezelheti a csapat értesítéseit
Munkaelem létrehozása sikertelen
A YAML-folyamatok nem rendelkeznek létrehozási munkaelemekkel a hibabeállításhoz , például a klasszikus buildelési folyamatokhoz. A klasszikus buildfolyamatok egyszakaszosak, és a létrehozási munkaelem a teljes folyamatra vonatkozik. A YAML-folyamatok többszakaszosak 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 Munkaelemek – REST API-hívás létrehozása vagy az Azure DevOps CLI az boards work-item create parancs a folyamat kívánt pontján.
Az alábbi példa két feladatot mutat be. 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'
Megjegyzés
Az Azure Boards lehetővé teszi a munkaelemek nyomon követésének konfigurálását több különböző folyamat, például az Agile vagy az Alapszintű folyamatok használatával. Minden folyamat különböző munkaelem-típusokkal rendelkezik, és nem minden munkaelem-tí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 succeed paramétert, és csak akkor fut, ha succeed false (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.
Ez a példa két feladatot használ, de ez a megközelítés több fázisban is használható.
Megjegyzés
Olyan marketplace-bővítményt is használhat, mint a kiadási hiba létrehozása, amely támogatja a többszakaszos YAML-folyamatokat.
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 folyamatok a használt nyelvhez való testreszabásáról:
Vagy ha ci-/CD-folyamatra szeretné növelni a CI-folyamatot, adjon meg egy üzembe helyezési feladatot , amely az alkalmazás környezetbe való üzembe helyezésének lépéseit tartalmazza.
Az útmutató témaköreiről további információt a Feladatok, Feladatok, Feladatkatalógus, 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éma referenciájában olvashat.