gpt4 book ai didi

jenkins - 脚本不允许使用 staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods 写 java.io.File java.lang.String

转载 作者:行者123 更新时间:2023-12-04 12:42:59 29 4
gpt4 key购买 nike

我正在尝试使用 Jenkins 创建保险库部署。这是a link到我的 repo 。

运行脚本时,我得到

"Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods write java.io.File java.lang.String. Administrators can decide whether to approve or reject this signature." issue.



添加阶段“生成变量”后,我遇到了这个问题。
如果我在代码中删除此阶段,其他阶段将起作用,但它们无法完成工作。这是因为它需要获取用于 Vault 部署的 token ,并且需要从 .tfvars 文件中获取它。

在 GitHub 上共享我的变量不是一个好主意,这就是我尝试通过 Jenkins 创建 vault.tfvars 并在运行管道作业之前提供任何 token 的原因。

有谁知道如何解决这一问题???
如果有部分不清楚,请随时提问!

如果我找到了此问题的解决方案,我将在此处通过指向我的 GitHub 的链接与大家分享。
谢谢

这是我的代码 Jenkinsfile.groovy
node('master') {
properties([parameters([
string(defaultValue: 'plan', description: 'Please provide what action you want? (plan,apply,destroy)', name: 'terraformPlan', trim: true),
string(defaultValue: 'default_token_add_here', description: 'Please provide a token for vault', name: 'vault_token', trim: true)
]
)])
checkout scm
stage('Generate Vars') {
def file = new File("${WORKSPACE}/vaultDeployment/vault.tfvars")
file.write """
vault_token = "${vault_token}"
"""
}
stage("Terraform init") {
dir("${workspace}/vaultDeployment/") {
sh 'ls'
sh 'pwd'
sh "terraform init"
}
stage("Terraform Plan/Apply/Destroy"){
if (params.terraformPlan.toLowerCase() == 'plan') {
dir("${workspace}/vaultDeployment/") {
sh "terraform plan -var-file=variables.tfvars"
}
}
if (params.terraformPlan.toLowerCase() == 'apply') {
dir("${workspace}/vaultDeployment/") {
sh "terraform apply --auto-approve"
}
}

if (params.terraformPlan.toLowerCase() == 'destroy') {
dir("${workspace}/vaultDeployment/") {
sh "terraform destroy --auto-approve"
}
}
}
}
}

最佳答案

一般我们选择管道在Groovy沙箱中执行,出于安​​全考虑,在某些方面有限制。喜欢使用 new关键字,使用静态方法。

但是您需要 Jenkins 管理员在 jenkins > Manage jenkins > In-process Script Approval 中将限制添加到白名单中

要写入文件,Jenkins 管道提供替代方案 writeFile没有这样的限制。

writeFile file: '<file path>',  text: """
vault_token = "${vault_token}"
"""

关于jenkins - 脚本不允许使用 staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods 写 java.io.File java.lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55785003/

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