如何修改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
相关产品推荐
相关产品推荐

