对詹金斯来说还很新,我有一个简单而烦人的问题。当我在Jenkins上运行作业(构建)时,我触发ruby命令执行我的测试脚本。
问题是Jenkins没有从控制台实时显示输出。这是触发日志。
Building in workspace /var/lib/jenkins/workspace/foo_bar
No emails were triggered.
[foo_bar] $ /bin/sh -xe /tmp/hudson4042436272524123595.sh
+ ruby /var/lib/jenkins/test-script.rb
基本上,它会挂在此输出上,直到构建完成为止,而不是仅仅显示完整的输出。有趣的是,这不是一致的行为,有时它可以正常工作。但是大多数时候没有实时控制台输出。
詹金斯版本:1.461
为了澄清一些答案。
ruby
或python
任何明智的脚本语言将缓冲输出;这是为了最大程度地减少IO;写入磁盘速度很慢,写入控制台速度很慢…flush()
,在缓冲区中有足够的数据并且对换行符进行特殊处理之后,数据会自动被编辑。例如,编写不带换行符的字符串,则sleep()
在sleep()
完成之后才写任何东西(我仅sleep
作为示例,可以用任何其他昂贵的系统调用代替)。例如,这将等待8秒,打印一行,再等待5秒钟,打印第二行。
from time import sleep
def test():
print "ok",
time.sleep(3)
print "now",
time.sleep(5)
print "done"
time.sleep(5)
print "again"
test()
为ruby
,STDOUT.sync =true
打开autoflush
;所有写入STDOUT
后跟flush()
。这样可以解决您的问题,但会导致更多的IO。
STDOUT.sync = true
对于python
,您可以使用python -u
或环境变量PYTHONUNBUFFERED
来使它stdin/stdout/stout
不被缓冲,但是还有其他解决方案不会改变stdin
或stderr
export PYTHONUNBUFFERED=1
对于perl
,你有autoflush
autoflush STDOUT 1;
问题内容: 我创建了一个复杂的管道。在每个阶段,我都叫工作。我想在Jenkins的某个阶段中查看每个作业的控制台输出。如何获得? 问题答案: 从构建步骤返回的对象可用于查询日志,如下所示: 从构建步骤返回的对象是RunWrapper类对象。getRawBuild()调用返回一个Run对象- 除了从此类的外观逐行读取日志之外,还有其他选择。为此,您需要禁用管道沙箱或获取这些方法的脚本批准: 如果要对
问题内容: 我正在遵循有关如何使用Jenkins签署Android APK的准则。我已经用KSTOREPWD和KEYPWD参数化了Jenkins的工作。Jenkins的工作配置(“构建”->“执行”外壳)的一部分是获取这些参数并将其存储为环境变量: 问题是当构建结束时,任何人都可以访问构建“控制台输出”并查看输入了什么密码;该输出的一部分: 因此,我想在命令输出之前抑制回声,并在命令之后重新启用回
当我在Android Studio上运行应用程序时,我看到了一些垃圾收集输出: 这是什么意思?(我正在阅读大型csv文件,其中有更多70k行)
问题内容: 程序应在中列出卷。 例如:我从vollist.java类获得此输出。 控制台输出: 如何在我的控制台中获得此控制台输出。 那只会显示row1-> vol1 row2-> vol1 ............如何获得类似于控制台row1-> vol1 row2-> vol2的输出(计数) 问题答案: 定义并实现您的TableModel(在这种情况下,扩展AbstractTableModel
我最近在我的应用程序中安装了Firebase pods,因为我希望现在能够检查用户并允许用户注册。 但是,这是控制台中的内容: 2016-09-27 22:45:50.248 样本应用[68417:] 火垒分析 v.3402000 开始 2016-09-27 22:45:50.260785 样本应用[68417:3132777] 子系统: com.apple.libsqlite3, 分类: 日志记
问题内容: 如果我有多个go例程,并且其中两个或两个以上例程决定需要打印某些内容,那么它们是否可能彼此中断? 例如: 是否有可能一个常规程序开始打印(),而另一个常规程序中断()和原始装订()? 我尝试自己运行它并检查输出,它 看起来 不错,但是如何确定? 问题答案: 是的,有可能,尽管GOMAXPROCS = 1不会显示任何内容。当使用更多goroutine,更大的行和更多的线程运行时,它们将显