Megosztás a következőn keresztül:


Folyamat dekorátorkifejezési környezete

Azure DevOps Services

A folyamat dekoratőreinek hozzáférésük van ahhoz a folyamathoz, amelyben futnak. Folyamat dekoratőr-szerzőként ezzel a környezettel hozhat döntéseket a dekorátor viselkedéséről. A kontextusban elérhető információk különbözőek a folyamatok és a kiadások esetében. A dekorátorok azt követően is futnak, hogy a feladatneveket a rendszer globálisan egyedi azonosítókra (GUID-kre) oldja fel. Amikor a dekoratőr hivatkozni szeretne egy tevékenységre, a név vagy kulcsszó helyett a GUID-t kell használnia.

Tipp.

Tekintse meg a bővítményfejlesztéssel kapcsolatos legújabb dokumentációnkat az Azure DevOps Extension SDK használatával.

Források

A folyamaterőforrások elérhetők az resources objektumon.

Adattárak

Jelenleg csak egy kulcs van: repositories. repositories egy térkép az adattár azonosítójától az adattár adataiig.

Tervezői buildben az elsődleges adattár aliasa a .__designer_repo EGY YAML-folyamatban az elsődleges adattár neve self. A kiadási folyamatban az adattárak nem érhetők el. A kiadási összetevő változói elérhetők.

Ha például egy YAML-folyamatban szeretné kinyomtatni az self adattár nevét:

steps:
- script: echo ${{ resources.repositories['self'].name }}

Az adattárak a következő tulajdonságokat tartalmazzák:

resources['repositories']['self'] =
{
	"alias": "self",
	"id": "<repo guid>",
	"type": "Git",
	"version": "<commit hash>",
	"name": "<repo name>",
	"project": "<project guid>",
	"defaultBranch": "<default ref of repo, like 'refs/heads/main'>",
	"ref": "<current pipeline ref, like 'refs/heads/topic'>",
	"versionInfo": {
		"author": "<author of tip commit>",
		"message": "<commit message of tip commit>"
	},
	"checkoutOptions": {}
}

Állás

A feladat részletei elérhetők az job objektumon.

Az adatok a következőképpen néznek ki:

job = 
{
	"steps": [
		{
			"environment": null,
			"inputs": {
				"script": "echo hi"
			},
			"type": "Task",
			"task": {
				"id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
				"name": "CmdLine",
				"version": "2.146.1"
			},
			"condition": null,
			"continueOnError": false,
			"timeoutInMinutes": 0,
			"id": "5c09f0b5-9bc3-401f-8cfb-09c716403f48",
			"name": "CmdLine",
			"displayName": "CmdLine",
			"enabled": true
		}
	]
}

Ha például csak akkor szeretne feltételesen hozzáadni egy feladatot, ha még nem létezik:

- ${{ if not(containsValue(job.steps.*.task.id, 'f3ab91e7-bed6-436a-b651-399a66fe6c2a')) }}:
  - script: echo conditionally inserted

Változók

A folyamatváltozók is elérhetők.

Ha például a folyamatnak van egy úgynevezett myVarváltozója, annak értéke a dekorátor számára elérhető lesz.variables['myVar']

Ha például egy dekoratőrnek leiratkozást szeretne adni, kereshetnénk egy változót. A folyamat azon szerzői, akik le szeretnék tiltani a dekorátort, beállíthatják ezt a változót, és a dekorátor nem lesz injektálva. Ha a változó nem jelenik meg, a dekorátort a szokásos módon injektáljuk.

my-decorator.yml

- ${{ if ne(variables['skipInjecting'], 'true') }}:
  - script: echo Injected the decorator

Ezután a szervezet folyamatában a szerző kérheti a dekoratőrt, hogy ne injektálja magát.

pipeline-with-opt-out.yml

variables:
  skipInjecting: true
steps:
- script: echo This is the only step. No decorator is added.

Tevékenységnevek és GRAFIKUS AZONOSÍTÓK

A dekorátorok akkor futnak, ha a feladatok már grafikus felhasználói felületté változtak. Vegye figyelembe a következő YAML-t:

steps:
- checkout: self
- bash: echo This is the Bash task
- task: PowerShell@2
  inputs:
    targetType: inline
    script: Write-Host This is the PowerShell task

Mindegyik lépés egy tevékenységhez van leképzve. Minden tevékenység egyedi GUID azonosítóval rendelkezik. A dekorátorok futtatása előtt a feladatnevek és a kulcsszavak a feladat GRAFIKUS GUID-jeire lesznek leképeződve. Ha egy dekoratőr egy másik tevékenység meglétét szeretné ellenőrizni, akkor a név vagy kulcsszó helyett a tevékenység GUID azonosítója alapján kell keresnie.

Normál tevékenységek esetén (amelyeket a task kulcsszóval együtt ad meg) megtekintheti a tevékenység GUID-azonosítóját task.json . Az előző példához hasonló és bash ehhez hasonló checkout speciális kulcsszavakhoz a következő GRAFIKUS GUID-ket használhatja:

Kulcsszó GUID Feladatnév
checkout 6D15AF64-176C-496D-B583-FD2AE21D4DF4 n/a, lásd: megjegyzés
bash 6C731C3C-3C68-459A-A5C9-BDE6E6595B5B Bash
script D9BAFED4-0B18-4F58-968D-86655B4D2CE9 CmdLine
powershell E213FF0F-5D5C-4791-802D-52EA3E7BE1F1 PowerShell
pwsh E213FF0F-5D5C-4791-802D-52EA3E7BE1F1 PowerShell
publish ECDC45F6-832D-4AD9-B52B-EE49E94659BE PublishPipelineArtifact
download 30f35852-3f7e-4c0c-9a88-e127b4f97211 DownloadPipelineArtifact

A feladatnevek és kulcsszavak feloldása után az előző YAML a következő lesz:

steps:
- task: 6D15AF64-176C-496D-B583-FD2AE21D4DF4@1
  inputs:
    repository: self
- task: 6C731C3C-3C68-459A-A5C9-BDE6E6595B5B@3
  inputs:
    targetType: inline
    script: echo This is the Bash task
- task: E213FF0F-5D5C-4791-802D-52EA3E7BE1F1@2
  inputs:
    targetType: inline
    script: Write-Host This is the PowerShell task

Tipp.

Ezeket a GRAFIKUS GUID-ket a task.json megfelelő beépített feladathoz találja. Az egyetlen kivétel az checkoutügynök natív képessége. A GUID az Azure Pipelines szolgáltatásba és -ügynökbe van beépítve.