Skip to content
GitLab
Explore
Sign in
Tools
Docker
Gitlab CI Job Docker Image Retag
Compare revisions
ace3083c717997150f566ecdf74afc8635ed51f4 to ca3cdbb8515ee146e5b7f3b472da20f9433142fe
Commits on Source (2)
debug
· 12a6b852
Дмитрий Сафронов
authored
Feb 18, 2024
12a6b852
Merge branch 'debug' into 'master'
· ca3cdbb8
Дмитрий Сафронов
authored
Feb 18, 2024
debug See merge request
!8
ca3cdbb8
Hide whitespace changes
Inline
Side-by-side
entrypoint.sh
View file @
ca3cdbb8
...
@@ -17,6 +17,9 @@ die() {
...
@@ -17,6 +17,9 @@ die() {
##########################################################################################################################
##########################################################################################################################
# Set content type
CONTENT_TYPE
=
"Content-Type: application/vnd.docker.distribution.manifest.v2+json"
# Check if env vars were set
# Check if env vars were set
test
-z
"
${
CI_SERVER_HOST
}
"
&&
should_die
"CI_SERVER_HOST is missing"
test
-z
"
${
CI_SERVER_HOST
}
"
&&
should_die
"CI_SERVER_HOST is missing"
test
-z
"
${
CI_REGISTRY
}
"
&&
should_die
"CI_REGISTRY is missing"
test
-z
"
${
CI_REGISTRY
}
"
&&
should_die
"CI_REGISTRY is missing"
...
@@ -25,31 +28,30 @@ test -z "${CI_REGISTRY_PASSWORD}" && should_die "CI_REGISTRY_PASSWORD is missing
...
@@ -25,31 +28,30 @@ test -z "${CI_REGISTRY_PASSWORD}" && should_die "CI_REGISTRY_PASSWORD is missing
test
-z
"
${
CI_PROJECT_PATH
}
"
&&
should_die
"CI_PROJECT_PATH is missing"
test
-z
"
${
CI_PROJECT_PATH
}
"
&&
should_die
"CI_PROJECT_PATH is missing"
test
-z
"
${
CI_COMMIT_SHA
}
"
&&
should_die
"CI_COMMIT_SHA is missing"
test
-z
"
${
CI_COMMIT_SHA
}
"
&&
should_die
"CI_COMMIT_SHA is missing"
##########################################################################################################################
test
-n
"
${
SHOULD_DIE
}
"
&&
die
"Incomplete config!"
##########################################################################################################################
# DEBUG
test
-z
"
${
RETAG_DEBUG
}
"
||
set
-x
# Define default custom image name
# Define default custom image name
test
-z
"
${
CUSTOM_IMAGENAME
}
"
&&
test
-z
"
${
CI_COMMIT_TAG
}
"
&&
CUSTOM_IMAGENAME
=
"
${
CI_COMMIT_REF_SLUG
}
"
test
-z
"
${
CUSTOM_IMAGENAME
}
"
&&
test
-z
"
${
CI_COMMIT_TAG
}
"
&&
CUSTOM_IMAGENAME
=
"
${
CI_COMMIT_REF_SLUG
}
"
test
-z
"
${
CUSTOM_IMAGENAME
}
"
&&
IMAGE_PATH
=
"
${
CI_PROJECT_PATH
}
"
||
IMAGE_PATH
=
"
${
CI_PROJECT_PATH
}
/
${
CUSTOM_IMAGENAME
}
"
test
-z
"
${
CUSTOM_IMAGENAME
}
"
&&
IMAGE_PATH
=
"
${
CI_PROJECT_PATH
}
"
||
IMAGE_PATH
=
"
${
CI_PROJECT_PATH
}
/
${
CUSTOM_IMAGENAME
}
"
# Define default image old tag
# Define default image old tag
test
-z
"
${
REGISTRY_TAG_OLD
}
"
&&
test
-z
"
${
CI_COMMIT_TAG
}
"
&&
REGISTRY_TAG_OLD
=
"
${
CI_COMMIT_SHA
}
"
||
REGISTRY_TAG_OLD
=
"
${
CI_COMMIT_TAG
}
"
test
-z
"
${
REGISTRY_TAG_OLD
}
"
&&
(
test
-z
"
${
CI_COMMIT_TAG
}
"
&&
REGISTRY_TAG_OLD
=
"
${
CI_COMMIT_SHA
}
"
||
REGISTRY_TAG_OLD
=
"
${
CI_COMMIT_TAG
}
"
)
# Define default image new tag
# Define default image new tag
test
-z
"
${
REGISTRY_TAG_NEW
}
"
&&
REGISTRY_TAG_NEW
=
latest
test
-z
"
${
REGISTRY_TAG_NEW
}
"
&&
REGISTRY_TAG_NEW
=
latest
##########################################################################################################################
test
-n
"
${
SHOULD_DIE
}
"
&&
die
"Incomplete config!"
##########################################################################################################################
# Set content type
CONTENT_TYPE
=
"Content-Type: application/vnd.docker.distribution.manifest.v2+json"
# Set manifest root url
MANIFEST_URL
=
${
REGISTRY_SCHEMA
:-
https
}
://
${
CI_REGISTRY
}
/v2/
${
IMAGE_PATH
}
/manifests
##########################################################################################################################
##########################################################################################################################
TEMPFILE
=
$(
mktemp
)
TEMPFILE
=
$(
mktemp
)
##########################################################################################################################
##########################################################################################################################
# DEBUG
# DEBUG
test
-z
"
${
RETAG_DEBUG
}
"
||
echo
"Old image:
${
CI_REGISTRY
}
/
${
IMAGE_PATH
}
:
${
REGISTRY_TAG_OLD
}
"
echo
"Image:
${
CI_REGISTRY
}
/
${
IMAGE_PATH
}
"
echo
"Old tag:
${
REGISTRY_TAG_OLD
}
"
# Fetch JWT token
# Fetch JWT token
TOKEN
=
$(
curl
-s
\
TOKEN
=
$(
curl
-s
\
...
@@ -59,16 +61,17 @@ TOKEN=$(curl -s \
...
@@ -59,16 +61,17 @@ TOKEN=$(curl -s \
-d
scope
=
"repository:
${
IMAGE_PATH
}
:push,pull,delete"
\
-d
scope
=
"repository:
${
IMAGE_PATH
}
:push,pull,delete"
\
| jq
-r
'.token'
)
| jq
-r
'.token'
)
test
-n
"
${
TOKEN
}
"
||
die
"Couldn't get token"
test
-n
"
${
TOKEN
}
"
||
die
"Couldn't get token"
test
-z
"
${
RETAG_DEBUG
}
"
||
echo
"Token: [
${
TOKEN
}
]"
BEARER
=
"Authorization:Bearer
$TOKEN
"
BEARER
=
"Authorization:Bearer
$TOKEN
"
# Set manifest root url
MANIFEST_URL
=
${
REGISTRY_SCHEMA
:-
https
}
://
${
CI_REGISTRY
}
/v2/
${
IMAGE_PATH
}
/manifests
# Fetch image manifest
# Fetch image manifest
MANIFEST
=
$(
curl
-s
\
MANIFEST
=
$(
curl
-s
\
-H
"
${
BEARER
}
"
\
-H
"
${
BEARER
}
"
\
-H
"
${
CONTENT_TYPE
}
"
\
-H
"
${
CONTENT_TYPE
}
"
\
-G
${
MANIFEST_URL
}
/
${
REGISTRY_TAG_OLD
}
)
-G
${
MANIFEST_URL
}
/
${
REGISTRY_TAG_OLD
}
)
test
-n
"
${
MANIFEST
}
"
||
die
"Couldn't get manifest"
test
-n
"
${
MANIFEST
}
"
||
die
"Couldn't get manifest"
test
-z
"
${
RETAG_DEBUG
}
"
||
echo
"Manifest: [
${
MANIFEST
}
]"
# Push image manifest
# Push image manifest
RESPONCE
=
$(
curl
-s
\
RESPONCE
=
$(
curl
-s
\
...
@@ -78,9 +81,8 @@ RESPONCE=$(curl -s \
...
@@ -78,9 +81,8 @@ RESPONCE=$(curl -s \
-X
PUT
\
-X
PUT
\
-d
"
$MANIFEST
"
)
-d
"
$MANIFEST
"
)
test
-z
"
${
RESPONCE
}
"
||
die
"Couldn't get responce"
test
-z
"
${
RESPONCE
}
"
||
die
"Couldn't get responce"
test
-z
"
${
RETAG_DEBUG
}
"
||
echo
"Responce: [
${
RESPONCE
}
]"
echo
"
Image
tag:
${
CI_REGISTRY
}
/
${
IMAGE_PATH
}
:
${
REGISTRY_TAG_NEW
}
"
echo
"
New
tag:
${
REGISTRY_TAG_NEW
}
"
##########################################################################################################################
##########################################################################################################################
rm
-f
"
${
TEMPFILE
}
"
rm
-f
"
${
TEMPFILE
}
"