【发布时间】:2021-03-29 14:07:08
【问题描述】:
我有这两个阶段
stages:
- stage: PrepareBuildTools
jobs:
- job:
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- stage: Build
jobs:
- job:
steps:
- task: DotNetCoreCLI@2
displayName: 'Initialize EntityFrameworkCore'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-ef'
- task: DotNetCoreCLI@2
displayName: 'Create migration'
inputs:
command: custom
custom: ef
arguments: 'migrations script -i -o $(System.DefaultWorkingDirectory)\migration.sql --project $(dbProject) -s $(startUpProject)'
- task: VSBuild@1
displayName: Build solution
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: FileTransform@1
displayName: Transform appSettings.json
inputs:
folderPath: '$(build.artifactStagingDirectory)\WebApp.zip'
fileType: 'json'
targetFiles: '**/appsettings.json'
如您所见,Build solution 任务构建解决方案并在D:\a\1\a\ 中生成WebApp.zip
问题在于,在后续阶段,ZIP 文件不存在,这让我相信这些阶段都在自己的环境中运行(不同的虚拟机?)。
有什么方法可以确保每个阶段都在相同的环境中运行?我真的不需要他们在不同的阶段运行,我主要是想使用阶段,这样我就可以在最终的“部署”阶段之前进行批准。
我尝试在我的 YAML 定义文件的根目录下定义一个池:
pool:
vmImage: 'windows-latest'
然后假设所有阶段都将在该阶段运行,但不是。
【问题讨论】:
标签: azure azure-devops yaml