我今天花了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