我编写了一个声明性的Jenkins管道,并希望跟踪Jenkins执行的CLI突击队。为此,我添加了一个舞台和其中的步骤sh 'history -a'
:
pipeline {
options {
...
}
agent {
node {
...
}
}
stages {
stage('Build') {
steps {
sh 'hostname'
sh 'pwd'
...
}
}
...
stage('History') {
steps {
sh 'history -a'
}
}
}
post {
...
}
}
但是那不起作用:
Console Output
...
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Tear Down)
[Pipeline] sh
+ history -a
/path/to/project-root@tmp/durable-66ba15cc/script.sh: 1: history: not found
[Pipeline] }
...
[其他Linux命令,例如hostname
,ls
或pwd
正常工作。
为什么history
出现错误?如何在管道的上下文中存储Jenkins调用的shell命令?
您收到的那个特定错误,我认为这仅是因为您正在运行sh的代理没有可用的历史cmd-history: not found
如果您可以存储sh命令...如果只需要sh命令,我认为您需要写入在开始时创建的文件,每次执行sh步骤时就在其中写入文件,或者可以只需使用管道日志文件(输出控制台)。
如果有帮助,您可以找到here有关管道或构建日志位置的线程。