You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向推送包至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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:43:10