0

我今天花了5个小时没有任何帮助。这是场景/设置。

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

2) 对于主分支,我想将 docker 镜像推送到 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
4

1 回答 1

0

是的,您可以为此利用 ecr 凭证助手。参考:https ://lwpro2.wordpress.com/2019/10/30/authenticating-amazon-ecr-repositories-for-docker-cli-with-credential-helper/

于 2019-10-31T02:47:50.873 回答