Tevékenységtípusok > használat

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

A tevékenységek egy folyamat műveletet hajtanak végre, és egy olyan csomagolt szkript vagy eljárás, amely bemenetek készletével absztrakcióra kerül. A tevékenységek a folyamatok automatizálásának definiálása építőelemei.

Feladat futtatásakor az összes feladat egymás után fut. Ha ugyanazt a feladatkészletet több ügynökön szeretné párhuzamosan futtatni, vagy egyes feladatokat ügynök használata nélkül szeretne futtatni, tekintse meg a feladatokat.

Alapértelmezés szerint minden tevékenység ugyanabban a környezetben fut, akár a gazdagépen , akár egy feladattárolóban.

Lehetséges, hogy lépéscélok használatával szabályozhatja az egyes tevékenységek környezetét.

További információ arról, hogyan adhatja meg egy tevékenység tulajdonságait a beépített tevékenységekkel.

Feladat futtatásakor az összes feladat egymás után fut egy ügynökön. Ha ugyanazt a feladatkészletet több ügynökön szeretné párhuzamosan futtatni, vagy egyes feladatokat ügynök használata nélkül szeretne futtatni, tekintse meg a feladatokat.

A tevékenységek által támogatott általános attribútumokról a steps.task YAML-referenciája nyújt további információt.

Egyéni tevékenységek

Az Azure DevOps beépített feladatokat tartalmaz az alapvető buildelési és üzembe helyezési forgatókönyvek engedélyezéséhez. Saját egyéni feladatot is létrehozhat.

A Visual Studio Marketplace emellett számos bővítményt is kínál, amelyek mindegyike az előfizetésre vagy a gyűjteményre való telepítéskor egy vagy több feladattal bővíti a feladatkatalógust. Saját egyéni bővítményeket is írhat, hogy feladatokat adjon hozzá az Azure Pipelineshoz.

A YAML-folyamatokban név szerint hivatkozik a tevékenységekre. Ha egy név egy dobozos és egy egyéni tevékenységnek is megfelel, a beépített tevékenység elsőbbséget élvez. A kockázat elkerülése érdekében használhatja a tevékenység GUID azonosítót vagy az egyéni tevékenység teljes nevét:

steps:
- task: myPublisherId.myExtensionId.myContributionId.myTaskName@1 #format example
- task: qetza.replacetokens.replacetokens-task.replacetokens@3 #working example

A feladat megkereséséhez myPublisherId és myExtensionIdkiválasztásához válassza a Get on a task in the marketplace (Feladatra való felkérés ) lehetőséget a piactéren. Az URL-sztringben itemName szereplő értékek és myExtensionIdmyPublisherId . A teljes nevet úgy is megtalálhatja, hogy hozzáadja a feladatot egy kiadási folyamathoz, és a tevékenység szerkesztésekor a YAML megtekintése lehetőséget választja.

Feladatverziók

A tevékenységek verziószámozottak, és meg kell adnia a folyamatban használt tevékenység főverzióját. Ez segíthet megelőzni a feladat új verzióinak kiadásával kapcsolatos problémákat. A tevékenységek általában visszafelé kompatibilisek, de bizonyos esetekben kiszámíthatatlan hibák léphetnek fel a tevékenységek automatikus frissítésekor.

Új alverzió (például 1.2–1.3) kiadásakor a folyamat automatikusan az új verziót használja. Ha azonban új főverziót ad ki (például 2.0), a folyamat addig használja a megadott főverziót, amíg meg nem szerkessze a folyamatot, és manuálisan át nem vált az új főverzióra. A naplóban megjelenik egy értesítés arról, hogy egy új főverzió érhető el.

Beállíthatja, hogy melyik alverziót használja a rendszer, ha megadja egy feladat teljes verziószámát az @ előjel után (például: GoTool@0.3.1). Csak a szervezethez tartozó feladatverziókat használhatja.

