diff --git a/docker/build.sh b/docker/build.sh
index d8ab4bea882c4..88be44f23e73f 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -18,7 +18,7 @@
# under the License.
#
-ROOT_DIR=$(git rev-parse --show-toplevel)
+ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. >/dev/null 2>&1 && pwd )"
cd $ROOT_DIR/docker
mvn package -Pdocker,-main
diff --git a/docker/get-version.sh b/docker/get-version.sh
index 07145e7cf0c18..0b736baf3b270 100755
--- a/docker/get-version.sh
+++ b/docker/get-version.sh
@@ -18,7 +18,7 @@
# under the License.
#
-ROOT_DIR=$(git rev-parse --show-toplevel)
+ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. >/dev/null 2>&1 && pwd )"
pushd $ROOT_DIR > /dev/null
diff --git a/docker/pom.xml b/docker/pom.xml
index 882240925ef24..afe55f0fe57f0 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -60,6 +60,20 @@
pulsar
pulsar-all
+
+
+
+ pl.project13.maven
+ git-commit-id-plugin
+
+ false
+ true
+ true
+ false
+
+
+
+
diff --git a/docker/publish.sh b/docker/publish.sh
index 45b338d85f8ef..651fefc1498e9 100755
--- a/docker/publish.sh
+++ b/docker/publish.sh
@@ -18,7 +18,7 @@
# under the License.
#
-ROOT_DIR=$(git rev-parse --show-toplevel)
+ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. >/dev/null 2>&1 && pwd )"
cd $ROOT_DIR/docker
# We should only publish images that are made from official and approved releases
@@ -49,6 +49,9 @@ fi
MVN_VERSION=`./get-version.sh`
echo "Pulsar version: ${MVN_VERSION}"
+GIT_COMMIT_ID_ABBREV=$(git rev-parse --short=7 HEAD 2>/dev/null || echo no-git)
+GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo no-git)
+IMAGE_TAG="${MVN_VERSION}-${GIT_COMMIT_ID_ABBREV}"
if [[ -z ${DOCKER_REGISTRY} ]]; then
docker_registry_org=${DOCKER_ORG}
@@ -62,16 +65,21 @@ set -x
# Fail if any of the subsequent commands fail
set -e
-docker tag apachepulsar/pulsar:latest ${docker_registry_org}/pulsar:latest
-docker tag apachepulsar/pulsar-all:latest ${docker_registry_org}/pulsar-all:latest
+if [[ "$GIT_BRANCH" == "master" ]]; then
+ docker tag apachepulsar/pulsar:${IMAGE_TAG} ${docker_registry_org}/pulsar:latest
+ docker tag apachepulsar/pulsar-all:${IMAGE_TAG} ${docker_registry_org}/pulsar-all:latest
+fi
-docker tag apachepulsar/pulsar:latest ${docker_registry_org}/pulsar:$MVN_VERSION
-docker tag apachepulsar/pulsar-all:latest ${docker_registry_org}/pulsar-all:$MVN_VERSION
+docker tag apachepulsar/pulsar:${IMAGE_TAG} ${docker_registry_org}/pulsar:$MVN_VERSION
+docker tag apachepulsar/pulsar-all:${IMAGE_TAG} ${docker_registry_org}/pulsar-all:$MVN_VERSION
# Push all images and tags
-docker push ${docker_registry_org}/pulsar:latest
-docker push ${docker_registry_org}/pulsar-all:latest
+if [[ "$GIT_BRANCH" == "master" ]]; then
+ docker push ${docker_registry_org}/pulsar:latest
+ docker push ${docker_registry_org}/pulsar-all:latest
+fi
+
docker push ${docker_registry_org}/pulsar:$MVN_VERSION
docker push ${docker_registry_org}/pulsar-all:$MVN_VERSION
-echo "Finished pushing images to ${docker_registry_org}"
+echo "Finished pushing images to ${docker_registry_org}"
\ No newline at end of file
diff --git a/docker/pulsar-all/Dockerfile b/docker/pulsar-all/Dockerfile
index 42431fc94a067..81ad74b65000f 100644
--- a/docker/pulsar-all/Dockerfile
+++ b/docker/pulsar-all/Dockerfile
@@ -17,6 +17,7 @@
# under the License.
#
+ARG PULSAR_IMAGE
FROM busybox as pulsar-all
ARG PULSAR_IO_DIR
@@ -26,6 +27,6 @@ ADD ${PULSAR_IO_DIR} /connectors
ADD ${PULSAR_OFFLOADER_TARBALL} /
RUN mv /apache-pulsar-offloaders-*/offloaders /offloaders
-FROM apachepulsar/pulsar:latest
+FROM $PULSAR_IMAGE
COPY --from=pulsar-all /connectors /pulsar/connectors
COPY --from=pulsar-all /offloaders /pulsar/offloaders
diff --git a/docker/pulsar-all/pom.xml b/docker/pulsar-all/pom.xml
index 7a2f492632135..e616ac132d319 100644
--- a/docker/pulsar-all/pom.xml
+++ b/docker/pulsar-all/pom.xml
@@ -66,6 +66,17 @@
+
+ git-commit-id-no-git
+
+
+ ${basedir}/../../.git/index
+
+
+
+ no-git
+
+
docker
@@ -144,11 +155,12 @@
${project.basedir}
latest
- ${project.version}
+ ${project.version}-${git.commit.id.abbrev}
target/apache-pulsar-io-connectors-${project.version}-bin
target/pulsar-offloader-distribution-${project.version}-bin.tar.gz
+ ${docker.organization}/pulsar:${project.version}-${git.commit.id.abbrev}
diff --git a/docker/pulsar/pom.xml b/docker/pulsar/pom.xml
index e1c1503a3f381..85d86cff12523 100644
--- a/docker/pulsar/pom.xml
+++ b/docker/pulsar/pom.xml
@@ -48,11 +48,22 @@
- mirror://mirrors.ubuntu.com/mirrors.txt
- http://security.ubuntu.com/ubuntu/
+ mirror://mirrors.ubuntu.com/mirrors.txt
+ http://security.ubuntu.com/ubuntu/
+
+ git-commit-id-no-git
+
+
+ ${basedir}/../../.git/index
+
+
+
+ no-git
+
+
docker
@@ -82,7 +93,7 @@
${project.basedir}
latest
- ${project.version}
+ ${project.version}-${git.commit.id.abbrev}
diff --git a/pom.xml b/pom.xml
index 6cd0a4fc5b9b3..7515aaf6863d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -286,7 +286,7 @@ flexible messaging model and an intuitive client API.
1.1.0
1.5.0
3.1.2
- 4.0.2
+ 4.9.10
3.5.3
1.7.0
0.8.8
@@ -1571,6 +1571,31 @@ flexible messaging model and an intuitive client API.
+
+ pl.project13.maven
+ git-commit-id-plugin
+ ${git-commit-id-plugin.version}
+
+
+ git-info
+
+ revision
+
+
+
+
+ true
+ true
+ git
+ false
+ false
+
+ false
+ false
+
+
+
+
com.mycila
license-maven-plugin
diff --git a/pulsar-common/pom.xml b/pulsar-common/pom.xml
index a7d4dcf6beeca..cfc9cba7ede7f 100644
--- a/pulsar-common/pom.xml
+++ b/pulsar-common/pom.xml
@@ -194,7 +194,7 @@
provided
true
-
+
com.google.protobuf
protobuf-java
@@ -296,6 +296,7 @@
+ false
true
git
false