sh'alias'没有在Jenkinsfile中提供任何输出

时间:2017-11-22 12:43:19

标签: docker jenkins jenkins-pipeline devops

我有一个运行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'
    }
  }
}}

知道为什么吗?

1 个答案:

答案 0 :(得分:3)

每个sh命令都在其自己的shell中运行。它位于相同的代理/工作区中,但由于它是一个新shell,环境变量,别名等将丢失。您需要将这些行合并为一个sh

#!/bin/groovy

pipeline {
agent any
stages {
  stage("Use alias command"){
    steps { 
        sh '''
          alias foo="bar"
          foo
        '''
    }
  }
}}