Jenkins 2 拥有管道,拥有一等公民。但是,在示例中,任务似乎是作为单个序列执行的:
node {
// Mark the code checkout 'stage'....
stage 'Checkout'
// Get some code from a GitHub repository
git url: 'git@github.com:elifesciences/elife-bot.git'
// Mark the code build 'stage'....
stage 'Build'
echo "Unit tests will run here"
stage "Production"
echo "Deploying to production environment"
}
Run Code Online (Sandbox Code Playgroud)
对于部署到生产系统中,需要手动批准通常很有用;有没有办法插入手动按钮以在管道内按下?
sleep 当然,它是大多数复杂过程的替代品。
这个 Dockerfile(如您所见,使用 exec 形式,因此只有一个进程在运行,并且没有 的子进程bash):
FROM busybox
CMD ["/bin/sleep", "100000"]
Run Code Online (Sandbox Code Playgroud)
创建一个不间断的容器:
docker build -t kill-sleep .
docker run --rm --name kill-sleep kill-sleep
Run Code Online (Sandbox Code Playgroud)
当我试图阻止它时:
time docker stop kill-sleep
kill-sleep
real 0m10.449s
user 0m0.021s
sys 0m0.027s
Run Code Online (Sandbox Code Playgroud)
命令在容器被杀死前 10 秒超时。
问题不在于sleep不处理信号,因为如果我在主机上运行它:
sleep 100000
# in another shell
ps faxww | grep sleep
kill -TERM 31333 # the PID
Run Code Online (Sandbox Code Playgroud)
该过程立即停止。
问题可能与它在容器中作为 PID 1 运行的事实有关,但我还没有看到相关的参考文档。
我有几个包含几个字节的日志文件,这些字节不是可显示的字符(由于请求上的二进制签名)。
每次我打开它们时都会被问到:
$ less /var/log/file.log
"/var/log/file.log" may be a binary file. See it anyway?
Run Code Online (Sandbox Code Playgroud)
如何使用命令行选项或配置减少跳过此步骤?