我们正在迁移一些旧项目,作为第一步,我已将第一个项目放入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文件等位置的限制。
答案 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。