A YAML-ben a feladat nevében adja meg a főverziót @ . Például a feladat 2. PublishTestResults verziójához való rögzítéshez:

steps:
- task: PublishTestResults@2

A YAML-folyamatok nem érhetők el a TFS-ben.

Feladatvezérlési lehetőségek

Minden tevékenység kínál néhány vezérlőbeállítást.

A vezérlőbeállítások kulcsként érhetők el a task szakaszban.

- task: string # Required as first property. Name of the task to run.
  inputs: # Inputs for the task.
    string: string # Name/value pairs
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.

A vezérlőbeállítások kulcsként érhetők el a task szakaszban.

- task: string # Required as first property. Name of the task to run.
  inputs: # Inputs for the task.
    string: string # Name/value pairs
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.

A vezérlőbeállítások kulcsként érhetők el a task szakaszban.

- task: string # Required as first property. Name of the task to run.
  inputs: # Inputs for the task.
    string: string # Name/value pairs
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.

Feljegyzés

Egy adott tevékenység vagy feladat nem tudja egyoldalúan eldönteni, hogy a feladat/szakasz folytatódik-e. Ez azt teheti, hogy sikeres vagy sikertelen állapotot kínál, és az alárendelt feladatok/feladatok mindegyike rendelkezik egy feltételszámítással, amely lehetővé teszi számukra, hogy eldöntsék, futnak-e vagy sem. Az alapértelmezett feltétel, amely gyakorlatilag "fut, ha sikeres állapotban vagyunk".

A folytatás hiba esetén ezt finoman módosítja. Ez gyakorlatilag "trükkök" az összes alsóbb rétegbeli lépések / feladatok kezelésére bármilyen eredményt", mint a "siker" érdekében, hogy ezt a döntést. Vagy másképpen fogalmazva: "ne vegye figyelembe ennek a feladatnak a hibáját, amikor döntést hoz a tartalmazó struktúra állapotáról".

Az időtúllépési időszak akkor kezdődik, amikor a tevékenység elkezd futni. 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 folyamatok feladatszintű időtúllépést is megadhatnak a tevékenységszintű időtúllépés mellett. Ha a feladatszint időtúllépési időköze a lépés befejezése előtt eltelik, a futó feladat leáll, még akkor is, ha a lépés hosszabb időtúllépési intervallummal van konfigurálva. További információ: Időtúllépések.

Ebben a YAML-ben akkor is fut, PublishTestResults@2 ha az előző lépés a sikeresOrFailed() feltétel miatt meghiúsul.

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

Feltételek

  • Csak akkor, ha az azonos ügynökkészlettel rendelkező összes korábbi közvetlen és közvetett függőség sikeres volt. Ha különböző ügynökkészletekkel rendelkezik, ezek a szakaszok vagy feladatok egyidejűleg futnak. Ez az alapértelmezett érték, ha nincs megadva feltétel a YAML-ben.

  • Még akkor is, ha egy korábbi függőség meghiúsult, kivéve, ha a futtatás megszakadt. Használja succeededOrFailed() a YAML-ben ehhez a feltételhez.

  • Még akkor is, ha egy korábbi függőség meghiúsult, még akkor is, ha a futtatás megszakadt. Használja always() a YAML-ben ehhez a feltételhez.

  • Csak akkor, ha egy korábbi függőség meghiúsult. Használja failed() a YAML-ben ehhez a feltételhez.

Lépés cél

A feladatok végrehajtási környezetben futnak, amely az ügynök gazdagépe vagy egy tároló. Az egyes lépések felülírhatják a környezetét egy target. Az elérhető lehetőségek az ügynök gazdagépének megcélzására szolgáló szó host , valamint a folyamatban definiált tárolók. Példa:

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

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

Itt a SampleTask gazdagépen fut, és AnotherTask egy tárolóban fut.

Újrapróbálkozések száma sikertelen tevékenység esetén

Az újrapróbálkozések számának megadására használható retryCountOnTaskFailure , ha a feladat meghiúsul. Az alapértelmezett érték nulla. A tevékenységtulajdonságokról további információt a YAML-séma steps.task című témakörében talál.

