Я хочу изменить теги моих образов докеров в Artifactory с помощью REST API. Единственный возможный способ заставить это работать, который я смог найти, — это продвигать изображение в другой репозиторий и продвигать его обратно при изменении тега.
Я действительно не хочу создавать другой репозиторий только для того, чтобы переместить туда свое изображение, а затем обратно.
Когда я попытался продвигать изображение в исходный репозиторий, я получаю это сообщение об ошибке:
{\n "errors" : [ {\n "status" : 400,\n "message" : "Skipping promote since destination and source are the same"\n } ]\n}'
Я нашел обходной путь. Вы делаете это, используя 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, щелкнув изображение правой кнопкой мыши.
Конечно, есть также возможность «Вытащить» -> «Переметить» -> «Отправить» и удалить старое изображение.