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ételek

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

    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ául releases/*).

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.

Screenshot of pipeline settings and more actions menu.

Válassza a Gépház a következő folyamatbeállítások konfigurálásához.

Screenshot of pipeline settings page.

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.

    Screenshot of setting to automatically link work items included in this run.

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

Screenshot of pipeline security menu options.

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.

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.