Tevékenységtípusok és használat

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

Az Azure Pipelines-feladatok lépésekből állnak, amelyek lehetnek feladatok vagy szkriptek. A feladatok előre csomagolt szkriptek vagy eljárások, amelyek műveletet hajtanak végre, vagy bemenetek készletét használják a folyamatautomatizálás definiálásához. Ez a cikk a folyamattevékenységeket és azok használatát ismerteti. A sémainformációkat a steps.task definícióban találja.

Az Azure Pipelines számos beépített feladatot tartalmaz, amelyek alapvető buildelési és üzembe helyezési forgatókönyveket tesznek lehetővé. Az elérhető beépített Azure Pipelines-tevékenységek listáját az Azure Pipelines tevékenységreferenciájában találja. A Visual Studio Marketplace-ről is telepíthet feladatokat, vagy egyéni feladatokat is létrehozhat.

A feladat minden lépése alapértelmezés szerint ugyanabban a környezetben fut, akár a gazdagépen, akár egy feladattárolóban. A lépéscélok használatával szabályozhatja az egyes tevékenységek környezetét. Ha néhány feladatot párhuzamosan szeretne futtatni több ügynökön, vagy ügynök használata nélkül, olvassa el a feladatok megadása a folyamatban című témakört.

Feladatkezelés

A feladatok az Azure DevOps szervezeti szintjén érhetők el és telepíthetők. Csak a szervezet számára létező feladatokat és feladatverziókat használhatja.

A tevékenységkorlátozások> alatt letilthatja a beépített feladatokat, a Marketplace-feladatokat vagy mindkettőt a Szervezeti beállítások>folyamatbeállításai között. Ha letiltja a beépített és a Marketplace-feladatokat is, csak az Azure DevOps csomóponti parancssori felületével telepített feladatok érhetők el.

A Marketplace-feladatok letiltása segíthet a folyamatok biztonságának javításában. A legtöbb esetben nem szabad letiltania a beépített feladatokat. További információ: Az elérhető tevékenységek szabályozása.

Egyéni tevékenységek

A Visual Studio Marketplace számos bővítményt kínál, amelyek az Azure Pipelines feladatkatalógusának kibővítéséhez telepíthetők. Egyéni feladatokat is létrehozhat. További információ: Egyéni folyamatok feladatbővítményének hozzáadása.

A YAML-folyamatokban név szerint hivatkozik a feladatokra. Ha az egyéni tevékenység neve megegyezik egy beépített tevékenységnévvel, a folyamat a beépített feladatot használja. A helyzet elkerülése érdekében hivatkozhat az Ön egyéni feladatára a feladat létrehozásakor rendelt egyedi GUID használatával. További információ: task.json összetevőinek ismertetése.

Feladatverziók

A feladatok verziószámozottak, és meg kell adnia a csővezetékben használt feladatok fő verzióját. A verzió megadása segít megelőzni a feladat új verzióinak kiadásával kapcsolatos problémákat.

A csővezetékek automatikusan frissülnek az új kisebb feladat-verziók, például az 1.2-1.3-as verzió használatára. A kisebb feladatverziók általában visszafelé kompatibilisek, de bizonyos esetekben kiszámíthatatlan hibák fordulhatnak elő, amikor egy tevékenység automatikusan frissül.

Ha megjelenik egy új fő feladatverzió, például a 2.0, a folyamat a megadott fő verziót használja tovább, amíg manuálisan át nem állítja az új fő verzióra. A build naplók riasztásokat adnak, ha új főbb verziók érhetők el. Csak a szervezethez tartozó feladatverziókat használhatja.

A YAML-ben a feladat nevében adja meg a főverziót @ . Ha például a feladat 2. verzióját szeretné használni, adja megPublishTestResults.PublishTestResults@2 Megadhatja, hogy melyik alverziót szeretné használni, ha megadja a feladat teljes verziószámát a @következő után: például GoTool@0.3.1.

Tevékenységbeállítások

A YAML-folyamat task lépéseihez az alábbi tulajdonságok érhetők el. További információ: steps.task definition.

Ingatlan Típus Description
task karakterlánc Első tulajdonságként kötelező megadni. A futtatni kívánt feladat neve.
inputs karakterlánc A tevékenység bemenetei név-érték párok használatával.
condition karakterlánc A tevékenység futtatásának feltételei.
continueOnError Boolean Hibás állapot esetén is folytatódjon-e a futás?
displayName karakterlánc A feladat ember által olvasható neve.
enabled Boolean Azt határozza meg, hogy a feladat futtatásakor fut-e a feladat.
env karakterlánc A folyamatkörnyezetbe leképezendő változók név-érték párok használatával.
name karakterlánc A lépés azonosítója.
retryCountOnTaskFailure karakterlánc Újrapróbálkozések száma, ha a feladat meghiúsul.
target karakterlánc A feladat futtatására szolgáló környezet.
timeoutInMinutes karakterlánc A tevékenység automatikus megszakítása előtt futtatható maximális idő.

