由于返回代码为 -1 而预期为 0,因此任务失败 - Bamboo

Posted

技术标签:

【中文标题】由于返回代码为 -1 而预期为 0,因此任务失败 - Bamboo【英文标题】:Failing task since return code was -1 while expected 0 - Bamboo 【发布时间】:2019-08-01 02:17:26 【问题描述】:

我在 Bitbucket Repo 中有一个简单的 hello world python 脚本。我已将我的 Bamboo 和 Bitbucket 与具有两个任务的 Default job 相关联:

    源代码签出 脚本

当我使用Inline 的脚本运行计划并输入python hello_world.py 时,它工作正常并在logs 中打印出“hello world”。

但是当我使用脚本作为file 运行计划并将文件名指定为“hello_world.py”时。构建失败并在日志中显示以下内容:

Failing task since return code of [/var/lib/ci/xml-data/build-dir/ABCD-BAM-JOB1/hello_world.py] was -1 while expected 0

在 GNU linux 中运行的竹子。

我的脚本

#! /usr/bin python
print('Hello World')

脚本任务配置:

编辑 1

解释器有三个选项

    壳牌 windows powershell /bin/sh 或 cmd.exe

【问题讨论】:

在脚本配置窗格中,“解释器”还有哪些其他选项? 嗨@brentertainer。我已经在问题中进行了编辑。 我很困惑。壳牌似乎是正确的方法。我注意到的另一件事是,在您的帖子中,#!/usr/bin/python 之间还有一个空格。也许确保当您从我的回答中尝试时,您不包括该空间。如果不是这样,我就无所适从了。 @brentertainer 是的,我也删除了空间。好的谢谢你的帮助。我会看看我能做什么。 【参考方案1】:

找到了。这是因为权限。

如果有人因为您在公司设置中而遇到无法访问终端的相同问题。只是做:

    创建一个脚本任务并写内联,chmod XXX filename

    创建另一个脚本任务并在那里调用文件。

这应该会更改权限。请注意,一旦构建完成,权限就会变回。

【讨论】:

【参考方案2】:

您应该将'shebang' 行更改为#!/usr/bin/python。现在,您的系统可能正在尝试使用/usr/bin 执行它,这是一个目录,而不是可执行文件。

有些人会争辩说#!/usr/bin/env python#!/usr/bin/env python3 这样的东西更健壮。这实际上取决于您的系统是如何配置的。

【讨论】:

谢谢。以上都不起作用!抛出相同的错误。我的系统有/usr/bin 它说env 不是目录,pythonpython2.7 也不是目录。所以这就是我使用#! /usr/bin python 的原因。不知道为什么这些都不起作用。 是的,您的系统有一个/usr/bin,它是一个目录,而不是可执行文件。 /usr/binpython 之间有一个空格。这是不正确的。您应该指定完整路径/usr/bin/python,其中空格替换为斜线。 如果您的系统没有/usr/bin/python,您应该可以通过从命令行执行which python 来定位您的python。 好的,which python 给了我/usr/bin/python。我试过#!/usr/bin/python 还是不行:(

以上是关于由于返回代码为 -1 而预期为 0,因此任务失败 - Bamboo的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 无法返回正确的退出代码

由于TeamCity中的意外完成,请勿重新添加构建

为什么TypeHverter为ushort类型返回的FormatException引用Int16?

Postgres:为 CAST 失败定义一个默认值?

每当 CORS $http 请求失败时,返回的响应始终为 0

如何判断 protobuf.net 中的反序列化是不是失败?