Gitlab CI - Docker push to AWS ECR



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

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

2( 对于主分支,我想将 docker 镜像推送到 AWS ECR。

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

4(问题 - 当我从 CI .yml 文件执行相同的脚本时,它失败了。 我的 gitlab 运行器在"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 FilesAmazonAWSCLIbinaws" ecr get-login --no-include-email; Invoke-Expression $abc

OR
powershell
$abc = & "C:Program FilesAmazonAWSCLIbinaws" ecr get-login --no-include-email
Invoke-Expression $abc;
exit

OR
powershell -command C:Workawsbat.ps1

awsbat.ps1 file =
$abc = & "C:Program FilesAmazonAWSCLIbinaws" ecr get-login --no-include-email
Invoke-Expression $abc

答:

选项 4 对我有用。

Execute following in gitlab CI yml file:
powershell -command C:Workawsbat.ps1

contents of awsbat.ps1 file =
$abc = & "C:Program FilesAmazonAWSCLIbinaws" ecr get-login --no-include-email
Invoke-Expression $abc

是的,您可以利用 ECR 凭证帮助程序来实现这一点。 请参阅:https://lwpro2.wordpress.com/2019/10/30/authenticating-amazon-ecr-repositories-for-docker-cli-with-credential-helper/

最新更新