sh'alias'在Jenkinsfile中不会提供任何输出
我有一个运行jenkins的docker集装箱。
在Jenkinsfile里面,我尝试定义一个别名并打印这个别名。
我手动尝试,连接到jenkins容器,我能够做到:
alias foo='bar'
然后,如果我执行alias
我可以看到别名列表(我有7个预设别名,新的一个)
但是当我在Jenkinsfile中执行相同的事情时,我foo
命令将不会响应…
这是我的pipe道代码:
#!/bin/groovy pipeline { agent any stages { stage("Use alias command"){ steps { sh 'alias foo="bar"' sh 'foo' } } }}
任何想法为什么?
每个sh
命令都运行在它自己的shell中。 它在同一个代理/工作区中,但由于它是一个新的shell,所以环境variables,别名等将会丢失。 你需要将这些行合并成一个单独的sh
:
#!/bin/groovy pipeline { agent any stages { stage("Use alias command"){ steps { sh ''' alias foo="bar" foo ''' } } }}