在单独的 shell 中测试 gitlab-运行ner 运行 命令?
Testing gitlab-runner run command in a separate shell?
上下文
在测试自动安装和 运行s GitLab 和 GitLab 运行ners 的安装脚本的功能时,我遇到了一些困难 运行ning GitLab 运行在后台进行测试。 (我的意图是简单地 运行 在后台运行 运行ner,然后 运行 一些验证服务行为是否符合预期的测试)。但是,当我的测试执行执行 sudo gitlab-runner run
命令的函数时,测试挂起,等待服务停止,(但服务应该不会停止)。
函数
# Run GitLab runner service
run_gitlab_runner_service() {
run_command=$(sudo gitlab-runner run &)
echo "service is running"
}
测试的输出是:
Configuration loaded builds=0 7/7
然后光标一直闪烁,而最后一个 运行ner 正在成功等待指令。
测试代码
@test "Test if the GitLab Runner CI service is running correctly." {
run_service_output=$(run_gitlab_runner_service)
EXPECTED_OUTPUT="service is running"
assert_equal "$run_service_output" "$EXPECTED_OUTPUT"
}
但是,在检查 sudo gitlab-runner run
命令的常规输出时,我观察到它会在不询问的情况下启动一个新的 line/shell/something。例如:
(base) name@name:~$ sudo gitlab-runner run &
[1] 84799
(base) name@name:~$ Runtime platform arch=amd64 os=linux pid=84800 revision=8925d9a0 version=14.1.0
Starting multi-runner from /etc/gitlab-runner/config.toml... builds=0
Running in system-mode.
Configuration loaded builds=0
listen_address not defined, metrics & debug endpoints disabled builds=0
[session_server].listen_address not defined, session endpoints disabled builds=0
基本上,输出 (base) name@name:~$ Runtime platform arch=amd64
永远不会停止(直到手动终止),所以我认为测试正在等待 shell/output 完成。
备注
为了完整起见,我没有输入 (base) name@name:~$ Runtime platform arch=amd64 ..
输出,它以某种方式被推送到新行中的终端。我不知道为什么这不只是在 previous/original (base) name@name:~$
运行 sudo gitlab-runner run &
命令下。
问题
启动gitlab-runner run
服务后如何保证功能和测试的进行?
我认为您应该使用稍微不同的语法以便 运行 gitlab-runner
在后台
# Run GitLab runner service
run_gitlab_runner_service() {
( run_command="$(sudo gitlab-runner run)" ) &
echo "service is running"
}
通过将命令的输出重定向到 /dev/null
。
找到了解决方案
代码
# Run GitLab runner service
run_gitlab_runner_service() {
output=$(nohup sudo gitlab-runner run &>/dev/null &)
echo "service is running"
}
上下文
在测试自动安装和 运行s GitLab 和 GitLab 运行ners 的安装脚本的功能时,我遇到了一些困难 运行ning GitLab 运行在后台进行测试。 (我的意图是简单地 运行 在后台运行 运行ner,然后 运行 一些验证服务行为是否符合预期的测试)。但是,当我的测试执行执行 sudo gitlab-runner run
命令的函数时,测试挂起,等待服务停止,(但服务应该不会停止)。
函数
# Run GitLab runner service
run_gitlab_runner_service() {
run_command=$(sudo gitlab-runner run &)
echo "service is running"
}
测试的输出是:
Configuration loaded builds=0 7/7
然后光标一直闪烁,而最后一个 运行ner 正在成功等待指令。
测试代码
@test "Test if the GitLab Runner CI service is running correctly." {
run_service_output=$(run_gitlab_runner_service)
EXPECTED_OUTPUT="service is running"
assert_equal "$run_service_output" "$EXPECTED_OUTPUT"
}
但是,在检查 sudo gitlab-runner run
命令的常规输出时,我观察到它会在不询问的情况下启动一个新的 line/shell/something。例如:
(base) name@name:~$ sudo gitlab-runner run &
[1] 84799
(base) name@name:~$ Runtime platform arch=amd64 os=linux pid=84800 revision=8925d9a0 version=14.1.0
Starting multi-runner from /etc/gitlab-runner/config.toml... builds=0
Running in system-mode.
Configuration loaded builds=0
listen_address not defined, metrics & debug endpoints disabled builds=0
[session_server].listen_address not defined, session endpoints disabled builds=0
基本上,输出 (base) name@name:~$ Runtime platform arch=amd64
永远不会停止(直到手动终止),所以我认为测试正在等待 shell/output 完成。
备注
为了完整起见,我没有输入 (base) name@name:~$ Runtime platform arch=amd64 ..
输出,它以某种方式被推送到新行中的终端。我不知道为什么这不只是在 previous/original (base) name@name:~$
运行 sudo gitlab-runner run &
命令下。
问题
启动gitlab-runner run
服务后如何保证功能和测试的进行?
我认为您应该使用稍微不同的语法以便 运行 gitlab-runner
在后台
# Run GitLab runner service
run_gitlab_runner_service() {
( run_command="$(sudo gitlab-runner run)" ) &
echo "service is running"
}
通过将命令的输出重定向到 /dev/null
。
代码
# Run GitLab runner service
run_gitlab_runner_service() {
output=$(nohup sudo gitlab-runner run &>/dev/null &)
echo "service is running"
}