Искусственное изменение тега изображения докера внутри одного репо

Я хочу изменить теги моих образов докеров в Artifactory с помощью REST API. Единственный возможный способ заставить это работать, который я смог найти, — это продвигать изображение в другой репозиторий и продвигать его обратно при изменении тега.

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

Когда я попытался продвигать изображение в исходный репозиторий, я получаю это сообщение об ошибке:

{\n  "errors" : [ {\n    "status" : 400,\n    "message" : "Skipping promote since destination and source are the same"\n  } ]\n}'
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я нашел обходной путь. Вы делаете это, используя Copy Item, а затем удаляя его.

 POST /api/copy/{srcRepoKey}/{srcFilePath}?to=/{targetRepoKey}/{targetFilePath}[&dry=1][&suppressLayouts=0/1(default)][&failFast=0/1]

Ссылка на документ

Я не понимаю, почему они не указывают эту информацию рядом с документацией по продвижению изображения. В целом новая документация Artifactory очень плоха. Мне это не нравится, и я надеюсь, что они вернут его.

Можно продвигать образ Docker, как вы упомянули в вопросе. В этом случае изображение будет перемещено/продвинуто, и свойства этого изображения (например, его можно найти в пользовательском интерфейсе при нажатии на manifest.json) будут соответствующим образом изменены вместе с ним.

Другой вариант, похожий на тот, что вы нашли, это с помощью вызова Move REST-API (вместо Copy) изменить путь к изображению (а вместе с ним и тег, так как он соответствует пути) и тогда он не потребуется иметь дополнительное действие, а также удалить, например:

$ curl -uadmin -XPOST "http://<Artifactory-URL>/artifactory/api/move/<Docker-Repo>/<Image-Name>/<Tag-Name>?to=/<Docker-Repo>/<Image-Name>/<New-Tag-Name>”

Обратите внимание, что в этом случае (как для перемещения, так и для копирования) свойства (например, свойство для имени тега) не будут изменены после этого действия), однако это не повлияет на функциональность, и образ Docker можно будет извлечь с новым тег в соответствии с новым путем, по которому он был перемещен. При этом свойства также можно изменить вручную после изменения, если вы хотите, чтобы новый путь и свойства были согласованы.

Кроме того, аналогично вызову Move REST-API, операцию перемещения также можно выполнить непосредственно из пользовательского интерфейса Artifactory, щелкнув изображение правой кнопкой мыши.

Конечно, есть также возможность «Вытащить» -> «Переметить» -> «Отправить» и удалить старое изображение.

Другие вопросы по теме