- task: <name of task>
  retryCountOnTaskFailure: <max number of retries>
   ...

Feljegyzés

  • Az ügynök 2.194.0-s vagy újabb verzióját igényli. Ügynök nélküli tevékenységek esetén nem támogatott.
  • A sikertelen tevékenység másodpercek alatt újrapróbálkozik. Az egyes újrapróbálkozási kísérletek közötti várakozási idő minden sikertelen kísérlet után megnő.
  • A feladat idempotenciáját nem feltételezi. Ha a tevékenységnek vannak mellékhatásai (például ha részben hozott létre külső erőforrást), akkor a második futtatáskor meghiúsulhat.
  • A tevékenység számára elérhetővé tett újrapróbálkozás-számról nincs információ.
  • A rendszer figyelmeztetést ad a tevékenységnaplókhoz, amely azt jelzi, hogy az újrapróbálkozás előtt sikertelen volt.
  • A feladat újrapróbálkozására tett összes kísérlet ugyanazon tevékenységcsomópont részeként jelenik meg a felhasználói felületen.

A YAML-folyamatok nem érhetők el a TFS-ben.

Környezeti változók

Minden tevékenység rendelkezik egy env tulajdonsággel, amely a tevékenységfolyamatba leképezett környezeti változókat képviselő sztringpárok listája.

task: AzureCLI@2
displayName: Azure CLI
inputs: # Specific to each task
env:
  ENV_VARIABLE_NAME: value
  ENV_VARIABLE_NAME2: value
  ...

Az alábbi példában a script parancssori feladat parancsikonja, majd az azzal egyenértékű tevékenységszintaxis fut. Ez a példa egy értéket rendel a AZURE_DEVOPS_EXT_PAT környezeti változóhoz, amelyet az Azure DevOps CLI-vel történő hitelesítéshez használnak.

# Using the script shortcut syntax
- script: az pipelines variable-group list --output table
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'List variable groups using the script step'

# Using the task syntax
- task: CmdLine@2
  inputs:
    script: az pipelines variable-group list --output table
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'List variable groups using the command line task'

Eszköztelepítők létrehozása (Azure Pipelines)

Az eszköztelepítők lehetővé teszik a buildelési folyamat számára a függőségek telepítését és szabályozását. Konkrétabban a következőket teheti:

  • Telepítsen egy eszközt vagy futtatókörnyezetet menet közben (még a Microsoft által üzemeltetett ügynökökön is) a CI-buildhez.

  • Ellenőrizze az alkalmazást vagy a tárat egy függőség több verziójával, például Node.js.

Beállíthatja például, hogy a buildelési folyamat futtassa és ellenőrizze az alkalmazást a Node.js több verziójára.

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

Hozzon létre egy azure-pipelines.yml fájlt a projekt alapkönyvtárában az alábbi tartalommal.

pool:
  vmImage: ubuntu-latest

steps:
# Node install
- task: UseNode@1
  displayName: Node install
  inputs:
    version: '16.x' # The version we're installing
# Write the installed version to the command line
- script: which node

Hozzon létre egy új buildfolyamatot , és futtassa. Figyelje meg, hogyan fut a build. A Node.js Tool Installer letölti a Node.js verziót, ha még nincs az ügynökön. A parancssori szkript naplózza a Node.js verzió helyét a lemezen.

A YAML-folyamatok nem érhetők el a TFS-ben.

Eszköztelepítői feladatok

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

A beépített és a Marketplace-feladatok letiltása

A szervezet beállításai lapon letilthatja a Marketplace-feladatokat, a beépített feladatokat vagy mindkettőt. A Marketplace-feladatok letiltása segíthet a folyamatok biztonságának növelésében. Ha letiltja a helyszíni és a Marketplace-feladatokat is, csak a telepített tfx feladatok érhetők el.

Súgó és támogatás