Feltételek

A tevékenységek nem tudják meghatározni, hogy a tevékenység befejezése után folytatják-e a folyamatfeladatot, csak befejezési állapotot adnak, például succeeded vagy failed. Az alsóbb rétegbeli tevékenységek és feladatok ezután ennek az állapotnak a alapján határozhatják condition meg, hogy fut-e.

A feltételek tulajdonság határozza meg a feladat futtatásának feltételeit. Alapértelmezés szerint egy lépés akkor fut, ha a feladatban még semmi sem hiúsult meg, és az azt közvetlenül megelőző lépés befejeződött.

Az alapértelmezett értékeket felülbírálhatja vagy testre szabhatja úgy, hogy a lépést akkor is futtatja, ha vagy csak akkor, ha egy korábbi függőség meghiúsul, vagy más kimenetelű. Definiálhat egyéni feltételeket is, amelyek kifejezésekből állnak.

Feljegyzés

A feltételek az azonos ügynökkészlettel rendelkező összes korábbi közvetlen és közvetett függőségre vonatkoznak. A különböző ügynökkészletekben lévő szakaszok vagy feladatok párhuzamosan futnak.

A korábbi függőségi állapoton alapuló feltételek a következők:

  • Sikeres: Csak akkor fut, ha az összes korábbi függőség sikeres. Ez a viselkedés az alapértelmezett, ha nincs beállítva feltétel a YAML-ben. A feltétel alkalmazásához adja meg a condition: succeeded().
  • Sikeres vagy sikertelen: Futtatás akkor is, ha egy korábbi függőség meghiúsul, kivéve, ha a futtatás megszakadt. A feltétel alkalmazásához adja meg a condition: succeededOrFailed().
  • Mindig: Futtatás akkor is, ha egy korábbi függőség meghiúsul, még akkor is, ha a futtatás megszakadt. A feltétel alkalmazásához adja meg a condition: always().
  • Sikertelen: Csak akkor fut, ha egy korábbi függőség meghiúsul. A feltétel alkalmazásához adja meg a condition: failed().

A következő YAML-példában a PublishTestResults@2 feltétel miatt akkor is fut, ha az előző lépés sikertelen volt.

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'
- task: PublishTestResults@2
  inputs:
    testResultsFiles: "**/TEST-*.xml"
  condition: succeededOrFailed()

Folytatás hiba esetén

A continueOnError tulajdonság jelzi a feladatnak, hogy a hibáktól függetlenül folytatja-e a futást, és jelentse-e a sikerességet. Ha be van trueállítva, ez a tulajdonság arra utasítja a feladatot, hogy hagyja figyelmen kívül az állapotot failed , és folytassa a futtatásokat. Az alsóbb rétegbeli lépések és feladatok úgy kezelik a feladat eredményét, mint success amikor futtatási döntéseket hoznak.

Engedélyezve

Alapértelmezés szerint a feladat mindig fut, amikor a folyamat fut. A feladat letiltásához beállíthatja az enabled értékét false-ra. A feladat ideiglenes letiltásával eltávolíthatja a feladatot a folyamatból tesztelési célból vagy adott üzemelő példányok esetén.

Újrapróbálkozások száma feladathiba esetén

A retryCountOnTaskFailure tulajdonság megadja, hogy hány alkalommal próbálkozzon újra a tevékenység sikertelensége esetén. Az alapértelmezett érték a nulla újrapróbálkozás.

  • Az újrapróbálkozések maximális száma 10.
  • Az újrapróbálkozást megelőző várakozási idő minden sikertelen kísérlet után megnő, exponenciális visszalépési stratégiát követve. Az első újrapróbálkozás 1 másodperc után történik, a második újrapróbálkozás 4 másodperc után, a tizedik újrapróbálkozás pedig 100 másodperc után.
  • A feladat újrapróbálkozása nem biztosít idempotenciát. Az első próbálkozás mellékhatásai, például egy külső erőforrás részleges létrehozása, az újrapróbálkozás meghiúsulását okozhatják.
  • A feladat számára nem teszik elérhetővé az újrapróbálkozások számát.
  • A feladathiba figyelmeztetést ad a tevékenységnaplókhoz, amely jelzi, hogy a feladat újrapróbálkozása előtt sikertelen volt.
  • Minden újrapróbálkozási kísérlet ugyanazon feladatcsomópont részeként jelenik meg a felhasználói felületen.

