gpt4 book ai didi

如果失败,Azure管道重新运行任务

转载 作者:行者123 更新时间:2023-12-03 03:46:31 24 4
gpt4 key购买 nike

我希望有人可以帮助我了解解决此问题的最佳方法是与 azure pipeline 相关的方法。

我有一个运行 selenium 脚本的 azure 管道 yaml 文件。该脚本运行得很好,但由于代理的限制,这个 selenium 脚本每天一次无法返回误报。我的 yaml 文件如下所示:

schedules:
- cron: '5 */1 * * *'
displayName: Daily Trigger
branches:
include:
- BYOD
always: true

variables:
vmImageName: 'ubuntu-latest'

jobs:
- job: Main
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
addToPath: true
- script: |
python -m pip install --upgrade pip
status=$?
if [ $status -eq 0 ]; then
echo "##[section]Upgraded pip..."
else
python -m pip install --upgrade pip
fi

pip install selenium

status=$?
if [ $status -eq 0 ]; then
echo "##[section]Installed sellenium..."
else
pip install selenium
fi

- task: Pythonscript@0
continueOnError: true
inputs:
scriptSource: 'filePath'
scriptPath: './script1.py'
- task: Pythonscript@0
condition: failed()
inputs:
scriptSource: 'filePath'
scriptPath: './script1.py'

该脚本每小时触发一次。有时它几天都不会失败,但最终会失败,因为它找不到元素,但此错误是由于代理加载内容的速度可能太慢所致。

所以我的想法是,如果第一次失败,让管道重新运行一次,我相信这最终应该解决问题。

检查 azure DevOps 门户,可以选择重新运行失败的任务,但我在 azure yaml 文档中找不到任何内容。

我发现的解决方案之一是复制作业,并利用条件

谁能告诉我是否有更好的选择来解决这个问题?

非常感谢您的时间和帮助。

编辑:我确实尝试了上面的解决方案。发生故障时的输出正如我所预期的那样,如您所见:

enter image description here

第一个 python 脚本失败,触发第二个脚本并成功,但整个管道返回失败。如果两个任务之一成功,是否可以选择如何使管道成功?因为任务是相同的并且意味着我的脚本正在运行

最佳答案

没有现成的解决方案可以在失败时提供重试。如果您想重试最后一步,是的,您需要再次重复最后一步并添加条件:

schedules:
- cron: '5 */1 * * *'
displayName: Daily Trigger
branches:
include:
- master
always: true
trigger: none
variables:
vmImageName: "ubuntu-latest"

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: "3.x"
addToPath: true
- script: |
python -m pip install --upgrade pip
pip install selenium
- task: Pythonscript@0
continueOnError: true
inputs:
scriptSource: "filePath"
scriptPath: "./script.py"
- task: Pythonscript@0
condition: eq(variables['Agent.JobStatus'], 'SucceededWithIssues')
inputs:
scriptSource: "filePath"
scriptPath: "./script.py"

如果您担心这部分:

  - script: |
python -m pip install --upgrade pip
pip install selenium

您可以检查最后的结果并根据需要重复:

  - script: |
python -m pip install --upgrade pip

status=$?
if [ $status -eq 0 ]; then
echo "##[section]Upgraded pip..."
else
python -m pip install --upgrade pip
fi

pip install selenium

status=$?
if [ $status -eq 0 ]; then
echo "##[section]Installed sellenium..."
else
pip install selenium
fi

关于如果失败,Azure管道重新运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68972902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com