gpt4 book ai didi

docker - 如何在 Jenkinsfile 中使用 docker image 内部环境变量?

转载 作者:行者123 更新时间:2023-12-01 08:14:21 30 4
gpt4 key购买 nike

我目前面临的问题是 Jenkins 试图从外部访问/替换 sh 脚本中的 env 变量,而该属性是在容器内部定义的:

    stage('Run phpunit') {
agent {
docker { image 'php:7.2-alpine' }
}
steps {
sh """
apk add --no-cache ${PHPIZE_DEPS}
pecl install xdebug
docker-php-ext-enable xdebug
php vendor/bin/phpunit --colors=never --log-junit build/junit.xml --coverage-clover build/clover.xml
"""
}
}

Jenkins 失败并显示以下消息:

groovy.lang.MissingPropertyException: No such property: PHPIZE_DEPS for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)

最佳答案

问题是 Groovy 使用了您希望 Bash 解释的相同 "${VAR}" 语法。只需使用 \$ 进行转义,它就会起作用:

sh """ apk add --no-cache \${PHPIZE_DEPS} ...

关于docker - 如何在 Jenkinsfile 中使用 docker image 内部环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51389068/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com