Azure сборка конвейера приносит TFV C ссылки на проект в git сборку - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть решение git в репозиториях azure, в котором есть три ссылки на проекты TFV C. Я сейчас пытаюсь создать конвейер сборки, используя YAML, но не могу найти ни одного шага, который загружает проекты из TFV C. Это дает мне такую ​​ошибку:
Error MSB3202: The project file "(path to project)\Standard.Logging.csproj" was not found

Я знаю, что это потому, что папки проекта не являются частью репозитория, но я не уверен, как извлечь их из tfsv c репо в мой агент сборки.

Вот мой azure -pipelines.yml:

pool: 'MyPool'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '$(solution)'
    feedsToUse: 'select'
    vstsFeed: '{company feed}'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" 
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

Как мне загрузить эти проекты?

1 Ответ

0 голосов
/ 23 апреля 2020

Боюсь, что конвейер YAML не поддерживает TFV C в настоящее время.

В качестве обходного пути вы можете перенести TFV C в Git.

Вы также можете создать конвейер построения пользовательского интерфейса classi c вместо конвейера YAML. TFV C поддерживается на конвейере пользовательского интерфейса classi c.

enter image description here

Пользовательский голос для поддержки TFV C в Yaml был отправлен в Microsoft развитие. Вы можете проголосовать или создать новый. см. здесь .

Обновление:

  • Чтобы перенести код из репозитория tfsv c в агент сборки.

Вы можете использовать TFV C Получить предметы rest api , чтобы получить предметы. Добавьте задачу сценария в свой конвейер, чтобы вызвать остальные API и сохранить элементы в агенте сборки. Пожалуйста, проверьте ниже пример скрипта powershell: чтобы получить токен личного доступа. Пожалуйста, обратитесь к документу здесь .

 $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 Get Items и получите url и путь к элементам ($files= $result.value | where { !$_.isFolder} | select path, url)

Затем получите каждый элемент и сохранить до $(System.DefaultWorkingDirectory). Например, если мой scopePath равен $/MyProject/, то элементы будут сохранены в $(System.DefaultWorkingDirectory)/MyProject/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...