İşlem Hattı ÇalıştırmaSı Saklama
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Bir işlem hattı çalıştırmasının yapılandırılan proje ayarlarından daha uzun süre saklanması , bekletme kiralamalarının oluşturulmasıyla işlenir. Geçici saklama kiralamaları genellikle kullanıcı arabirimini değiştirerek otomatik işlemler ve daha kalıcı kiralamalar tarafından oluşturulur veya Release Management yapıtları koruduğunda, ancak REST API aracılığıyla da işlenebilir. Burada, saklama için yaml işlem hattınıza ekleyebileceğiniz bazı görev örnekleri verilmiştir.
Önkoşullar
Varsayılan olarak, saklama ilkelerini Katkıda Bulunanlar, Derleme Yöneticileri, Proje Yöneticileri ve Yayın Yöneticileri gruplarının üyeleri yönetebilir.
Örnek: Kısa proje düzeyinde saklama penceresini geçersiz kılma
Bu örnekte, proje yalnızca 30 gün sonra işlem hattı çalıştırmalarını silmek üzere yapılandırılmıştır.
Bu projedeki bir işlem hattı önemliyse ve çalıştırmalar 30 günden daha uzun süre tutulacaksa, bu görev yeni bir bekletme kirası ekleyerek çalıştırmanın iki yıl boyunca geçerli olmasını sağlar.
- 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;
Soru: İşlem hattı yapılandırılan proje değerlerinden daha az bir değer için tutulabilir mi?
Hayır, kiralar tersten çalışmaz. Bir proje iki yıl boyunca tutulacak şekilde yapılandırılmışsa işlem hattı çalıştırmaları sistem iki yıl boyunca çalıştırmaları kaldırmaz. Bu çalıştırmaları daha önce silmek için el ile silin veya eşdeğer REST API'sini kullanın.
Örnek: Yalnızca adlı releases/*
dallardaki çalıştırmalar uzun süre saklanmalıdır
Bu yukarıdakine benzer, yalnızca koşulun değişmesi gerekir:
- 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;
Örnek: Çok aşamalı işlem hattının bekletme penceresini, aşama başarısına göre güncelleştirme
Önce bir derleme ve sonra bir yayın çalıştıran iki aşamalı bir işlem hattı düşünün. Başarılı olduğunda, Build
aşama çalıştırmayı üç gün boyunca korur, ancak proje yöneticisi kirayı bir yıla uzatmak için başarılı Release
bir aşama ister.
Aşama Build
, işlem hattını yukarıdaki örneklerde olduğu gibi koruyabilir, ancak tek bir eklemeyle: yeni kiraları Id
bir çıkış değişkenine kaydederek, yayın aşaması çalıştırıldığında kira daha sonra güncelleştirilebilir.
- 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";
Bekletme kirasını güncelleştirmek için farklı bir REST API çağrısı gerekir.
- 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;
Sonraki adımlar
Bu örneklerle, çalıştırma saklamayı yönetmek için özel işlem hattı görevlerini kullanmayı öğrendiniz.
Şunları öğrendiniz:
- Kısa bekletme penceresini geçersiz kılma
- Belirli dallardaki çalıştırmalar için bekletmeyi geçersiz kılma
- Bir çalıştırmanın daha da uzun süre saklanması gerektiğinde bekletme kirası güncelleştirme