Gitlab CI - Docker переводит на AWS ECR - PullRequest
0 голосов
/ 19 сентября 2018

Я провел сегодня 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
...