TFS 2017 Rest API - получить одобрение для релиза после его утверждения - PullRequest
0 голосов
/ 07 мая 2019

Я хочу иметь возможность регистрировать, кто утвердил релиз во время его запуска. У нас есть требования к аудиту, чтобы доказать, кто является привратником среды. Вот порядок событий:

  1. Выпуск срабатывает, садится и ждет одобрения.
  2. Другой пользователь одобряет выпуск
  3. Релиз завершен.

Поскольку релиз происходит, я хочу иметь возможность записать, кто был утверждающим. Мы обнаружили, что если вы используете API утверждений, вы можете получить ApprovalID. Проблема в том, что это может быть выполнено только между шагами 1 и 2. После того, как релиз был одобрен, вы больше не можете получить ApprovalID, он пуст.

Затем мы просмотрели информацию для конкретного выпуска, и в области утверждающих нет никаких данных. Даже в примерах ответов на документы вы видите, что данных просто нет. Могу ли я что-нибудь сделать в 2017 году, чтобы получить эту информацию?

https://docs.microsoft.com/en-us/azure/devops/integrate/previous-apis/rm/releases?view=tfs-2017

$RecentReleaseUrl = $TFSCollectionPath + $TFSProjectName + "/_apis/Release/approvals?releaseIdsFilter=$RecentRealease&api-version=3.2-preview.2"

$RecentReleasedefinition = Invoke-RestMethod -Uri $RecentReleaseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

$ApprovalID = $RecentReleasedefinition.value.id  

1 Ответ

1 голос
/ 08 мая 2019

@ Амит Баранес приблизил нас, я обновил его ответ нашим решением.

function DefinitionHelper.GetReleaseApprover
{
    $Local = "False"

    #If running locally then use local values, when running on the build server use the env variables
    if ($Local -eq "True")
    {
        $ReleaseID = "16734"
        $Environment = "TEST"
    }
    else
    {
        $ReleaseID = $env:RELEASE_RELEASEID
        $Environment = $env:RELEASE_ENVIRONMENTNAME
    }

    # Base64-encodes the Personal Access Token (PAT) appropriately
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $Username,$TFSToken)))

    #Url to get details for Release
    $ReleaseUrl = $TFSCollectionPath + $TFSProjectName +"/_apis/Release/releases/"+$ReleaseID+"?api-version=3.2-preview.2"
    Write-Host "ReleaseUrl :"$ReleaseUrl
    #Rest-API call to get details for Release
    $ReleaseDetails = Invoke-RestMethod -Method Get -ContentType application/json -Uri $ReleaseUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    #Get the current environment
    $EnvironmentDetails = $ReleaseDetails.environments | where name -eq $Environment
    #Get the approval
    $ApproverDetails = $EnvironmentDetails.preDeployApprovals.approvedBy   

}

...