向推送包至Feed的Azure Pipelines YAML添加Environment报错排查
问题解决:Azure Pipelines中
Unexpected value 'environment'错误 错误原因
你在普通job(以- job:定义)中配置了environment字段,但Azure Pipelines的普通job类型并不支持该属性。只有deployment job(以- deployment:定义)或者在stage级别配置,才能关联环境资源。
解决方法
方法一:将作业改为Deployment Job
将Pack和Push作业改为deployment类型,同时添加部署策略(如runOnce),这是官方推荐的部署流程配置方式,支持审批、部署历史等特性:
trigger: - main variables: vm.image: 'ubuntu-latest' sdk.version: '8.x' build.configuration: 'release' devops.feed: '----' system.debug: true version: 8.0.4 stages: - stage: Build jobs: - job: Build pool: vmImage: $(vm.image) steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Build inputs: command: build projects: '**/*.csproj' arguments: '--configuration $(build.configuration)' - stage: Test dependsOn: Build jobs: - job: Test pool: vmImage: $(vm.image) steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Test inputs: command: test projects: 'test/**/*.csproj' arguments: '--configuration $(build.configuration)' - stage: Deploy dependsOn: Test jobs: - deployment: Pack pool: vmImage: $(vm.image) environment: 'production' strategy: runOnce: deploy: steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Pack inputs: command: pack projects: 'src/**/*.csproj' arguments: '--configuration $(build.configuration) --output $(Build.ArtifactStagingDirectory)' versioningScheme: byEnvVar versionEnvVar: version - task: PublishPipelineArtifact@1 displayName: Export inputs: artifact: $(build.configuration) targetPath: '$(Build.ArtifactStagingDirectory)' - deployment: Push dependsOn: Pack pool: vmImage: $(vm.image) environment: 'production' strategy: runOnce: deploy: steps: - task: DownloadPipelineArtifact@2 displayName: Import inputs: artifact: $(build.configuration) targetPath: '$(Build.ArtifactStagingDirectory)' - task: DotNetCoreCLI@2 displayName: 'Push' inputs: command: push packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg' publishVstsFeed: $(devops.feed) versioningScheme: byEnvVar versionEnvVar: version
方法二:在Stage级别配置Environment
如果不需要deployment job的额外特性,可直接将environment配置在Deploy stage下,让整个阶段的所有作业都关联到production环境:
trigger: - main variables: vm.image: 'ubuntu-latest' sdk.version: '8.x' build.configuration: 'release' devops.feed: '----' system.debug: true version: 8.0.4 stages: - stage: Build jobs: - job: Build pool: vmImage: $(vm.image) steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Build inputs: command: build projects: '**/*.csproj' arguments: '--configuration $(build.configuration)' - stage: Test dependsOn: Build jobs: - job: Test pool: vmImage: $(vm.image) steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Test inputs: command: test projects: 'test/**/*.csproj' arguments: '--configuration $(build.configuration)' - stage: Deploy dependsOn: Test environment: 'production' jobs: - job: Pack pool: vmImage: $(vm.image) steps: - task: UseDotNet@2 displayName: Setup inputs: packageType: sdk version: $(sdk.version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: Pack inputs: command: pack projects: 'src/**/*.csproj' arguments: '--configuration $(build.configuration) --output $(Build.ArtifactStagingDirectory)' versioningScheme: byEnvVar versionEnvVar: version - task: PublishPipelineArtifact@1 displayName: Export inputs: artifact: $(build.configuration) targetPath: '$(Build.ArtifactStagingDirectory)' - job: Push dependsOn: Pack pool: vmImage: $(vm.image) steps: - task: DownloadPipelineArtifact@2 displayName: Import inputs: artifact: $(build.configuration) targetPath: '$(Build.ArtifactStagingDirectory)' - task: DotNetCoreCLI@2 displayName: 'Push' inputs: command: push packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg' publishVstsFeed: $(devops.feed) versioningScheme: byEnvVar versionEnvVar: version
内容的提问来源于stack exchange,提问作者Miguel Moura
相关产品推荐
相关产品推荐

