Я провел сегодня 5 часов без посторонней помощи.Вот сценарий / настройка.
1) Windows Server - Gitlab-runner работает, делает сборки и отправляет их в реестр Docker на сервере для ветви разработки
2) Для основной ветви я хочуперенести образ докера в AWS ECR.
3) Я уже установил AWS CLI и добавил в глобальную переменную PATH на сервере сборки.Я могу запускать команды и успешно переходить на AWS ECR.
4) ПРОБЛЕМА - Когда я выполняю тот же сценарий из файла CIM .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»
Что делать?Кто-нибудь пытался войти в AWS ECR на платформе Windows с помощью сценария оболочки cmd.
ОБНОВЛЕНИЕ: Как вы думаете, будет ли работать любое из следующего?Сейчас у меня нет доступа к моему серверу, я проверю их завтра утром.
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