azure - 一个阶段的输出不可用于后续阶段
问题描述
我有这两个阶段
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
任务构建解决方案并WebApp.zip
在D:\a\1\a\
问题在于,在后续阶段,ZIP 文件不存在,这让我相信这些阶段都在自己的环境中运行(不同的虚拟机?)。
有什么方法可以确保每个阶段都在相同的环境中运行?我真的不需要它们在不同的阶段运行,我主要想使用阶段,这样我就可以在最终的“部署”阶段之前进行批准。
我尝试在我的 YAML 定义文件的根目录中定义一个池,如下所示:
pool:
vmImage: 'windows-latest'
然后假设所有阶段都将在那个阶段运行,但不是。
解决方案
我必须添加更多任务才能完成这项工作
- task: CopyFiles@2
displayName: Copy build output
inputs:
contents: '$(build.artifactStagingDirectory)\WebApp.zip'
targetFolder: '$(Build.StagingDirectory)'
- task: CopyFiles@2
displayName: Copy migration file
inputs:
contents: '$(System.DefaultWorkingDirectory)\migration.sql'
targetFolder: '$(Build.StagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.StagingDirectory)'
ArtifactName: 'buildoutput'
publishLocation: 'Container'
在我需要上述文件的阶段,只需下载工件
- task: DownloadBuildArtifacts@0
inputs:
artifactName: 'buildoutput'
buildType: 'current'
downloadType: 'single'
downloadPath: '$(System.ArtifactsDirectory)'
然后我可以这样使用它们:$(System.ArtifactsDirectory)\buildoutput\WebApp.zip
推荐阅读
- html - 页脚未出现在本地主机服务器上
- python - 虽然不在嵌套列表 PYTHON 中工作
- docker - Docker:使用 --volume 绑定挂载的文件权限
- github - 如何对github上的文件进行编号,以便它们按顺序出现?
- c++ - 检查类型是否直接派生自“启用 if”上下文中的另一种类型(是其子类型)
- ztree - 如何将来自项目的多个输入数据组合到ztree中的一个(字符串)变量?
- android - canvas.scale 与枢轴,鼠标坐标
- caching - 这会阻止外部页面上的图像缓存吗?寻找解决方案
- android - 离子无法添加android
- email - 如何使用 GMAIL API 将标题“收件人和回复”添加到已生成的草稿中