Skip to content

Commit

Permalink
BEAM-8780 reuse RC images instead of recreate images
Browse files Browse the repository at this point in the history
  • Loading branch information
Hannah-Jiang committed Jan 7, 2020
1 parent c9c239f commit ef8545f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 36 deletions.
87 changes: 54 additions & 33 deletions release/src/main/scripts/publish_docker_images.sh 100644 → 100755
Expand Up @@ -24,43 +24,78 @@

set -e

source release/src/main/scripts/build_release_candidate.sh
PYTHON_VER=("python2.7" "python3.5" "python3.6" "python3.7")
FLINK_VER=("$(ls -1 runners/flink | awk '/^[0-9]+\.[0-9]+$/{print}')")

echo "Publish SDK docker images to Docker Hub."

echo "================Setting Up Environment Variables==========="
echo "Which release version are you working on: "
read RELEASE

echo "================Setting Up RC candidate Variables==========="
echo "From which RC candidate do you create publish docker image? (ex: rc0, rc1) "
read RC_VERSION

echo "================Confirmimg Release and RC version==========="
echo "We are using ${RC_VERSION} to create docker images for ${RELEASE}."
echo "Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "============Publishing SDK docker images on docker hub========="
cd ~
if [[ -d ${LOCAL_PYTHON_STAGING_DIR} ]]; then
rm -rf ${LOCAL_PYTHON_STAGING_DIR}
fi
mkdir -p ${LOCAL_PYTHON_STAGING_DIR}
cd ${LOCAL_PYTHON_STAGING_DIR}

echo '-------------------Cloning Beam Release Branch-----------------'
git clone ${GIT_REPO_URL}
cd ${BEAM_ROOT_DIR}
git checkout ${RELEASE_BRANCH}

echo '-------------------Generating and Pushing Python images-----------------'
./gradlew :sdks:python:container:buildAll -Pdocker-tag=${RELEASE}
for ver in "${PYTHON_VER[@]}"; do
# Pull varified RC from dockerhub.
docker pull apachebeam/${ver}_sdk:${RELEASE}_${RC_VERSION}

# Tag with ${RELEASE} and push to dockerhub.
docker tag apachebeam/${ver}_sdk:${RELEASE}_${RC_VERSION} apachebeam/${ver}_sdk:${RELEASE}
docker push apachebeam/${ver}_sdk:${RELEASE}
docker tag apachebeam/${ver}_sdk:${RELEASE} apachebeam/${ver}_sdk:latest

# Tag with latest and push to dockerhub.
docker tag apachebeam/${ver}_sdk:${RELEASE}_${RC_VERSION} apachebeam/${ver}_sdk:latest
docker push apachebeam/${ver}_sdk:latest

# Cleanup images from local
docker rmi -f apachebeam/${ver}_sdk:${RELEASE}_${RC_VERSION}
docker rmi -f apachebeam/${ver}_sdk:${RELEASE}
docker rmi -f apachebeam/${ver}_sdk:latest
done

echo '-------------------Generating and Pushing Java images-----------------'
./gradlew :sdks:java:container:dockerPush -Pdocker-tag=${RELEASE}
docker tag apachebeam/java_sdk:${RELEASE} apachebeam/java_sdk:latest
# Pull varified RC from dockerhub.
docker pull apachebeam/java_sdk:${RELEASE}_${RC_VERSION}

# Tag with ${RELEASE} and push to dockerhub.
docker tag apachebeam/java_sdk:${RELEASE}_${RC_VERSION} apachebeam/java_sdk:${RELEASE}
docker push apachebeam/java_sdk:${RELEASE}

# Tag with latest and push to dockerhub.
docker tag apachebeam/java_sdk:${RELEASE}_${RC_VERSION} apachebeam/java_sdk:latest
docker push apachebeam/java_sdk:latest

# Cleanup images from local
docker rmi -f apachebeam/java_sdk:${RELEASE}_${RC_VERSION}
docker rmi -f apachebeam/java_sdk:${RELEASE}
docker rmi -f apachebeam/java_sdk:latest

echo '-------------------Generating and Pushing Go images-----------------'
./gradlew :sdks:go:container:dockerPush -Pdocker-tag=${RELEASE}
docker tag apachebeam/go_sdk:${RELEASE} apachebeam/go_sdk:latest
# Pull varified RC from dockerhub.
docker pull apachebeam/go_sdk:${RELEASE}_${RC_VERSION}

# Tag with ${RELEASE} and push to dockerhub.
docker tag apachebeam/go_sdk:${RELEASE}_${RC_VERSION} apachebeam/go_sdk:${RELEASE}
docker push apachebeam/go_sdk:${RELEASE}

# Tag with latest and push to dockerhub.
docker tag apachebeam/go_sdk:${RELEASE}_${RC_VERSION} apachebeam/go_sdk:latest
docker push apachebeam/go_sdk:latest

# Cleanup images from local
docker rmi -f apachebeam/go_sdk:${RELEASE}_${RC_VERSION}
docker rmi -f apachebeam/go_sdk:${RELEASE}
docker rmi -f apachebeam/go_sdk:latest

echo '-------------Generating and Pushing Flink job server images-------------'
echo "Building containers for the following Flink versions:" "${FLINK_VER[@]}"
for ver in "${FLINK_VER[@]}"; do
Expand All @@ -71,20 +106,6 @@ if [[ $confirmation = "y" ]]; then
docker push "${FLINK_IMAGE_NAME}:latest"
done

rm -rf ~/${PYTHON_ARTIFACTS_DIR}

echo "-------------------Clean up SDK docker images at local-------------------"
for ver in "${PYTHON_VER[@]}"; do
docker rmi -f apachebeam/${ver}_sdk:${RELEASE}
docker rmi -f apachebeam/${ver}_sdk:latest
done

docker rmi -f apachebeam/java_sdk:${RELEASE}
docker rmi -f apachebeam/java_sdk:latest

docker rmi -f apachebeam/go_sdk:${RELEASE}
docker rmi -f apachebeam/go_sdk:latest

for ver in "${FLINK_VER[@]}"; do
FLINK_IMAGE_NAME=apachebeam/flink${ver}_job_server
docker rmi -f "${FLINK_IMAGE_NAME}:${RELEASE}"
Expand Down
4 changes: 1 addition & 3 deletions website/src/contribute/release-guide.md
Expand Up @@ -1259,9 +1259,7 @@ __NOTE__: Only PMC members have permissions to do it, ping [dev@](mailto:dev@bea
Make sure the download address for last release version is upldaed, [example PR](https://github.com/apache/beam-site/pull/478).

### Deploy SDK docker images to DockerHub
TODO(hannahjiang): change link to master branch after #9560 is merged.

* Script: [publish_docker_images.sh](https://github.com/Hannah-Jiang/beam/blob/release_script_for_containers/release/src/main/scripts/publish_docker_images.sh)
* Script: [publish_docker_images.sh](https://github.com/apache/beam/blob/master/release/src/main/scripts/publish_docker_images.sh)
* Usage
```
./beam/release/src/main/scripts/publish_docker_images.sh
Expand Down

0 comments on commit ef8545f

Please sign in to comment.