Feljegyzés

A retryCountOnTaskFailure tulajdonsághoz az ügynök 2.194.0-s vagy újabb verziója szükséges. Az Azure DevOps Server 2022-ben az újrapróbálkozások nem támogatottak ügynök nélküli feladatokhoz. További információ: Az Azure DevOps szolgáltatás 2021. november 16-i frissítése – Automatikus újrapróbálkozások egy tevékenységhez és az Azure DevOps szolgáltatásfrissítése 2025. június 14. – Újrapróbálkozás a kiszolgálói feladatokhoz.

Target

A feladatok végrehajtási környezetben futnak, amely vagy az ügynök gazdagépe, vagy egy tároló. Egy feladat felülírhatja a környezetének beállításait egy target megadásával. Az elérhető lehetőségek az host ügynök gazdagépének és a folyamatban definiált tárolóknak a megcélzása. Az alábbi példában SampleTask@1 a gazdagépen fut, és AnotherTask@1 egy tárolóban fut.

resources:
  containers:
  - container: pycontainer
    image: python:3.11

steps:
- task: SampleTask@1
  target: host
- task: AnotherTask@1
  target: pycontainer

Időkorlát

Az időtúllépési időszak akkor kezdődik, amikor a tevékenység elindul, és nem tartalmazza azt az időt, amikor a tevékenység várólistára kerül, vagy egy ügynökre vár.

Feljegyzés

A pipeline-ok munka szintű időtúllépést is megadhatnak a feladat szintű időtúllépés mellett. Ha a feladatszint időtúllépési időköze egy tevékenység befejeződése előtt eltelik, a futó feladat leáll, még akkor is, ha a tevékenység hosszabb időtúllépési intervallummal van konfigurálva. További információ: Időtúllépések.

Környezeti változók

Környezeti változók használatával rendszer- vagy felhasználó által meghatározott adatokat képezhet le a feladatfolyamatba.

A YAML-folyamatfeladatok megadhatnak egy tulajdonságot env , amely a környezeti változókat képviselő név-érték sztringeket sorolja fel.

- task: AzureCLI@2
  env:
    ENV_VARIABLE_NAME: value
    ENV_VARIABLE_NAME2: value
  ...

A környezeti változókat script lépésekkel, vagy parancssori, Bash- vagy PowerShell-feladatok szkriptjeinek használatával állíthatja be.

Az alábbi példa egy script olyan lépést futtat, amely egy értéket rendel a ENV_VARIABLE_NAME környezeti változóhoz, és visszhangozza az értéket.

- script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Az előző szkript funkcionálisan megegyezik egy Bash@3 feladat bemenettel való futtatásával script . Az alábbi példa a szintaxist task használja.

- task: Bash@3
  inputs:
    script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Eszköztelepítői feladatok létrehozása

A buildelési eszköz telepítői feladatai lehetővé teszik a buildelési folyamat számára a függőségek telepítését és szabályozását. A buildelési eszköz telepítőfeladatait a következő műveletekhez használhatja:

  • Telepítsen egy eszközt vagy futtatókörnyezetet egy buildhez, beleértve a Microsoft által üzemeltetett ügynököket is.
  • Ellenőrizze az alkalmazást vagy a tárat egy függőség több verziójával, például Node.js.

Az eszköztelepítői feladatok listáját az Eszközműveletek című témakörben találja.

Példa: Alkalmazás tesztelése és ellenőrzése a Node.js több verzióján

Az alábbi példa egy buildelési folyamatot állít be egy alkalmazás futtatásához és érvényesítéséhez a Node.jstöbb verzióján.

Hozzon létre egy azure-pipelines.yml fájlt, amely a következő tartalommal rendelkezik a projekt alapkönyvtárában.

pool:
  vmImage: 'windows-latest'

jobs:
- job: NodeJS
  strategy:
    matrix:
      node14:
        nodeVersion: '14.x'
      node16:
        nodeVersion: '16.x'
    maxParallel: 2
  steps:
    - task: NodeTool@0
      displayName: 'Install Node.js $(nodeVersion)'
      inputs:
        versionSpec: '$(nodeVersion)'
        checkLatest: true

    - script: |
        echo Using Node version $(nodeVersion)
        node --version
      displayName: 'Verify Node Installation'

Mentse és futtassa a csővezetéket. A feladat kétszer fut, egyet a változóban megadott Node.js minden egyes verziójához nodeVersion .

A Node.js Tool Installer letölti a Node.js verziót, ha az még nincs telepítve az ügynökre. A parancssori szkript a telepített verziót írja a parancssorba.

Súgó és támogatás