Split script: push_docker.sh (#89)
This commit is contained in:
parent
923b13afb4
commit
b68ec0eee8
@ -52,10 +52,7 @@ shift "$((OPTIND - 1))"
|
|||||||
|
|
||||||
## Dockerfile directory
|
## Dockerfile directory
|
||||||
DOCKER_BUILD_DIR=dockers/$1
|
DOCKER_BUILD_DIR=dockers/$1
|
||||||
REGISTRY_SERVER=$2
|
shift 1
|
||||||
REGISTRY_PORT=$3
|
|
||||||
REGISTRY_USERNAME=$4
|
|
||||||
REGISTRY_PASSWD=$5
|
|
||||||
|
|
||||||
[ -f "$DOCKER_BUILD_DIR"/Dockerfile ] || {
|
[ -f "$DOCKER_BUILD_DIR"/Dockerfile ] || {
|
||||||
echo "Invalid DOCKER_BUILD_DIR directory" >&2
|
echo "Invalid DOCKER_BUILD_DIR directory" >&2
|
||||||
@ -66,16 +63,6 @@ REGISTRY_PASSWD=$5
|
|||||||
docker_image_name=$(basename $DOCKER_BUILD_DIR)
|
docker_image_name=$(basename $DOCKER_BUILD_DIR)
|
||||||
}
|
}
|
||||||
|
|
||||||
[ ${BUILD_NUMBER} ] || {
|
|
||||||
echo "No BUILD_NUMBER found, setting to 0."
|
|
||||||
BUILD_NUMBER="0"
|
|
||||||
}
|
|
||||||
|
|
||||||
remote_image_name=$REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name:$docker_image_tag
|
|
||||||
timestamp="$(date -u +%Y%m%d)"
|
|
||||||
build_version="${timestamp}.${BUILD_NUMBER}"
|
|
||||||
build_remote_image_name=$REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name:$build_version
|
|
||||||
|
|
||||||
## Copy dependencies
|
## Copy dependencies
|
||||||
## Note: Dockerfile ADD doesn't support reference files outside the folder, so copy it locally
|
## Note: Dockerfile ADD doesn't support reference files outside the folder, so copy it locally
|
||||||
if ls deps/* 1>/dev/null 2>&1; then
|
if ls deps/* 1>/dev/null 2>&1; then
|
||||||
@ -112,27 +99,10 @@ if [ "$docker_image_name" = "docker-base" ]; then
|
|||||||
docker rmi -f $image_id || true
|
docker rmi -f $image_id || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
image_sha=''
|
## Save the docker image in a gz file
|
||||||
if [ -n "$REGISTRY_SERVER" ] && [ -n "$REGISTRY_PORT" ]; then
|
|
||||||
## Add registry information as tag, so will push as latest
|
|
||||||
## Add additional tag with build information
|
|
||||||
## Temporarily add -f option to prevent error message of Docker engine version < 1.10.0
|
|
||||||
docker tag $docker_image_name $remote_image_name
|
|
||||||
docker tag $docker_image_name $build_remote_image_name
|
|
||||||
|
|
||||||
## Login the docker image registry server
|
|
||||||
## Note: user name and password are passed from command line
|
|
||||||
docker login -u $REGISTRY_USERNAME -p "$REGISTRY_PASSWD" $REGISTRY_SERVER:$REGISTRY_PORT
|
|
||||||
|
|
||||||
## Push image to registry server
|
|
||||||
## And get the image digest SHA256
|
|
||||||
trap_push "docker rmi $remote_image_name || true"
|
|
||||||
trap_push "docker rmi $build_remote_image_name || true"
|
|
||||||
image_sha=$(docker push $remote_image_name | sed -n "s/.*: digest: sha256:\([0-9a-f]*\).*/\\1/p")
|
|
||||||
docker push $build_remote_image_name
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p target
|
mkdir -p target
|
||||||
rm -f target/$docker_image_name.*.gz
|
docker save $docker_image_name | gzip -c > target/$docker_image_name.gz
|
||||||
docker save $docker_image_name | gzip -c > target/$docker_image_name.$build_version.gz
|
|
||||||
echo "Image sha256: $image_sha"
|
if [ -n "$1" ]; then
|
||||||
|
./push_docker.sh target/$docker_image_name.gz $@ $docker_image_tag
|
||||||
|
fi
|
||||||
|
42
push_docker.sh
Executable file
42
push_docker.sh
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
DOCKER_IMAGE_FILE=$1
|
||||||
|
REGISTRY_SERVER=$2
|
||||||
|
REGISTRY_PORT=$3
|
||||||
|
REGISTRY_USERNAME=$4
|
||||||
|
REGISTRY_PASSWD=$5
|
||||||
|
DOCKER_IMAGE_TAG=$6
|
||||||
|
|
||||||
|
set -e
|
||||||
|
docker load < $DOCKER_IMAGE_FILE
|
||||||
|
|
||||||
|
## Fetch the Jenkins build number if inside it
|
||||||
|
[ ${BUILD_NUMBER} ] || {
|
||||||
|
echo "No BUILD_NUMBER found, setting to 0."
|
||||||
|
BUILD_NUMBER="0"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Prepare tag
|
||||||
|
docker_image_name=$(basename $DOCKER_IMAGE_FILE | cut -d. -f1)
|
||||||
|
remote_image_name=$REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name:$DOCKER_IMAGE_TAG
|
||||||
|
timestamp="$(date -u +%Y%m%d)"
|
||||||
|
build_version="${timestamp}.${BUILD_NUMBER}"
|
||||||
|
build_remote_image_name=$REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name:$build_version
|
||||||
|
|
||||||
|
## Add registry information as tag, so will push as latest
|
||||||
|
## Add additional tag with build information
|
||||||
|
## Temporarily add -f option to prevent error message of Docker engine version < 1.10.0
|
||||||
|
docker tag $docker_image_name $remote_image_name
|
||||||
|
docker tag $docker_image_name $build_remote_image_name
|
||||||
|
|
||||||
|
## Login the docker image registry server
|
||||||
|
## Note: user name and password are passed from command line
|
||||||
|
docker login -u $REGISTRY_USERNAME -p "$REGISTRY_PASSWD" $REGISTRY_SERVER:$REGISTRY_PORT
|
||||||
|
|
||||||
|
## Push image to registry server
|
||||||
|
## And get the image digest SHA256
|
||||||
|
echo "Pushing $remote_image_name"
|
||||||
|
image_sha=$(docker push $remote_image_name | sed -n "s/.*: digest: sha256:\([0-9a-f]*\).*/\\1/p")
|
||||||
|
docker rmi $remote_image_name || true
|
||||||
|
echo "Image sha256: $image_sha"
|
||||||
|
echo "Pushing $build_remote_image_name"
|
||||||
|
docker push $build_remote_image_name
|
||||||
|
docker rmi $build_remote_image_name || true
|
Loading…
Reference in New Issue
Block a user