Jenkins 管道如何正确使用字符串插值
Jenkins pipeline how to use string interpolation correctly
在我的 docker 运行 中,我想将一个秘密作为环境变量传递。这很好用。但是,我还有第二个变量“foo”,我想在我的容器中回显它。这是行不通的。如何让变量“foo”在三重单引号内展开?
stages {
stage('test') {
steps {
script {
def foo = "bar"
sh '''
docker run \
--rm \
--env secret=$ENV_SECRET \
python:3.8.12 /bin/bash -c \
"echo $foo"
'''
}
}
}
}
在 Groovy 中使用 Groovy 变量插入字符串的语法涉及 "
。如果您的 ENV_SECRET
是从 withCredentials
块绑定的环境变量,那么您想在 shell 解释器中插入它。因此,我们可以将您的 shell 步骤方法更新为:
sh """
docker run \
--rm \
--env secret=$ENV_SECRET \
python:3.8.12 /bin/bash -c \
'echo $foo'
"""
您的语法会插入 shell 个变量。请注意,两者都将插入环境变量,但使用不同的解释器。
在我的 docker 运行 中,我想将一个秘密作为环境变量传递。这很好用。但是,我还有第二个变量“foo”,我想在我的容器中回显它。这是行不通的。如何让变量“foo”在三重单引号内展开?
stages {
stage('test') {
steps {
script {
def foo = "bar"
sh '''
docker run \
--rm \
--env secret=$ENV_SECRET \
python:3.8.12 /bin/bash -c \
"echo $foo"
'''
}
}
}
}
在 Groovy 中使用 Groovy 变量插入字符串的语法涉及 "
。如果您的 ENV_SECRET
是从 withCredentials
块绑定的环境变量,那么您想在 shell 解释器中插入它。因此,我们可以将您的 shell 步骤方法更新为:
sh """
docker run \
--rm \
--env secret=$ENV_SECRET \
python:3.8.12 /bin/bash -c \
'echo $foo'
"""
您的语法会插入 shell 个变量。请注意,两者都将插入环境变量,但使用不同的解释器。