是否可以在 azure yml 管道(azure git)上检出 TFVC 存储库?
is it possible to checkout TFVC repository on azure yml pipeline(azure git)?
我正在创建存储在 azure git 存储库中的 YAML 管道,但是我需要通过如下引用检查存在于同一项目中的 TFVC 存储库,
resources:
repositories:
- repository: Shared
name: Playground/Shared
type: tfvc
ref: master #branch name
我知道我们可以查看 azure Git、GitHub、Bitbucket 存储库。谁能澄清一下我们是否可以参考。
YAML 管道目前不支持 TFVC。
作为解决方法,您可以将 TFVC 迁移到 Git。
您还可以创建经典的 UI 构建管道而不是 YAML 管道。经典 UI 管道支持 TFVC。
更新:
- 将 tfsvc 存储库中的代码引入构建代理。
您可以使用 TFVC Get items rest api 来获取物品。在您的管道中添加脚本任务以调用其余部分 api 并将项目保存在构建代理中。
请检查以下示例 powershell 脚本:获取个人访问令牌。请参考文档here.
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/tfvc/items?scopePath=path&recursionLevel=full&api-version=5.1"
$PAT= "Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$result = Invoke-RestMethod -Uri $url -Method Get -Header @{Authorization = "Basic $base64AuthInfo"}
$files= $result.value | where { !$_.isFolder} | select path, url
foreach($file in $files){
$path = "$(System.DefaultWorkingDirectory)\" + $file.path.Substring(2)
New-Item -Path $path -ItemType File -Force
Invoke-RestMethod -Uri $file.url -Method get -Header @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -OutFile $path
}
以上脚本调用获取项目 Api 并获取项目 url 和路径 ($files= $result.value | where { !$_.isFolder} | select path, url
)
然后获取每个项目并保存到$(System.DefaultWorkingDirectory)
。
例如,如果我的 scopePath 是 $/MyProject/
,那么项目将保存到 $(System.DefaultWorkingDirectory)/MyProject/
我正在创建存储在 azure git 存储库中的 YAML 管道,但是我需要通过如下引用检查存在于同一项目中的 TFVC 存储库,
resources:
repositories:
- repository: Shared
name: Playground/Shared
type: tfvc
ref: master #branch name
我知道我们可以查看 azure Git、GitHub、Bitbucket 存储库。谁能澄清一下我们是否可以参考。
YAML 管道目前不支持 TFVC。
作为解决方法,您可以将 TFVC 迁移到 Git。
您还可以创建经典的 UI 构建管道而不是 YAML 管道。经典 UI 管道支持 TFVC。
更新:
- 将 tfsvc 存储库中的代码引入构建代理。
您可以使用 TFVC Get items rest api 来获取物品。在您的管道中添加脚本任务以调用其余部分 api 并将项目保存在构建代理中。
请检查以下示例 powershell 脚本:获取个人访问令牌。请参考文档here.
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/tfvc/items?scopePath=path&recursionLevel=full&api-version=5.1"
$PAT= "Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$result = Invoke-RestMethod -Uri $url -Method Get -Header @{Authorization = "Basic $base64AuthInfo"}
$files= $result.value | where { !$_.isFolder} | select path, url
foreach($file in $files){
$path = "$(System.DefaultWorkingDirectory)\" + $file.path.Substring(2)
New-Item -Path $path -ItemType File -Force
Invoke-RestMethod -Uri $file.url -Method get -Header @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -OutFile $path
}
以上脚本调用获取项目 Api 并获取项目 url 和路径 ($files= $result.value | where { !$_.isFolder} | select path, url
)
然后获取每个项目并保存到$(System.DefaultWorkingDirectory)
。
例如,如果我的 scopePath 是 $/MyProject/
,那么项目将保存到 $(System.DefaultWorkingDirectory)/MyProject/