Unix 访问Jenkins文件中Shell脚本中Jenkins文件中定义的变量

Unix 访问Jenkins文件中Shell脚本中Jenkins文件中定义的变量,unix,jenkins,groovy,jenkins-pipeline,jenkins-groovy,Unix,Jenkins,Groovy,Jenkins Pipeline,Jenkins Groovy,我正在Jenkins文件的一个阶段中定义一个shell脚本。如何使用shell脚本访问Jenkins文件中定义的变量 在下面的场景中,我将shell变量的值写入一个文件并读入groovy变量。有没有一种方法可以在不将数据写入文件系统的情况下将数据从shell传递到groovy unstash 'sources' sh''' source venv/bin/activate

我正在Jenkins文件的一个阶段中定义一个shell脚本。如何使用shell脚本访问Jenkins文件中定义的变量

在下面的场景中,我将shell变量的值写入一个文件并读入groovy变量。有没有一种方法可以在不将数据写入文件系统的情况下将数据从shell传递到groovy

unstash 'sources'

                    sh'''
                      source venv/bin/activate
                      export AWS_ROLE_ARN=arn:aws:iam::<accountid>:role/<role name>
                      layer_arn="$(awssume aws lambda list-layer-versions --layer-name dependencies --region us-east-1 --query \"LayerVersions[0].LayerVersionArn\" | tr -d '\"')"
                      echo $layer_arn > layer_arn
                    '''
                    layer_arn = readFile('layer_arn').trim()
unstash“源”
“嘘”
源venv/bin/激活
导出AWS\u角色\u ARN=ARN:AWS:iam:::角色/
layer_arn=“$(AWSSME aws lambda列出图层版本--图层名称依赖项--区域us-east-1--查询\“LayerVersions[0]。LayerVersionArn \“| tr-d'\”)”
echo$layer\u arn>layer\u arn
'''
layer\u arn=readFile('layer\u arn')。trim()
  • 您可以使用shell命令行,提供变量值
  • 您可以定义环境变量并在shell中使用它

关于

你可以使用环境变量。你能给出一些代码片段吗?你好@Tuan,添加了一些代码谢谢@Grunnpi,我已经更新了我在问题中遇到的问题。
sh()
函数可以回显你可以在JenkinsFile变量中设置的返回值。例如:
my_FOO=sh(脚本:“回显条”,returnStdout:true)
如何使用sh函数执行多行操作?对于复杂的输出,我认为您应该依赖中间文件.property或.yaml,然后使用
readYaml()
读取以通过对象进行访问。在我发布的代码片段中,我正在写入文件系统并使用groovy读取文件。这样做是吗?
   sh "some stuff $my_var"
withEnv(["MY_VAR=${my_var}") {
   sh 'some stuff'
}