我希望能够做到以下几点:

AOEU=$(echo aoeu)

并让Jenkins设置AOEU= AOEU。

Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。

如何让Jenkins计算shell命令并将输出分配给环境变量?

最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。


当前回答

最简单的方法

你可以使用EnvInject插件在构建启动时注入环境变量。例如:

你怎么知道它有用

其他回答

我们使用groovy作业文件:

description('')
steps {
    environmentVariables {
        envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
    }
}

我们使用的Scripted Pipeline语法是这样的:

env.AEOU = sh label:'set env var',
                returnStdout: true,
               script : '''#!/bin/bash
                   echo "aeou"
               '''
sh label:'checkit',
 script : '''#!/bin/bash
    echo "${AEOU}"
 '''

注意,sh步骤的脚本参数使用了三单引号表示法。这确保了${AEOU}不会被Groovy插入,而是被bash shell插入。

你可以尝试这样做

stages {
        stage('Build') {
            environment { 
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                }
            steps {
                sh 'env'
                sh 'echo $AOEU'
            }
        }
    }

在我的例子中,我需要添加JMETER_HOME环境变量,使其可以通过我的Ant构建脚本在我的Jenkins服务器(Linux)上的所有项目中使用,并且不会干扰build.xml脚本中的本地构建环境(Windows和Mac)。通过Manage Jenkins - Configure System - Global属性来设置环境变量是最简单和侵入性最小的方法。不需要插件。


环境变量可以通过以下方式在Ant中使用:

<property environment="env" />
<property name="jmeter.home" value="${env.JMETER_HOME}" />

这可以通过添加:

<echo message="JMeter Home: ${jmeter.home}"/>

生产:

JMeter Home: ~/.jmeter

你可以使用下面列出的任何一种方式:

使用Env Inject Plugin创建环境变量。了解使用方法和更多详细信息https://github.com/jenkinsci/envinject-plugin 浏览下面并可以添加

管理Jenkins—>配置系统—>全局属性—>环境变量—>添加