【问题标题】:VSTS Personal Access Token (PAT) vs OAUTH: different results of queryVSTS Personal Access Token (PAT) vs OAUTH:不同的查询结果
【发布时间】:2018-11-30 18:17:00
【问题描述】:

我正在使用 PowerShell 任务在某个时间点后查询 TFVC 存储库以获取更改。为了在本地开发,我创建了一个与我的用户相关的 PAT。在发布定义中,我启用了Allow scripts to access OAUTH token。如果我现在分别使用 PAT 执行发布定义,OAUTH 我会得到现有更改的不同结果(例如,计数为 1 用于 PAT,0 用于 OAUTH)。查询完全相同:

https://xxx.visualstudio.com/xxx/_apis/tfvc/changesets?searchCriteria.itemPath=$projectPath&searchCriteria.fromDate=$cloudVersionTimestampUTC&api-version=4.1

这里是执行查询的代码:

Write-Host "Get Request with the URI '$uri'"
if ($localDevelopment) {
    $GetResponse = Invoke-RestMethod `
        -Uri $uri `
        -Headers @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYSTEM_ACCESSTOKEN)")) } 

    Write-Host "Requested last changes for local development: $($GetResponse | ConvertTo-Json -Depth 100)"  
}
else {
    $GetResponse = Invoke-RestMethod `
        -Uri $uri `
        -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } 
    Write-Host "Requested last changes: $($GetResponse | ConvertTo-Json -Depth 100)"
}

有人知道为什么会这样吗?

谢谢

编辑: 这里是Project Collection Build Service (xxx) 帐户的权限:

同样重要的是,我们不使用托管代理,而是使用自定义代理。

【问题讨论】:

  • Project Collection Build Service (Xxx) 帐户对该路径的权限是什么?
  • @starianchen-MSFT:感谢您的回复。请查看编辑。
  • 如果你用一个新的发布定义试试,结果如何?可以分享一下 OneDrive 上的详细日志吗? (将 system.debug 设置为 true)

标签: powershell oauth azure-devops azure-pipelines-release-pipeline tfvc


【解决方案1】:

问题在于比较 PAT 和 OAUTH 时对时间戳的不同处理。如您所见,我将变量$cloudVersionTimestampUTC 用于fromDate。当我设置时间戳时,我没有添加Z(比如MM-dd-yyyy HH:mm:ss 而不是MM-dd-yyyy HH:mm:ssZ)。 PAT 使用给定的时间戳作为 UTC,当未提供 Z 时,OAUTH 将其解释为本地时间(但我不确定是什么 - 例如默认配置文件)。这当然会导致不同数量的变更集(如果丢失的变更集位于 UTC 和本地时间之间的差异中)。

最后,我必须明确说明时间戳。所以我所做的是将时间戳作为字符串存储为 Azure 资源中的标记并执行以下操作:

$cloudVersionTimestampUTC = [DateTime]($cloudJobDefinition.Tags.'version-timestamp')
$cloudVersionTimestampUTC = (Get-Date -Date $cloudVersionTimestampUTC).ToString("MM-dd-yyyy HH:mm:ssZ")

然后我能够进行 REST 调用并检索相同数量的变更集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2017-01-16
    • 2022-12-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多