如何在jenkins管道中使用参数化构建?

时间:2017-11-22 12:29:07

标签: jenkins jenkins-pipeline

我在Jenkinsfile中有这些行:

   parameters {
    string(name: 'DATABASE', defaultValue: 'jenkinsdatabase', 
    description: 'The name of the database')
}

(...)

现在我想在一个阶段的步骤中使用$ {params.DATABASE}的值。

sh 'mysql --user ${USER} -p${PASSWORD} --host ${HOST} -e "DROP DATABASE IF EXISTS ${params.DATABASE};CREATE DATABASE ${params.DATABASE} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; commit;";export GRADLE_OPTS="-Xms1536m -Xmx1536m"'

但最终会有一个例外:糟糕的替换

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您的sh脚本正文使用单引号。

sh '...'

由于这些是单引号,因此不会发生string interpolation。这意味着所有$字符串都将使用shell变量替换而不是Groovy替换。您在shell中收到错误替换,因为shell无法替换${params.DATABASE},因为这是无效的shell替换。

params是一个Groovy变量,因此将单引号切换为双引号将执行变量的字符串插值。

sh "..."