如何计算 groovy 中的美元表达式并存储值

How to evaluate a dollar expression in groovy and store the value

我需要使用我的 Jenkinsfile groovy 在 AWS 中检索任务定义的修订版。下面的代码在 shell 脚本下对我有用,但我一直无法让它为我的 Jenkinsfile groovy 工作。 props.region 等其他变量来自属性文件,我已经使用了这些变量:-

def call(Map config=[:]) {
    def deployDefinition = libraryResource "deployDefinitions/ecs/${config.deployApplication}/${config.deployEnvironment}.properties"
    def props = readProperties(text:deployDefinition)
    
    withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: "${props.awsCreds}", secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
    
    def newimageurl = "${props.registry}/${props.imagename}:${IMAGE_TAG}"
    def oldimageurl = "${props.registry}/${props.imagename}"
    
    sh "sed -i -e 's#${oldimageurl}#${newimageurl}#' ./taskdef.json"
      
   sh "aws ecs register-task-definition --family ${props.family} --cli-input-json file://${WORKSPACE}/taskdef.json --region ${props.region}"
   REVISION=$(aws ecs describe-task-definition --task-definition ${props.task_def_name} --region ${props.region} | jq .taskDefinition.revision)
   sh "aws ecs update-service --cluster ${props.cluster} --region ${props.region} --service ${props.service_name} --task-definition ${props.task_def_name}:$REVISION"
}
}

REVISION=$(aws ecs describe-task-definition --task-definition ${props.task_def_name} --region ${props.region} | jq .taskDefinition.revision)

我正在寻找的是如何检索 REVISION 的实际值,以便我可以在更新服务的下一个命令中传递该值

我能够使用以下方法实现此功能:-

sh "aws ecs describe-task-definition --task-definition ${props.task_def_name} --region ${props.region} | jq .taskDefinition.revision > output.txt"
def REVISION = readFile "${WORKSPACE}/output.txt"
sh "aws ecs update-service --cluster ${props.cluster} --region ${props.region} --service ${props.service_name} --task-definition ${props.task_def_name}:$REVISION"