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 myExtensionId
kivá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 myExtensionId
myPublisherId
. 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.
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. Ha különböző ügynökkészletekkel rendelkezik, ezek a szakaszok vagy feladatok párhuzamosan futnak. Ez a feltétel az alapértelmezett, ha nincs beállítva feltétel a YAML-ben.
Még akkor is, ha egy korábbi függőség meghiúsul, kivéve, ha a futtatás megszakad. Használja
succeededOrFailed()
a YAML-ben ehhez a feltételhez.Még akkor is, ha egy korábbi függőség meghiúsul, és 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úsul. 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 a nulla újrapróbálkozás. 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. Az Azure DevOps Server 2022-ben az újrapróbálkozások nem támogatottak ügynök nélküli feladatok esetén. 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ás frissítése 2025. június 14. – Újrapróbálkozás a kiszolgálói feladatokhoz.
- Az egyes újrapróbálkozási kísérletek közötti várakozási idő minden sikertelen kísérlet után megnő. Az első újrapróbálkozás másodpercek alatt megtörténik.
- 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'
- task: Bash@3
inputs:
targetType: # specific to each task
env:
ENV_VARIABLE_NAME: value
ENV_VARIABLE_NAME2: value
...
Az alábbi példa a script
Bash@3 billentyűparancsát, majd az azzal egyenértékű tevékenységszintaxist futtatja. Ez a példa egy értéket rendel a ENV_VARIABLE_NAME
környezeti változóhoz, és visszhangozza az értéket.
# Using the script shortcut syntax
- script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: "my value"
displayName: 'echo environment variable'
# Using the task syntax
- task: Bash@2
inputs:
script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: "my value"
displayName: 'echo environment variable'
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.
Kapcsolódó cikkek
Súgó és támogatás
- Hibaelhárítási tippek megismerése.
- Kérjen tanácsot a Stack Overflow-ról.
- Tegye közzé kérdéseit, keressen válaszokat, vagy javasoljon egy funkciót az Azure DevOps fejlesztői közösségében.
- Támogatást kérhet az Azure DevOpshoz.