Uchovávání spuštění kanálu
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Uchovávání spuštění kanálu po dobu delší, než je nakonfigurované nastavení projektu , se zpracovává vytvořením zapůjčení uchovávání informací. Zapůjčení dočasného uchovávání informací se často vytváří automatickými procesy a dalšími trvalými zapůjčeními manipulací s uživatelským rozhraním nebo při Release Management uchovávání artefaktů, ale je možné s nimi také manipulovat prostřednictvím rozhraní REST API. Tady je několik příkladů úloh, které můžete přidat do kanálu Yaml pro účely uchovávání informací.
Požadavky
Ve výchozím nastavení můžou zásady uchovávání informací spravovat členové skupin Přispěvatelé, Správci buildu, Správci projektů a Správci vydaných verzí.
Příklad: Přepsání krátkého období uchovávání informací na úrovni projektu
V tomto příkladu je projekt nakonfigurovaný tak, aby odstranil spuštění kanálu po pouhých 30 dnech.
Pokud je kanál v tomto projektu důležitý a spuštění by se měla uchovávat déle než 30 dnů, tento úkol zajistí platnost spuštění po dobu dvou let přidáním nového zapůjčení uchovávání informací.
- task: PowerShell@2
condition: and(succeeded(), not(canceled()))
name: RetainOnSuccess
displayName: Retain on Success
inputs:
failOnStderr: true
targetType: 'inline'
script: |
$contentType = "application/json";
$headers = @{ Authorization = 'Bearer $(System.AccessToken)' };
$rawRequest = @{ daysValid = 365 * 2; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) };
$request = ConvertTo-Json @($rawRequest);
$uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1";
Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request;
Otázka: Je možné zachovat kanál pro méně než nakonfigurované hodnoty projektu?
Ne, zapůjčení nefunguje opačně. Pokud je projekt nakonfigurovaný tak, aby se zachoval po dobu dvou let, systém spuštění kanálu neodebere spuštění po dobu dvou let. Pokud chcete tato spuštění odstranit dříve, odstraňte je ručně nebo použijte ekvivalentní rozhraní REST API.
Příklad: Spuštění pouze ve větvích s názvem releases/*
by se měla uchovávat po dlouhou dobu.
Je to podobné jako v předchozím příkladu, je potřeba změnit jenom podmínku:
- task: PowerShell@2
condition: and(succeeded(), not(canceled()), startsWith(variables['Build.SourceBranch'], 'releases/'))
name: RetainReleaseBuildOnSuccess
displayName: Retain Release Build on Success
inputs:
failOnStderr: true
targetType: 'inline'
script: |
$contentType = "application/json";
$headers = @{ Authorization = 'Bearer $(System.AccessToken)' };
$rawRequest = @{ daysValid = 365 * 2; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) };
$request = ConvertTo-Json @($rawRequest);
$uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1";
Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request;
Příklad: Aktualizace okna uchovávání pro kanál s více fázemi na základě úspěšné fáze
Představte si dvoufázový kanál, který nejprve spustí sestavení a pak vydání. V případě úspěchu Build
zachová fáze spuštění tři dny, ale správce projektu chce, aby úspěšná Release
fáze prodloužila zapůjčení na jeden rok.
Fáze Build
si může kanál zachovat jako v předchozích příkladech, ale s jedním navíc: uložením nového zapůjčení Id
do výstupní proměnné je možné zapůjčení aktualizovat později při spuštění fáze vydání.
- task: PowerShell@2
condition: and(succeeded(), not(canceled()))
name: RetainOnSuccess
displayName: Retain on Success
inputs:
failOnStderr: true
targetType: 'inline'
script: |
$contentType = "application/json";
$headers = @{ Authorization = 'Bearer $(System.AccessToken)' };
$rawRequest = @{ daysValid = 365; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) };
$request = ConvertTo-Json @($rawRequest);
$uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1";
$newLease = Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request;
$newLeaseId = $newLease.Value[0].LeaseId
echo "##vso[task.setvariable variable=newLeaseId;isOutput=true]$newLeaseId";
Aktualizace zapůjčení uchovávání informací vyžaduje jiné volání rozhraní REST API.
- stage: Release
dependsOn: Build
jobs:
- job: default
variables:
- name: NewLeaseId
value: $[ stageDependencies.Build.default.outputs['RetainOnSuccess.newLeaseId']]
steps:
- task: PowerShell@2
condition: and(succeeded(), not(canceled()))
name: RetainOnSuccess
displayName: Retain on Success
inputs:
failOnStderr: true
targetType: 'inline'
script: |
$contentType = "application/json";
$headers = @{ Authorization = 'Bearer $(System.AccessToken)' };
$rawRequest = @{ daysValid = 365 };
$request = ConvertTo-Json $rawRequest;
$uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases/$(newLeaseId)?api-version=7.1-preview.2";
Invoke-RestMethod -uri $uri -method PATCH -Headers $headers -ContentType $contentType -Body $request;
Další kroky
Na těchto příkladech jste se naučili používat vlastní úlohy kanálu ke správě uchovávání běhů.
Naučili jste se:
- Přepsání krátkého intervalu uchovávání informací
- Přepsání uchovávání pro spuštění v konkrétních větvích
- Aktualizace zapůjčení uchovávání informací v případě, že by se spuštění mělo uchovávat ještě déle