如何执行' aws ecr get-login'在Groovy脚本中

时间:2016-12-01 15:13:55

标签: amazon-web-services jenkins groovy

仍然在我的第一个Groovy脚本中徘徊,我又遇到了另一个问题。我将Jenkins 2自由式作业转换为管道作业,而我无法在Groovy中找到eval $(aws ecr get-login --region us-east-1)的等效作品。

研究表明解决方案应该类似Eval.me('aws ecr get-login --region us-east-1'),但这会导致以下错误;

Caught: groovy.lang.MissingMethodException: No signature of method: test2.node() is applicable for argument types: (java.lang.String, test2$_run_closure1) values: [on-demand-t2small, test2$_run_closure1@1a04f701]
Possible solutions: notify(), wait(), run(), run(), dump(), grep()
groovy.lang.MissingMethodException: No signature of method: test2.node() is applicable for argument types: (java.lang.String, test2$_run_closure1) values: [on-demand-t2small, test2$_run_closure1@1a04f701]
Possible solutions: notify(), wait(), run(), run(), dump(), grep()

我已经用Google搜索了错误,但最终的堆栈溢出答案如thisthis对于他们的案例非常具体,因为我作为Groovy菜鸟无法理解解决方案。任何帮助(解释为什么是解决方案)都受到赞赏。

我不知道我的其余部分是否相关;如果是这样,请告诉我,我可以编辑添加它。

1 个答案:

答案 0 :(得分:1)

您需要运行docker login返回的aws ecr get-login命令,而不是评估 Groovy 代码,这是{{3确实。

一个最小的例子:

def ecrLogin = "aws ecr get-login".execute()
ecrLogin.waitFor()

def dockerLogin = ecrLogin.text.execute()
dockerLogin.waitFor()

println dockerLogin.text

请注意,您应该在其上添加一些错误处理,因为此代码对 Docker AWS 可用性相当乐观。