【发布时间】:2022-02-10 04:31:44
【问题描述】:
我从使用 Jenkins 的经验来到 Azure DevOps,很明显,正在运行的管道中的代码实际上是在 Jenkins 服务器上运行的(无论托管该服务器的机器是什么)。所以我假设 Azure DevOps 管道在 https://dev.azure.com/ 的某个地方运行。也许这是真的,也许不是。也许这取决于“环境”的设置方式以及该环境中的资源。我的多阶段管道如下所示:
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
stages:
- stage: build
displayName: Build
jobs:
- job: Build
steps:
- checkout: self
#without this first one, bad things happen!!
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'config'
nugetConfigPath: 'NuGet.config'
- task: NuGetToolInstaller@1
- 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)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: Release
displayName: Release
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
jobs:
- deployment:
displayName: Release
environment:
name: QA
resourceType: VirtualMachine
strategy:
runOnce:
deploy:
steps:
- task: CopyFiles@2
inputs:
SourceFolder: '$(Agent.WorkFolder)\1\drop'
Contents: '**\*.zip'
OverWrite: true
TargetFolder: 'C:\QA\XXX\YYY'
我知道“C:\QA\XXX\YYY”在我要部署到的服务器上(QA Azure DevOps 环境中的一个资源)。但这些地点在哪里?
$(Build.ArtifactStagingDirectory)
$(Agent.WorkFolder)
其中一些路径中有“D:”,但在我要部署到的服务器上却没有 D:。 Microsoft 的文档似乎从来没有真正解决过这个问题,但理解它对于任何试图跟上 Azure DevOps 速度的人来说似乎都是必不可少的。
【问题讨论】:
标签: azure-devops yaml continuous-deployment