避免GitHub操作缓冲
我有一个包含一些Linux实用程序的Github repo 要运行测试,我使用GitHub操作和一些简单的自定义工作流,这些工作流使用自托管运行程序在远程Linux服务器上运行:避免GitHub操作缓冲,github,github-actions,Github,Github Actions,我有一个包含一些Linux实用程序的Github repo 要运行测试,我使用GitHub操作和一些简单的自定义工作流,这些工作流使用自托管运行程序在远程Linux服务器上运行: 名称:CMake on:[推] 环境: 构建类型:发布 工作: 建造: 运行时间:自托管 步骤: -用途:行动/checkout@v2 -名称:Build 工作目录:${runner.workspace}}/Utils shell:bash 运行:cmake——构建--配置$BUILD\u类型 -名称:运行测试 工作目
名称:CMake
on:[推]
环境:
构建类型:发布
工作:
建造:
运行时间:自托管
步骤:
-用途:行动/checkout@v2
-名称:Build
工作目录:${runner.workspace}}/Utils
shell:bash
运行:cmake——构建--配置$BUILD\u类型
-名称:运行测试
工作目录:${runner.workspace}}/Utils
shell:bash
运行:./testing/test.sh
工作流程非常简单-我使用cmake
编译源代码,然后从同一个repo运行脚本来测试构建。测试脚本是一个bash脚本,如下所示:
#/bin/bash
导出LD_LIBRARY_PATH=/PATH/to/bin
cd/path/to/bin
echo-e“开始测试”
/run\u服务器&
/运行测试
如果[$?-等式0];然后
回声“成功”
其他的
回显“失败”
出口1
fi
在这里,脚本从我的代码(run_server)启动一个已编译的应用程序,然后运行与之通信的测试实用程序并打印结果
实际上,我在run\u tests
内部使用Cprintf()
打印输出字符串。如果我在本地机器上运行,我会得到如下输出:
开始测试
test1执行正常
test2执行正常
test3执行正常
成功的
每次测试大约需要1秒钟。因此,应用程序每秒打印一行,如testX executed Ok
但是,如果它使用Github操作运行,则输出看起来有点不同(从Github操作控制台复制):
/testing/test.sh
shell:/bin/bash--noprofile--norc-e-o pipefail{0}
环境:
构建类型:发布
开始测试
成功的
即使在这种情况下,bash脚本的输出也只能在脚本完成后打印出来。
所以我有两个问题:
- 测试应用程序没有输出
printf()
- 脚本输出(使用
打印)仅在脚本完成后出现echo