Simplify the execution of the release container

Make gerrit-release.sh the default Docker container entrypoint
and adjust the 'run' as the default target for using the Makefile
to perform a Gerrit release.

Simplify the life of the release manager by allowing to trigger
a release with the following simple command:

make BRANCH=<stable branch> RELEASE=<release number> SNAPSHOT=<snapshot version>

Example:
  make BRANCH=stable-3.3 RELEASE=3.3.0 SNAPSHOT=3.3.1-SNAPSHOT

Git config is automatically set (if mounted externally), using the
user's .gitconfig as a template. Credentials are asked once and then
kept in memory for the whole release process session.

Non relevant Makefile targets are removed for keeping it simple and more
focused.

Bug: Issue 13577
Change-Id: Ib13ea7fb3602ade5c50e8a0d504d698d5146a64c
diff --git a/jenkins-docker/slave-release/Dockerfile b/jenkins-docker/slave-release/Dockerfile
index 2eb3e65..152e63e 100644
--- a/jenkins-docker/slave-release/Dockerfile
+++ b/jenkins-docker/slave-release/Dockerfile
@@ -10,6 +10,10 @@
 
 COPY gerrit-release.sh /usr/local/bin
 
-ENTRYPOINT /bin/bash
+ENTRYPOINT [ "/usr/local/bin/gerrit-release.sh" ]
+
+CMD [ "--help" ]
 
 USER jenkins
+
+WORKDIR /home/jenkins
diff --git a/jenkins-docker/slave-release/Makefile b/jenkins-docker/slave-release/Makefile
index e8d128c..2d0a20b 100644
--- a/jenkins-docker/slave-release/Makefile
+++ b/jenkins-docker/slave-release/Makefile
@@ -1,25 +1,53 @@
 NO_CACHE=true
 PREFIX=gerritforge
-IMAGE=${PREFIX}/gerrit-ci-slave-bazel:debian-buster-nocache-80.0.3987.149
+IMAGE=${PREFIX}/gerrit-release-bazel:debian-buster
 CONTAINER=release
 
-build:
+######################################################
+# Customize the parameters below for running a release
+######################################################
+
+# Branch from where the release will be cut
+BRANCH=stable-3.3
+
+# Release number
+RELEASE=3.3.0
+
+# Next SNAPSHOT after the release
+SNAPSHOT=3.3.1-SNAPSHOT
+
+# Release manager's GNUPG keyring
+GNUPG=${HOME}/.gnupg
+
+# Release manager's local git config for authentication
+GIT_CONFIG=${HOME}/.gitconfig
+
+# Release manager's local git cookies file
+GIT_COOKIES=${HOME}/.gitcookies
+
+######################################################
+# Targets for building the image and making a release
+######################################################
+
+run:
+	docker run --rm -it --name ${CONTAINER} ${IMAGE} ${BRANCH} ${RELEASE} ${SNAPSHOT} \
+		-u jenkins \
+		-v `pwd`/.gerritcodereview:/home/jenkins/.gerritcodereview \
+		-v ${HOME}/.m2:/home/jenkins/.m2 \
+		-v ${GNUPG}:/home/jenkins/.gnupg \
+		-v ${GIT_CONFIG}:/home/jenkins/.gitconfig.template \
+		-v ${GIT_COOKIES}:/home/jenkins/.gitcookies
+
+pull:
+	docker pull gerritforge/gerrit-ci-slave-bazel:debian-buster-nocache-80.0.3987.149
+
+build: pull
 	docker build --no-cache=$(NO_CACHE) -t ${IMAGE} .
 
-# Dockerfile shows from where to manually execute the release script once in.
-# E.g.: /usr/local/bin/gerrit-release.sh stable-3.3 3.3.0-rc3 3.3.0-SNAPSHOT
-run:
-	docker run -it --name ${CONTAINER} ${IMAGE}
-
-rerun: clean-container run
-
-publish:
+publish: build
 	docker push ${IMAGE}
 
-clean-image:
+clean:
 	docker rmi -f ${IMAGE}
 
-clean-container:
-	docker rm -f ${CONTAINER}
-
-.PHONY: clean-image clean-container publish
+.PHONY: run pull build publish clean
diff --git a/jenkins-docker/slave-release/gerrit-release.sh b/jenkins-docker/slave-release/gerrit-release.sh
index 1a9fa7e..8c49e40 100755
--- a/jenkins-docker/slave-release/gerrit-release.sh
+++ b/jenkins-docker/slave-release/gerrit-release.sh
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 
-if [ "$1" == "" ] || [ "$2" == "" ]
+if [ "$1" == "--help" ] || [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ]
 then
   echo "Gerrit Code Review - release automation script"
   echo "----------------------------------------------"
@@ -23,7 +23,13 @@
   rm -Rf gerrit
 fi
 
+if [ -f $HOME/.gitconfig.template ]
+then
+  cp $HOME/.gitconfig.template $HOME/.gitconfig
+fi
+
 echo "Cloning and building Gerrit Code Review on branch $branch ..."
+git config --global credential.helper cache
 git clone https://gerrit.googlesource.com/gerrit && (cd gerrit && f=$(git rev-parse --git-dir)/hooks/commit-msg ; curl -Lo "$f" https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x "$f")
 
 pushd gerrit
@@ -85,7 +91,7 @@
 echo "Pushing gerrit documentation to gerrit-documentation ..."
 unzip searchfree.zip
 pushd Documentation
-version_no_rc=$(echo "%version" | cut -d '-' -f 1)
+version_no_rc=$(echo "$version" | cut -d '-' -f 1)
 gsutil cp -r . gs://gerrit-documentation/Documentation/"$version_no_rc"
 popd