Кажется, что вы сталкиваетесь с некоторой путаницей в отношении того, что делает каждая команда docker и как добавить новые теги в существующий docker в вашей рабочей области.
В мире Jenkins, docker команды ведут себя так:
docker.image
принимает один аргумент, составляя IMAGE_NAME
: TAG
docker.tag
с одним аргументом, и будет принимать TAG
(эта команда не изменит 'IMAGE_NAME', она изменит только часть TAG
)
docker.push
принимает один необязательный аргумент, TAG
, означающий pu sh уже существующего изображения с только другой тег (не с другим IMAGE_NAME
)
В вашем конвейере вы пытаетесь изменить часть IMAGE_NAME
идентификатора docker, поскольку ни одна из вышеперечисленных команд вам не поможет.
НОВОЕ РЕШЕНИЕ
Другой способ решения этой проблемы - внести изменение IMAGE_NAME
через оболочку, а затем использовать плагины Jenkins для отображения и pu sh изображения
sh("docker tag ORIGINAL_IMAGE_NAME:ORIGINAL_TAG NEW_IMAGE_NAME:NEW_TAG")
newImage = docker.image("NEW_IMAGE_NAME:NEW_TAG")
# docker plugin should find the image on the localhost, so there is no need to pull it form the registry
newImage.push
в вашем коде, что-то вроде
sh ('docker tag artifactory.mycompany.com/docker-dev/appname/dev:latest artifactory.mycompany.com/docker-dev/appname/test:latest')
testImage2 = docker.image('artifactory.mycompany.com/docker-dev/appname/test:latest')
а затем pu sh каждое изображение независимо от другого
testImage.push()
testImage2.push()
НЕ РАБОТАЕТ
Вы можете попробовать указать 2 аргумента для docker.tag
, например:
docker.tag (ORIGINAL_IMAGE_NAME:ORIGINAL_TAG, NEW_IMAGE_NAME:NEW_TAG)
в вашем случае, что-то вроде
testImage.tag ("artifactory.mycompany.com/docker-dev/appname/dev:latest" "artifactory.mycompany.com/docker-dev/appname/test:latest")
, а затем pu sh каждое изображение независимо от другого
testImage.push (ORIGINAL_IMAGE_NAME:ORIGINAL_TAG)
testImage.push (NEW_IMAGE_NAME:NEW_TAG)