我有以下DSL结构:
freeStyleJob {
wrappers {
credentialsBinding {
[
$class:"AmazonWebServicesCredentialsBinding",
accessKeyVariable: "AWS_ACCESS_KEY_ID",
credentialsId: "your-credential-id",
secretKeyVariable: "AWS_SECRET_ACCESS_KEY"
]
}
}
steps {
// ACCESS AWS ENVIRONMENT VARIABLES HERE!
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.这样做的正确语法是什么?对于Jenkins管道,您可以:
withCredentials([[
$class: "AmazonWebServicesCredentialsBinding",
accessKeyVariable: "AWS_ACCESS_KEY_ID",
credentialsId: "your-credential-id",
secretKeyVariable: "AWS_SECRET_ACCESS_KEY"]]) {
// ACCESS AWS ENVIRONMENT VARIABLES HERE!
}
Run Code Online (Sandbox Code Playgroud)
但是这种语法在正常的DSL作业groovy中不起作用.
tl; dr如何将AmazonWebServicesCredentialsBinding插件定义的AWS凭证导出到Groovy作业DSL的环境变量中?(不是PIPELINE PLUGIN语法!)
groovy credentials amazon-web-services jenkins jenkins-job-dsl
我有以下Terraform代码使用新的任务定义来更新服务:
resource "aws_ecs_task_definition" "app_definition" {
family = "my-family"
container_definitions = "${data.template_file.task_definition.rendered}"
network_mode = "bridge"
}
resource "aws_ecs_service" "app_service" {
name = "my-service"
cluster = "my-cluster"
task_definition = "${aws_ecs_task_definition.app_definition.arn}"
desired_count = "1"
iam_role = "my-iam-role"
}
Run Code Online (Sandbox Code Playgroud)
更新我的服务时,我的任务定义的上一个修订版本无效。结果,在尝试在ECS控制台中手动回滚到以前的版本时,无法选择它:
Error: No active task definition found
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望保持最近的X版本处于活动状态,以便在出现问题时始终可以通过控制台手动回滚。
我该如何实现?