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

如何修改Azure Pipeline YAML实现仅构建不部署的PR验证流水线

调整Azure Pipeline实现PR触发仅构建不部署的验证流水线

你可以通过给AzureStaticWebApp@0任务添加skip_deployment参数,结合构建原因的条件判断,实现PR触发时仅构建不部署,同时保留原有非PR场景的完整构建部署流程。

修改后的YAML代码

name: Azure Static Web Apps CI/CD

pr:
  branches:
    include:
      - main
trigger: none

jobs:
- job: build_and_deploy_job
  displayName: Build and Deploy Job
  condition: or(eq(variables['Build.Reason'], 'Manual'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Reason'], 'IndividualCI'))
  pool:
    vmImage: ubuntu-latest
  variables:
  - group: Azure-Static-Web-Apps
  steps:  
  - checkout: self
    submodules: true
  - task: AzureStaticWebApp@0
    inputs:
      azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS)
      app_location: "/" # App source code path
      api_location: "" # Api source code path - optional
      output_location: "" # Built app content directory - optional
      # PR触发时跳过部署,仅执行构建
      skip_deployment: ${{ eq(variables['Build.Reason'], 'PullRequest') }}
    env:
        NEXT_PUBLIC_OPENAI_KEY: $(NEXT_PUBLIC_OPENAI_KEY)

关键修改说明

  • 添加skip_deployment: ${{ eq(variables['Build.Reason'], 'PullRequest') }}:通过表达式判断当前构建触发原因,当为PR时自动跳过部署环节,仅执行应用构建;非PR场景(手动触发、IndividualCI)则保持原有构建+部署逻辑
  • 保留原有的job条件、变量组、环境变量等配置,完全不破坏原有正常流水线的执行流程

备选方案(拆分步骤)

如果需要更清晰地分离构建和部署逻辑,也可以拆分步骤,通过条件判断分别执行:

name: Azure Static Web Apps CI/CD

pr:
  branches:
    include:
      - main
trigger: none

jobs:
- job: build_validation_job
  displayName: Build Validation & Deployment Job
  pool:
    vmImage: ubuntu-latest
  variables:
  - group: Azure-Static-Web-Apps
  steps:  
  - checkout: self
    submodules: true

  # PR触发时仅执行构建步骤
  - script: |
      npm install
      npm run build
    displayName: "Install dependencies and build app (PR Validation)"
    condition: eq(variables['Build.Reason'], 'PullRequest')
    env:
      NEXT_PUBLIC_OPENAI_KEY: $(NEXT_PUBLIC_OPENAI_KEY)

  # 非PR触发时执行完整构建部署
  - task: AzureStaticWebApp@0
    displayName: "Build and Deploy to Azure Static Web Apps"
    condition: ne(variables['Build.Reason'], 'PullRequest')
    inputs:
      azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS)
      app_location: "/"
      api_location: ""
      output_location: ""
    env:
        NEXT_PUBLIC_OPENAI_KEY: $(NEXT_PUBLIC_OPENAI_KEY)

这个方案直接用原生npm命令执行构建,完全独立于部署任务,适合需要自定义构建逻辑的场景。

内容的提问来源于stack exchange,提问作者kwaffle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:33:36