Остановить задачу Azure Pipeline AWS ECR Push, удалив косую черту из имени репозитория

Я пытаюсь отправить изображения из моего Azure Pipeline в AWS ECR, содержащий косую черту, но конвейер продолжает давать сбой, поскольку задача ECR, похоже, удаляет дополнительную косую черту.

Мой конвейер содержит следующее:

- task: ECRPushImage@1
  displayName: 'Push latest image'
  inputs:
    imageSource: 'imagename'
    sourceImageName: 'appname'
    repositoryName: 'team-name/appname'
    forceDockerNamingConventions: true

Конвейер сборки показывает, что он удаляет косую черту из имени репозитория:

Adding tag '##########.dkr.ecr.#########.amazonaws.com/team-nameappname:latest' to image 'appname:latest'

а затем заканчивается:

name unknown: The repository with name 'team-nameappname' does not exist in the registry with id '##########', что верно, потому что имя репо - team-name/appname

Если я изменю свой ECR так, чтобы он не содержал косую черту, тогда задача помечает мое изображение неправильно:

Adding tag '##########.dkr.ecr.#########.amazonaws.com/team-name:latest' to image 'appname:latest'

У нас много репозиториев, и нам нужно разделить их по названию команды и названию приложения.

Я пробовал использовать // в названии, но это также приводит к сбою задачи.

Как я могу поместить свое изображение в ECR с косой чертой в имени?

Нужно ли мне не использовать задачу ECR Push, а вместо этого использовать команду docker? Или задача AWS CLI?

Я просмотрел документы и ТАК, но безуспешно :-(


person Simply Ged    schedule 13.04.2021    source источник


Ответы (1)


Оказывается, проблема была в forceDockerNamingConventions. Соглашения об именах Docker допускают только строчные буквы, цифры или - и _.

Я просмотрел исходный код задачи ECR Push Task здесь и обнаружил проблему.

После установки флага в значение false (последняя строка в приведенном ниже фрагменте) push завершился успешно с косой чертой в имени

- task: ECRPushImage@1
  displayName: 'Push latest image'
  inputs:
    imageSource: 'imagename'
    sourceImageName: 'appname'
    repositoryName: 'team-name/appname'
    forceDockerNamingConventions: false

Теперь у меня в репозитории правильное имя изображения :-)

Pushing image '##########.dkr.ecr.#####.amazonaws.com/team-name/appname:latest' to Elastic Container Registry

Надеюсь, это поможет другим, кто сталкивается с той же проблемой.

person Simply Ged    schedule 13.04.2021