我今天在没有帮助的情况下度过了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
答案 0 :(得分:0)