Allow overriding gerrit.war when build the image
Introduce a GERRIT_WAR_URL variable for overriding
the gerrit.war inside the Docker container.
This is particularly useful for nightly builds on
for testing the latest artifact built on the Gerrit-CI.
Also checks the compatibility of GERRIT_VERSION with
the gerrit.war pointed by GERRIT_WAR_URL.
Change-Id: Ibe5e780a98a7747a3201d7d2809ecb66f87e08b8
diff --git a/gerrit/Dockerfile b/gerrit/Dockerfile
index 5dae609..dd3ce2a 100644
--- a/gerrit/Dockerfile
+++ b/gerrit/Dockerfile
@@ -28,6 +28,8 @@
USER gerrit
+RUN bash -c '[ "$GERRIT_WAR_URL" == "" ] || curl $GERRIT_WAR_URL > /var/gerrit/bin/gerrit.war'
+
# Install AWS cli
RUN pip3 install awscli --upgrade --user
ENV PATH ${PATH}:/var/gerrit/.local/bin
diff --git a/gerrit/Makefile b/gerrit/Makefile
index ef80087..53d9b80 100644
--- a/gerrit/Makefile
+++ b/gerrit/Makefile
@@ -43,11 +43,24 @@
|| { echo >&2 "Cannot download $$mavenlib: Check internet connection. Aborting"; exit 1; } \
done
-gerrit-build:
+gerrit-build: check-gerrit-version-vs-war-url
cat Dockerfile | \
- GERRIT_VERSION=$(GERRIT_VERSION) GERRIT_PATCH=$(GERRIT_PATCH) envsubst | \
+ GERRIT_VERSION=$(GERRIT_VERSION) GERRIT_PATCH=$(GERRIT_PATCH) GERRIT_WAR_URL=$(GERRIT_WAR_URL) envsubst | \
docker build -f - -t aws-gerrit/gerrit:$(IMAGE_TAG) .
docker tag aws-gerrit/gerrit:$(IMAGE_TAG) $(DOCKER_REGISTRY_URI)/aws-gerrit/gerrit:$(IMAGE_TAG)
+check-gerrit-version-vs-war-url:
+ . set-java.sh 11; \
+ if [[ "$(GERRIT_WAR_URL)" != "" ]]; \
+ then \
+ curl $(GERRIT_WAR_URL) > gerrit.war; \
+ GERRIT_VERSION_FROM_WAR=$$(java -jar gerrit.war version | awk '{print $$3}' | cut -d '.' -f 1,2); \
+ if [[ "$$GERRIT_VERSION_FROM_WAR" != "$(GERRIT_VERSION)" ]]; \
+ then \
+ echo "GERRIT_VERSION=$(GERRIT_VERSION) is not compatible with $$(java -jar gerrit.war version) from $(GERRIT_WAR_URL)"; \
+ exit -1; \
+ fi; \
+ fi
+
gerrit-publish: gerrit-get-plugins docker-registry-login gerrit-build
docker push $(DOCKER_REGISTRY_URI)/aws-gerrit/gerrit:$(IMAGE_TAG)