当先前的管道失败时,我希望当前的管道陷入队列中。我不希望它通过脚本完成,我想要任何其他方式。只是我希望当下一个计划运行管道时,管道卡在队列中,因为上一次运行由于任何其他原因而失败。
azure-pipelines.yml
pool: Default
schedules:
- cron: "*/3 * * * *"
displayName: Every 10 minutes trigger
branches:
include:
- main
variables:
- group: dbbackup
parameters:
- name: selectedDatabase
type: string
default: testdb
values:
- testdb
- testdb1
- testdb2
stages:
- template: template.yml
parameters:
selectedDatabase: ${{ parameters.selectedDatabase }}
模板.yml
parameters:
selectedDatabase: ''
stages:
- stage: Backup
jobs:
- job: BackupDatabase
steps:
- script: |
mkdir "$(backupPath)"
displayName: 'Create backup directory'
- script: |
sqlcmd -S $(sqlServer) -U $(sqlUser) -P $(sqlPassword) -Q "BACKUP DATABASE [$(selectedDatabase)] TO DISK = N'$(backupPath)\\$(backupFileName)' WITH NOFORMAT, INIT, NAME = N'$(selectedDatabase)-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
displayName: 'Backup SQL Database'
- stage: Restore
dependsOn: Backup
condition: and(succeeded(), eq(dependencies.Backup.result, 'Succeeded'))
jobs:
- job: RestoreDatabase
steps:
- script: |
sqlcmd -S $(sqlServer) -U $(sqlUser) -P $(sqlPassword) -Q "RESTORE DATABASE [$(selectedDatabase)] FROM DISK = N'$(backupPath)\\$(backupFileName)' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5" -o "$(backupPath)\\restore_log.txt"
displayName: 'Restore SQL Database'
这是我的脚本
当先前的管道失败时,我希望当前的管道陷入队列中。我不希望它通过脚本完成,我想要任何其他方式。只是我希望当下一个计划运行管道时,管道卡在队列中,因为上一次运行由于任何其他原因而失败。
管道的每次运行都是独立的,不支持在上次管道运行失败时卡住当前管道。请参阅排队策略的doc。
可以实现的是查看目标pipeline的运行结果,并判断当前pipeline是否运行。
您可以在管道中添加
pre-step
,使用rest api Builds - List获取目标构建最新结果。请参阅我的回答获取代码示例。对于当前管道,您需要过滤到 value[1].result
,对于其他管道,需要过滤到 value[0].result
。