Gitlab CI-Docker推送到AWS ECR

时间:2018-09-19 13:27:51

标签: powershell docker gitlab-ci amazon-ecs aws-ecr

我今天在没有帮助的情况下度过了5个小时。这是场景/设置。

1)Windows Server-Gitlab-runner正在运行,正在构建并推送到服务器上用于开发分支的Docker注册表

2)对于master分支,我想将docker image推送到AWS ECR。

3)我已经安装了AWS CLI,并将其添加到构建服务器上的全局PATH变量中。我可以运行命令并成功推送到AWS ECR。

4)问题-当我从CI .yml文件执行相同的脚本时,它失败了。 我的gitlab-runner在“ cmd”“ shell”模式下运行,并且我的脚本采用相同的格式。 但是要获取AWS登录令牌,我必须执行以下命令:

powershell Invoke-Expression -Command (aws ecr get-login --no-include-email)

我可以在cmd提示符下运行以上命令,但是当跑步者尝试执行此命令时,它无法识别“ aws”。

“ aws”的路径是“ C:\ Program Files \ Amazon \ AWSCLI \ bin \ aws.exe”

该怎么办?是否有人尝试使用cmd shell脚本登录Windows平台中的AWS ECR。

更新: 您认为以下任何一项有效吗?我现在无法访问服务器,明天早上我将对其进行测试。

powershell Invoke-Expression -Command (powershell aws ecr get-login --no-include-email)




OR

powershell $abc = & "C:\Program Files\Amazon\AWSCLI\bin\aws" ecr get-login --no-include-email; Invoke-Expression $abc


OR

powershell

$abc = & "C:\Program Files\Amazon\AWSCLI\bin\aws" ecr get-login --no-include-email
Invoke-Expression $abc;
exit



OR

powershell -command C:\Work\awsbat.ps1


awsbat.ps1 file =

$abc = & "C:\Program Files\Amazon\AWSCLI\bin\aws" ecr get-login --no-include-email

Invoke-Expression $abc

答案:

选项4对我有用。

Execute following in gitlab CI yml file:
powershell -command C:\Work\awsbat.ps1


contents of awsbat.ps1 file =

$abc = & "C:\Program Files\Amazon\AWSCLI\bin\aws" ecr get-login --no-include-email
Invoke-Expression $abc

1 个答案:

答案 0 :(得分:0)