具有两个存储库,不同文件夹的Azure DevOps构建管道

时间:2020-07-22 15:24:53

标签: git azure-devops azure-pipelines

我们正在迁移一些旧项目,作为第一步,我已将第一个项目放入git repo。作为临时措施,我们还添加了bin,packages和references文件夹以单独的存储库。

但是代码不会与bin文件夹中的文件一起生成,我需要一个文件夹。

在本地我们将运行restore.ps1脚本,该脚本会将bin文件夹等复制到主项目中。

因此,如果我们将二进制项目克隆到c:\ binaries中,则会创建project1文件夹。 在该回购中,我们具有以下结构。

c:\git\binaries\project1\bin\
c:\git\binaries\project1\packages\
c:\git\binaries\project1\references\
c:\git\binaries\project1\restore.ps1

在代码存储库中,我们将存储库克隆到c:\ git文件夹中,我们获得了project1文件夹。

c:\git\project1\project1\project1.sln
c:\git\project1\project1\project1\bin\
c:\git\project1\project1\references\
c:\git\project1\project1\packages\

我已经在Azure Devops中运行了简单的生成管道,并创建了以下内容...

trigger:
- master

pool:
  vmImage: 'windows-latest'

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

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

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

但是,这是一个太深的文件夹。

我一直在寻找命令来提取二进制仓库并运行restore.ps1。 但这无法正常工作,因为我需要上一层。

- checkout: git://Binaries/project1@master

- task: PowerShell@2
  inputs:
    targetType: 'filePath'
    filePath: $(System.DefaultWorkingDirectory)\test2.ps1

我知道您可以设置工作目录,但是我认为整个构建过程都受yml文件等位置的限制。

1 个答案:

答案 0 :(得分:1)

Yaml管道支持checking out multiple repos。因此,您可以在同一管道中检出两个存储库:

resources:
  repositories:
  - repository: MyGitHubRepo # The name used to reference this repository in the checkout step
    type: github   #For github git repo
    endpoint: xxx
    name: MyGitHubOrgOrUser/MyGitHubRepo
  - repository: MyAzureReposGitRepo
    endpoint: xxx
    type: git   #For azure devops git repo
    name: MyAzureReposGitRepo

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- checkout: self         #check out the main repo
- checkout: MyGitHubRepo #check out the code repo

然后,您可以使用CMD task和xcopy命令或Copy Files task将二进制存储库复制到主项目文件夹中。您甚至不需要使用restore1.ps文件。

以及两个存储库的路径,请参见check out path