我有一个Azure Pipeline版本。 * .yaml文件正确执行Python脚本(PythonScript@0
)。该脚本本身会创建(如果不存在),执行和发布Azure ML管道。当手动执行构建或由提交触发构建时,它将运行良好。
但是我想每天安排ML管道(Python脚本)的自动执行。
我尝试了以下方法:
pipeline_id = published_pipeline.id
recurrence = ScheduleRecurrence(frequency="Day", interval=1)
recurring_schedule = Schedule.create(ws,
name=<schedule_name>,
description="Title",
pipeline_id=pipeline_id,
experiment_name=<experiment_name>,
recurrence=recurrence)
在这种情况下,管道将在3-4秒内运行并成功终止。但是,不会执行Python脚本。
此外,我尝试使用Build计划执行管道,但是我认为这是错误的方法。它重建了一个管道,但是我需要执行一个先前发布的管道。
schedules:
- cron: "0 0 * * *"
displayName: Daily build
always: true
我如何每天执行已发布的管道?我应该使用Release(哪些代理,哪些任务吗?)?
此外,我尝试使用Build计划执行管道,但是我认为这是错误的方法。它重建了一个管道,但是我需要执行以前发布的管道。
假设您的python相关任务在许多其他任务之后运行,那么建议您不要简单地调度整个构建管道,它会重新运行管道(其他任务+ python脚本)。
仅可以安排管道而不是任务,因此,我建议您可以创建一个新的构建管道来运行python脚本。另外,私有代理更适合这种情况。
现在,我们获得了两个管道:用于运行python脚本的原始A和B。
将B的build completion设置为A,这样,如果A第一次成功构建,B将会在那之后运行。
添加命令行任务或PS任务作为管道A的最后一个任务。此任务将负责将B的相应xx.yml(在本地修改yml,然后将其提交)文件更新到schedule B。
这样,如果A(其他任务)成功构建,则B(运行python脚本的管道)将执行。在成功构建之后,B将每天运行。
希望它有帮助,如果我误解了任何内容,请随时纠正我。