我有一个运行Jenkins的docker容器。
在Jenkinsfile中,我尝试定义别名并打印此别名。
我手动尝试,连接到Jenkins容器,我能够做到:
alias foo='bar'
然后,如果我执行alias
,我可以看到别名列表(我有7个预设别名和新的别名)
但是当我在Jenkinsfile中执行相同的操作时,foo
命令将不会响应...
这是我的管道代码:
#!/bin/groovy
pipeline {
agent any
stages {
stage("Use alias command"){
steps {
sh 'alias foo="bar"'
sh 'foo'
}
}
}}
知道为什么吗?
答案 0 :(得分:3)
每个sh
命令都在其自己的shell中运行。它位于相同的代理/工作区中,但由于它是一个新shell,环境变量,别名等将丢失。您需要将这些行合并为一个sh
:
#!/bin/groovy
pipeline {
agent any
stages {
stage("Use alias command"){
steps {
sh '''
alias foo="bar"
foo
'''
}
}
}}