Microsoft azure devops python 管道失败,Bash 以代码“5”退出

Posted

技术标签:

【中文标题】Microsoft azure devops python 管道失败,Bash 以代码“5”退出【英文标题】:Microsoft azure devops python pipeline fails with Bash exited with code '5' 【发布时间】:2020-04-28 06:11:52 【问题描述】:

我正在关注https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/python?view=azure-devops 的教程。

这是我的 azure-pipelines.yml 文件:

# Python package
# Create and test a Python package on multiple Python versions.
# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'
strategy:
  matrix:
    Python27:
      python.version: '2.7'
    Python35:
      python.version: '3.5'
    Python36:
      python.version: '3.6'
    Python37:
      python.version: '3.7'

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '$(python.version)'
  displayName: 'Use Python $(python.version)'

- script: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
  displayName: 'Install dependencies'

- script: |
    pip install pytest pytest-azurepipelines
    pytest
  displayName: 'pytest'

运行管道失败并显示以下错误消息。

Bash 以代码“5”退出。

我启用了系统诊断以将调试消息添加到日志中。

错误发生在管道的pytest阶段。

完整日志可在https://github.com/michaelhochleitner/debug-azure-devops-python-pipeline/blob/master/log.txt 获得。

我怎样才能使管道运行而不失败?

【问题讨论】:

pytest 报告收集了 0 个项目 【参考方案1】:

我怎样才能使管道运行而不失败?

同意phd,问题出在0测试项目可以收集。

检查来自 cewing 的 this detailed answer:

Pytest 根据命名约定收集测试。默认情况下,任何包含测试的文件都必须以 test_ 开头,并且文件中应被视为测试的任何函数也必须以 test_ 开头。

所以很明显pytest命令找不到任何名称以test_开头的xx.py文件。所以对于 pytest,没有可用的测试,这会导致 0 items collected=>Bash exited with code '5'

我检查了你上面的教程并重现了同样的问题:

解决它并使运行成功:

对我来说,我只是创建了一个新的test_anyname.py 文件,其内容如下(test_xx.py+test_xx method):

然后我的管道在没有Bash exited with code '5' 的情况下成功运行:

因此,您应该确保至少可以找到一个测试项目,并且错误会消失。希望对你有帮助:)

【讨论】:

感谢您发现问题。由于社区 PR,它现在已在示例存储库中修复。 这也适用于我的实例,很好的解释,谢谢! @KraigBrockschmidt-MSFT - 更新最初链接的教程需要什么?我注意到它自 2019 年 11 月首次发布以来一直没有更新,至少可以说非常令人沮丧。

以上是关于Microsoft azure devops python 管道失败,Bash 以代码“5”退出的主要内容,如果未能解决你的问题,请参考以下文章

Azure devops 中的 Docker 构建失败并显示消息无法加载文件或程序集“Microsoft.CodeAnalysis,

[Microsoft Teams]使用连接器接收Azure Devops的通知

Microsoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误

Azure DevOps 发布 Api 400 错误请求错误

Azure DevOps 资源存储库:self

Tfs / Azure DevOps 客户端库合并 Azure DevOps 分支上的冲突解决