我正在跟踪jenkinsfile documentation,并且尝试在管道中使用秘密文本,但出现错误 “ groovy.lang.MissingPropertyException:无此类属性:groovy.lang.Binding类的$ AWS_SECRET_ACCESS_KEY”
这是我的jenkinsfile。我也尝试包装像echo“ $ {AWS_SECRET_ACCESS_KEY}”这样的变量,但是都没有用。我发现一个替代解决方案是withwithCredentials行,但我想知道为什么它不起作用,因为如果将这些数据添加为变量,我会发现jenkins文件更清晰。
执行“ withCredentils”会告诉我:“ groovy.lang.MissingPropertyException:无此类属性:为类设置:groovy.lang.Binding”,我发现似乎需要降级我的安全性...
pipeline {
agent any
environment {
AWS_ACCESS_KEY = credentials('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = credentials('AWS_SECRET_ACCESS_KEY')
}
stages {
stage('Test') {
steps {
echo 'Testing..'
echo $AWS_SECRET_KEY
echo $AWS_ACCESS_KEY
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
sh "npx serverless --no-aws-s3-accelerate --key $AWS_ACCESS_KEY --secret $AWS_SECRET_KEY"
}
}
}
}
编辑:修复凭据的第二种实现
答案 0 :(得分:1)
1。您是否将ID为AWS_SECRET_ACCESS_KEY的凭据添加到您的詹金斯上?
回显$ {AWS_SECRET_ACCESS_KEY}将不起作用,因为只有凭据步骤才能将凭据内容返回到管道上下文中。
withCredentils <-错字
答案 1 :(得分:0)
我建议使用'withCredentials'( https://plugins.jenkins.io/credentials-binding)
在创建新的凭证(AWS类型)之后(使用“ CloudBees Aws凭证插件”: https://wiki.jenkins.io/display/JENKINS/CloudBees+AWS+Credentials+Plugin)
我对声明性管道语法不是很熟悉,因此这可能不是最好的方法。
无论如何,您需要添加一个脚本块:
stage('Deploy') {
steps {
script {
withCredentials([[
class: 'AmazonWebServicesCredentialsBinding',
credentialsId: awsCredentialId,
accessKeyVariable: 'AWS_ACCESS_KEY',
secretKeyVariable: 'AWS_SECRET_KEY'
]]) {
println 'Deploying....'
sh " npx serverless --no-aws-s3-accelerate --key $AWS_ACCESS_KEY --secret $AWS_SECRET_KEY"
}
}
}
}