如何在Azure DevOps中安排Python脚本的执行(在成功构建之后)?

问题描述 投票:0回答:1

我有一个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(哪些代理,哪些任务吗?)?

azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task
1个回答
0
投票

此外,我尝试使用Build计划执行管道,但是我认为这是错误的方法。它重建了一个管道,但是我需要执行以前发布的管道。

假设您的python相关任务在许多其他任务之后运行,那么建议您不要简单地调度整个构建管道,它会重新运行管道(其他任务+ python脚本)。

仅可以安排管道而不是任务,因此,我建议您可以创建一个新的构建管道来运行python脚本。另外,私有代理更适合这种情况。

现在,我们获得了两个管道:用于运行python脚本的原始A和B。

  1. 将B的build completion设置为A,这样,如果A第一次成功构建,B将会在那之后运行。

  2. 添加命令行任务或PS任务作为管道A的最后一个任务。此任务将负责将B的相应xx.yml(在本地修改yml,然后将其提交)文件更新到schedule B

  3. 这样,如果A(其他任务)成功构建,则B(运行python脚本的管道)将执行。在成功构建之后,B将每天运行。

希望它有帮助,如果我误解了任何内容,请随时纠正我。

© www.soinside.com 2019 - 2024. All rights reserved.