首页 > 解决方案 > 在 Jenkinsfile 中的 Shell 脚本中访问 Jenkinsfiles 中定义的变量

问题描述

我在 Jenkinsfile 的某个阶段定义了一个 shell 脚本。如何使用 shell 脚本访问我在 Jenkinsfile 中定义的变量?

在下面的场景中,我将 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()

标签: unixjenkinsgroovyjenkins-pipelinejenkins-groovy

解决方案


  • 你可以shell命令行,提供变量值。
   sh "some stuff $my_var"
  • 您可以定义环境变量并在您的外壳中使用它
withEnv(["MY_VAR=${my_var}") {
   sh 'some stuff'
}

问候


推荐阅读