我们有一个在 Gitlab 中管理的项目,带有用于构建和测试(pytest、Google 测试)的 CI 管道。我们在 Google 测试中的两三个测试用例失败了。但Gitlab认为测试阶段是成功的。是因为成功率超过90%(任意值)吗?如果我们没有获得 100% 的成功,有没有办法让阶段(以及整个管道)失败?
这是该阶段的 yml 脚本:
test_unit_test:
stage: test
needs: ["build", "build_unit_test"]
image: $DOCKER_IMAGE
rules:
- if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script: |
ZIPNAME=`cat _VERSION_.txt`
./scripts/gitlab-ci/stage-unittests.sh test_unit_test_report.xml $ZIPNAME
artifacts:
reports:
junit: test_unit_test_report.xml
expire_in: 1 week
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助。问候。
我有以下程序:
SECTION .text
main:
mov ebx, 10
mov ecx, 50
repeat:
inc ebx
loop repeat
mov eax, ebx
ret
Run Code Online (Sandbox Code Playgroud)
当该程序运行时,它按预期返回60.但是,如果你删除最后的ret语句,程序运行正常,但然后返回0.为什么?
当我给Python的argparse输入它不喜欢时,它会引发一个代码为2的SystemExit,这似乎意味着"没有这样的文件或目录".为什么要使用此错误代码?
import argparse
import errno
parser = argparse.ArgumentParser()
parser.add_argument('arg')
try:
parser.parse_args([])
except SystemExit as se:
print("Got error code {} which is {} in errno"
.format(se.code, errno.errorcode[se.code]))
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
usage: se.py [-h] arg
se.py: error: too few arguments
Got error code 2 which is ENOENT in errno
Run Code Online (Sandbox Code Playgroud) 所以,我在处理一个已经实现的项目时遇到了一个PERL脚本。由于是保密的,我不能透露太多细节,但代码有点像这样:
if(defined($x)){
exit(0);
}
#...........
#.some other code.
#...........
if(!defined($y)){
print "ERROR !";
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
我假设 exit(1) 处于错误状态,而 exit(0) 用于成功案例。但是既然我们已经在打印错误信息了,exit(0)和exit(1)之间有什么区别呢?