Azure DevOps Server中appendCommitMessagetoRunName参数配置位置咨询
解决Azure DevOps YAML管道appendCommitMessageToRunName参数不生效问题
appendCommitMessageToRunName是管道根级配置项,不属于任务环境变量,你之前把它放在step的env里完全错误,这就是参数不生效的核心原因。- 正确的配置位置是在YAML最顶层,与
trigger、parameters、variables同级的位置,同时可以用name字段自定义运行名称。
修改后的完整管道示例
trigger: none # Continuous integration triggers # 正确配置位置:管道根级别 name: 'DB-Deploy-$(Build.BuildId)' # 自定义运行名称,可根据需求调整 appendCommitMessageToRunName: false parameters: - name: cherryPickVersions displayName: 'Scripts To Deploy: Comma Separated List Of Full Version Numbers' default: '' type: string - name: buildStage type: object default: stage: 'Build' displayName: 'Temp Build' variableGroupName: 'DB Common' #Database.Login, Database.Password, JDBC, Database.Name - name: deploymentStages type: object default: - stage: 'Dev' dependsOn: 'Build' displayName: 'Deploy Dev' pauseForCodeReview: false generateDriftAndChangeReport: false #requires check database to be provisioned staticCodeAnalysis: false #requires python3 installed on agent and pip on PATH variableGroupName: 'DB Dev' #Database.Login, Database.Password, JDBC, Database.Name, Check.JDBC - stage: 'QA' dependsOn: 'Dev' displayName: 'Deploy QA' pauseForCodeReview: true generateDriftAndChangeReport: false #requires check database to be provisioned staticCodeAnalysis: false #requires python3 installed on agent and pip on PATH variableGroupName: 'DB QA' #Database.Login, Database.Password, JDBC, Database.Name, Check.JDBC - stage: 'UAT' dependsOn: 'QA' displayName: 'Deploy UAT' pauseForCodeReview: true generateDriftAndChangeReport: false #requires check database to be provisioned staticCodeAnalysis: false #requires python3 installed on agent and pip on PATH variableGroupName: 'DB UAT' #Database.Login, Database.Password, JDBC, Database.Name, Check.JDBC # - stage: 'Prod' # dependsOn: 'UAT' # displayName: 'Deploy Prod' # pauseForCodeReview: true # generateDriftAndChangeReport: false #requires check database to be provisioned # staticCodeAnalysis: false #requires python3 installed on agent and pip on PATH # variableGroupName: 'DB Prod' #Database.Login, Database.Password, JDBC, Database.Name, Check.JDBC variables: BUILD_NAME: 'Build' FLYWAY: 'E:\Agents\$(Agent.Name)\Flyway\flyway -user="$(Database.Login)" -password="$(Database.Password)" -licenseKey=$(Flyway.License.Key) -outOfOrder=true' RELEASE_PREVIEW: 'Release-Preview.sql' DRIFT_AND_CHANGE_REPORT: 'Drift-And-Change-Report.html' DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME: 'Drift And Change Report' cherryPickVersions: ${{parameters.cherryPickVersions}} stages: - stage: Build pool: $(Agent.Pool) displayName: ${{parameters.buildStage.displayName}} jobs: - job: Build variables: - group: ${{parameters.buildStage.variableGroupName}} - group: Flyway.Vars steps: - script: '$(FLYWAY) clean info -url="$(JDBC)"' failOnStderr: true displayName: 'Clean Build DB' env: FLYWAY_CLEAN_DISABLED: false - script: '$(FLYWAY) migrate info -url="$(JDBC)" -baselineOnMigrate=true -baselineVersion=$(Baseline.Version)' failOnStderr: true displayName: 'Validate Migrate Scripts' - script: '$(FLYWAY) undo info -url="$(JDBC)" -target="$(First.Undo.Script)"?' continueOnError: true displayName: 'Validate Undo Scripts' - task: CopyFiles@2 inputs: targetFolder: '$(System.ArtifactsDirectory)' - task: PublishBuildArtifacts@1 displayName: 'Publish Build Artifact' inputs: ArtifactName: '$(BUILD_NAME)' PathtoPublish: '$(System.ArtifactsDirectory)' - ${{each stage in parameters.deploymentStages}}: - stage: ${{stage.stage}} pool: $(Agent.Pool) displayName: ${{stage.displayName}} dependsOn: ${{stage.dependsOn}} jobs: - job: PreRelease displayName: Release Preview variables: - group: ${{stage.variableGroupName}} - group: Flyway.Vars steps: - task: DownloadBuildArtifacts@0 inputs: buildType: 'current' downloadType: 'single' artifactName: '$(BUILD_NAME)' downloadPath: '$(System.ArtifactsDirectory)' - script: '$(FLYWAY) migrate -dryRunOutput="$(System.ArtifactsDirectory)\${{stage.stage}}-$(RELEASE_PREVIEW)" -url="$(JDBC)" -baselineOnMigrate=true -baselineVersion=$(Baseline.Version)' workingDirectory: '$(System.DefaultWorkingDirectory)' failOnStderr: true displayName: 'Pre-Release Deployment Report' env: FLYWAY_CLEAN_DISABLED: true - task: PublishBuildArtifacts@1 displayName: 'Publish Release Preview' inputs: ArtifactName: 'Release Preview' PathtoPublish: '$(System.ArtifactsDirectory)\${{stage.stage}}-$(RELEASE_PREVIEW)' - ${{if eq(stage.staticCodeAnalysis, true)}}: - job: ChangeReport timeoutInMinutes: 0 # how long to run the job before automatically cancelling cancelTimeoutInMinutes: 2 # how much time to give 'run always even if cancelled tasks' before stopping them dependsOn: 'PreRelease' displayName: Change Report With Code Analysis variables: - group: ${{stage.variableGroupName}} - group: Flyway.Vars steps: - script: 'pip install sqlfluff==1.2.1' displayName: 'Install SQL Fluff' failOnStderr: true - script: '$(FLYWAY) check -changes -drift -code -check.buildUrl=$(Check.JDBC) -url="$(JDBC)" -check.reportFilename="$(System.ArtifactsDirectory)\$(Database.Name)-$(Build.BuildId)-$(DRIFT_AND_CHANGE_REPORT)"' workingDirectory: '$(System.DefaultWorkingDirectory)' failOnStderr: true displayName: '$(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' env: FLYWAY_CLEAN_DISABLED: false - task: PublishBuildArtifacts@1 displayName: 'Publish $(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' inputs: ArtifactName: '$(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' PathtoPublish: '$(System.ArtifactsDirectory)\$(Database.Name)-$(Build.BuildId)-$(DRIFT_AND_CHANGE_REPORT)' - ${{if and(eq( stage.generateDriftAndChangeReport, true), eq( stage.staticCodeAnalysis, false))}}: - job: ChangeReport displayName: Change Report timeoutInMinutes: 0 dependsOn: 'PreRelease' variables: - group: ${{stage.variableGroupName}} - group: Flyway.Vars steps: - script: '$(FLYWAY) check -cherryPick=${{parameters.cherryPickVersions}} -drift -check.buildUrl=$(Check.JDBC) -url="$(JDBC)" -check.reportFilename="$(System.ArtifactsDirectory)\$(Database.Name)-$(Build.BuildId)-$(DRIFT_AND_CHANGE_REPORT)"' workingDirectory: '$(System.DefaultWorkingDirectory)' failOnStderr: true displayName: '$(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' env: FLYWAY_CLEAN_DISABLED: false - task: PublishBuildArtifacts@1 displayName: 'Publish $(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' inputs: ArtifactName: '$(DRIFT_AND_CHANGE_REPORT_DISPLAY_NAME)' PathtoPublish: '$(System.ArtifactsDirectory)\$(Database.Name)-$(Build.BuildId)-$(DRIFT_AND_CHANGE_REPORT)' - ${{if and(eq( stage.generateDriftAndChangeReport, false), eq( stage.staticCodeAnalysis, false))}}: - job: ChangeReport pool: server displayName: Skipping Change Report dependsOn: 'PreRelease' - ${{if eq(stage.pauseForCodeReview, true)}}: - job: CodeReview displayName: Approval dependsOn: 'ChangeReport' pool: server steps: - task: ManualValidation@0 displayName: 'Approve Change Report Prior To Release' timeoutInMinutes: 4320 # job times out in 1 hour inputs: notifyUsers: | [Bidvest]\Project QA Team instructions: 'Approve Deployment' - ${{if eq(stage.pauseForCodeReview, false)}}: - job: CodeReview pool: server displayName: Skipping Code Review dependsOn: 'ChangeReport' - job: Deploy displayName: Deployment dependsOn: 'CodeReview' variables: - group: ${{stage.variableGroupName}} - group: Flyway.Vars steps: - script: '$(FLYWAY) -cherryPick=${{parameters.cherryPickVersions}} info migrate info -url="$(JDBC)" -baselineOnMigrate=true -baselineVersion=$(Baseline.Version)' workingDirectory: $(System.DefaultWorkingDirectory) displayName: ${{stage.displayName}} failOnStderr: true env: FLYWAY_CLEAN_DISABLED: true # clean drops a target DB schema, keep disabled except for build step name: ${{parameters.cherryPickVersions}}
关键说明
appendCommitMessageToRunName必须在管道最顶层配置,它控制的是整个管道运行实例的名称,不属于任何任务的环境变量,所以之前放在step的env块里完全不生效。name字段用于自定义运行名称,支持使用变量(比如$(Build.BuildId))生成动态名称,设置appendCommitMessageToRunName: false后,提交信息不会追加到名称末尾。- Azure DevOps Server 2022 RC2完全支持这两个配置项,无需担心版本兼容性问题。
内容的提问来源于stack exchange,提问作者Colin.Smit
相关产品推荐
相关产品推荐

