【问题标题】:Gitlab CI - Docker push to AWS ECRGitlab CI - Docker 推送到 AWS ECR
【发布时间】:2019-02-23 16:44:11
【问题描述】:

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

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

2) 对于 master 分支,我想将 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”

怎么办?有没有人尝试在 windows 平台上使用 cmd shell 脚本登录 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

【问题讨论】:

  • aws 在 PATH 变量中,我已经对其进行了验证和测试。第二个选项不起作用,我已经尝试提供完整路径,它给出了语法错误。
  • 我想知道,有没有什么方法可以在没有 AWSCLI 的情况下进行推送。只需在 docker config 或类似的东西中使用我的 IAM 角色 ID/Key。
  • 是的,您可以为此利用 ecr 凭证助手。参考:lwpro2.wordpress.com/2019/10/30/…

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


【解决方案1】:
猜你喜欢
  • 2017-08-13
  • 2019-07-24
  • 2020-02-13
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 2023-03-23
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多