Я пытаюсь создать хранилище с использованием Jenkins. Вот ссылка на мой репо.
При запуске скрипта я получаю
"Сценарии, которым не разрешено использовать staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods, пишут java.io.File java.lang.String. Администраторы могут решить, утвердить или отклонить эту подпись." вопрос.
Я получил эту проблему после добавления этапа "Generate Vars".
Если я уберу этот этап в коде, остальные этапы будут работать, но они не завершат работу. Это потому, что ему нужно получить токен для развертывания хранилища и получить его из файла .tfvars.
Не очень хорошая идея делиться своими переменными в GitHub, поэтому я пытаюсь создать vault.tfvars через Jenkins и предоставить любой токен перед запуском конвейерного задания.
Кто-нибудь знает, как это исправить ???
Если какая-то часть не ясна, пожалуйста задавайте вопросы!
Если я найду решение этой проблемы, я поделюсь им здесь со ссылкой на мой 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"
}
}
}
}
}