Jenkins Job DSL:如何将usernamePassword变量传递给Gradle开关?

时间:2020-03-31 06:06:43

标签: jenkins jenkins-plugins jenkins-job-dsl

我正在按种子(而不是管道)创建作业。这是无效的部分:

            steps{
            wrappers {
                credentialsBinding {
                    usernamePassword('PSQL_USR', 'PSQL_PSW', 'psql-credentials')
                    gradle {
                        tasks("migrate -x test")
                        switches("-Dflyway.user=${PSQL_USR}")
                        switches("-Dflyway.password=${PSQL_PSW}")
                        fromRootBuildScriptDir()
                        gradleName("(Default)")
                        useWrapper(true)
                        makeExecutable(false)
                        useWorkspaceAsHome(false)
                    }
                }
              }
            }

获取类的异常无属性PSQL_USR。有什么办法可以将凭据传递到Gradle交换机?在正常的声明性管道中,它工作得很好。

1 个答案:

答案 0 :(得分:1)

通过使用凭据移动包装块来使其正常工作将其绑定到上一层,除去花括号并将双引号替换为单引号:

            wrappers {
                credentialsBinding {
                   usernamePassword('PSQL_USR', 'PSQL_PSW', 'psql-credentials')
                }
            }
            steps{
                 gradle {
                    tasks("migrate -x test")
                    switches('-Dflyway.user=$PSQL_USR')
                    switches('-Dflyway.password=$PSQL_PSW')
                    ...
                }
            }