Skip to content

Instantly share code, notes, and snippets.

@kevdoran
Last active April 10, 2023 19:27
Show Gist options
  • Save kevdoran/0bcb26c2f7435d7d53cc93c4e4393b52 to your computer and use it in GitHub Desktop.
Save kevdoran/0bcb26c2f7435d7d53cc93c4e4393b52 to your computer and use it in GitHub Desktop.
Build and push all images in the nifi repo to Docker Hub
#!/bin/sh
set -euxo pipefail
nifi_dir='/Users/kdoran/dev/code/nifi'
version='1.21.0'
# ^^^^^^
# MAKE SURE TO CHANGE THE VERSION ABOVE
# MAKE SURE TO CHECKOUT THE rel/nifi-${version} TAG PRIOR TO RUNNING THIS SCRIPT
# Pushing to the apache/nifi* Docker Hub repo requires the following on Docker Hub:
# - A member of the Apache organization
# - A member of the `nifipmc` team in the Apache org
#
# If you are an Apache NiFi PMC member, you can request this from ASF Infra. Here is an example:
# https://issues.apache.org/jira/browse/INFRA-20726
#
# Then, you must be logged into the Docker Hub from the command line, which you can do using:
# docker login
dockerhub_org='apache'
download_location=https://downloads.apache.org
#download_location=https://archive.apache.org/dist
# NiFi
nifi_repo="${dockerhub_org}/nifi"
nifi_docker_dir="${nifi_dir}/nifi-docker/dockerhub"
nifi_dockerfile="${nifi_docker_dir}/Dockerfile"
# Toolkit
nifi_toolkit_repo="${dockerhub_org}/nifi-toolkit"
nifi_toolkit_docker_dir="${nifi_dir}/nifi-toolkit/nifi-toolkit-assembly/docker"
nifi_toolkit_dockerfile="${nifi_toolkit_docker_dir}/Dockerfile.hub"
# MiNiFi
minifi_repo="${dockerhub_org}/nifi-minifi"
minifi_docker_dir="${nifi_dir}/minifi/minifi-docker/dockerhub"
minifi_dockerfile="${minifi_docker_dir}/Dockerfile"
# MiNiFi C2
c2_repo="${dockerhub_org}/nifi-minifi-c2"
c2_docker_dir="${nifi_dir}/minifi/minifi-c2/minifi-c2-docker/dockerhub"
c2_dockerfile="${c2_docker_dir}/Dockerfile"
# Registry
registry_repo="${dockerhub_org}/nifi-registry"
registry_docker_dir="${nifi_dir}/nifi-registry/nifi-registry-core/nifi-registry-docker/dockerhub"
registry_dockerfile="${registry_docker_dir}/Dockerfile"
# Stateless
stateless_repo="${dockerhub_org}/nifi-stateless"
build_image () {
dockerfile=$1
build_context=$2
docker_repo=$3
build_args=$4
platforms="linux/amd64,linux/arm64"
docker buildx build --push --platform "${platforms}" \
${build_args} \
--tag "${docker_repo}:${version}" \
--tag "${docker_repo}:latest" \
--file "${dockerfile}" \
"${build_context}"
}
cleanup () {
docker buildx rm nifi-builder
}
trap cleanup EXIT
docker buildx create --use --name nifi-builder --driver docker-container
echo 'Building & publishing NiFi'
build_image ${nifi_dockerfile} ${nifi_docker_dir} ${nifi_repo} "--build-arg NIFI_VERSION=${version} --build-arg BASE_URL=${download_location}"
echo 'Finished publishing NiFi'
echo 'Building & publishing NiFi Toolkit'
build_image ${nifi_toolkit_dockerfile} ${nifi_toolkit_docker_dir} ${nifi_toolkit_repo} "--build-arg NIFI_TOOLKIT_VERSION=${version} --build-arg MIRROR=${download_location}"
echo 'Finished publishing toolkit'
echo 'Building & publishing MiNiFi'
build_image ${minifi_dockerfile} ${minifi_docker_dir} ${minifi_repo} "--build-arg MINIFI_VERSION=${version} --build-arg MIRROR=${download_location}"
echo 'Finished publishing MiNiFi'
echo 'Building & publishing MiNiFi C2'
build_image ${c2_dockerfile} ${c2_docker_dir} ${c2_repo} "--build-arg MINIFI_C2_VERSION=${version} --build-arg MIRROR=${download_location}"
echo 'Finished publishing MiNiFi C2'
echo 'Building & publishing NiFi Registry'
build_image ${registry_dockerfile} ${registry_docker_dir} ${registry_repo} "--build-arg NIFI_REGISTRY_VERSION=${version} --build-arg MIRROR=${download_location}"
echo 'Finished publishing NiFi Registry'
# Stateless Docker image was done away with since NiFi 1.13.0, need to add it back at some point
#
# echo 'Building & publishing Stateless NiFi'
# mvn clean install -DskipTests -Pdocker -f ${nifi_dir}
# docker tag "${stateless_repo}:${version}-dockermaven" "${stateless_repo}:${version}"
# docker tag "${stateless_repo}:${version}-dockermaven" "${stateless_repo}:latest"
# publish_image "${stateless_repo}"
# echo 'Finished publishing Stateless NiFi'
echo "Don't forget to manually update the README files on docker hub!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment