Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 44 additions & 51 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,74 +3,67 @@ FROM openjdk:8-jre-alpine
MAINTAINER zsx <thinkernel@gmail.com>

# Overridable defaults
ENV GERRIT_HOME /var/gerrit
ENV GERRIT_SITE ${GERRIT_HOME}/review_site
ENV GERRIT_WAR ${GERRIT_HOME}/gerrit.war
ENV GERRIT_VERSION 2.15.1
ENV GERRIT_USER gerrit2
ENV GERRIT_INIT_ARGS ""
ARG GERRIT_USER=gerrit2
ARG GERRIT_HOME=/var/lib/gerrit
ARG GERRIT_VERSION=2.15.1
ARG PLUGIN_VERSION=bazel-stable-2.15
ARG GERRIT_INIT_ARGS=""
ARG GERRIT_OAUTH_VERSION=2.14.6

# Environment to use both at build time and at run time
ENV \
GERRIT_HOME=$GERRIT_HOME \
GERRIT_SITE=$GERRIT_HOME/review_site \
GERRIT_WAR=$GERRIT_HOME/gerrit.war \
GERRIT_VERSION=$GERRIT_VERSION \
GERRIT_USER=gerrit2 \
GERRIT_INIT_ARGS=$GERRIT_INIT_ARGS \
GERRITFORGE_URL=https://gerrit-ci.gerritforge.com \
GERRITFORGE_ARTIFACT_DIR=lastSuccessfulBuild/artifact/buck-out/gen/plugins

# Add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN adduser -D -h "${GERRIT_HOME}" -g "Gerrit User" -s /sbin/nologin "${GERRIT_USER}"
VOLUME $GERRIT_SITE

RUN set -x \
&& apk add --update --no-cache git openssh openssl bash perl perl-cgi git-gitweb curl su-exec procmail
ENTRYPOINT ["/gerrit-entrypoint.sh"]

RUN mkdir /docker-entrypoint-init.d
EXPOSE 8080 29418

CMD ["/gerrit-start.sh"]

#Download gerrit.war
RUN curl -fSsL https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_VERSION}.war -o $GERRIT_WAR
#Only for local test
#COPY gerrit-${GERRIT_VERSION}.war $GERRIT_WAR
ADD https://gerrit-releases.storage.googleapis.com/gerrit-$GERRIT_VERSION.war \
$GERRIT_WAR

#Download Plugins
ENV PLUGIN_VERSION=bazel-stable-2.15
ENV GERRITFORGE_URL=https://gerrit-ci.gerritforge.com
ENV GERRITFORGE_ARTIFACT_DIR=lastSuccessfulBuild/artifact/bazel-genfiles/plugins

#delete-project
RUN curl -fSsL \
${GERRITFORGE_URL}/job/plugin-delete-project-${PLUGIN_VERSION}/${GERRITFORGE_ARTIFACT_DIR}/delete-project/delete-project.jar \
-o ${GERRIT_HOME}/delete-project.jar
ADD $GERRITFORGE_URL/job/plugin-delete-project-$PLUGIN_VERSION/$GERRITFORGE_ARTIFACT_DIR/delete-project/delete-project.jar \
$GERRIT_SITE/plugins/

#events-log
#This plugin is required by gerrit-trigger plugin of Jenkins.
RUN curl -fSsL \
${GERRITFORGE_URL}/job/plugin-events-log-${PLUGIN_VERSION}/${GERRITFORGE_ARTIFACT_DIR}/events-log/events-log.jar \
-o ${GERRIT_HOME}/events-log.jar
ADD $GERRITFORGE_URL/job/plugin-events-log-$PLUGIN_VERSION/$GERRITFORGE_ARTIFACT_DIR/events-log/events-log.jar \
$GERRIT_SITE/plugins/

#gitiles
RUN curl -fSsL \
${GERRITFORGE_URL}/job/plugin-gitiles-${PLUGIN_VERSION}/${GERRITFORGE_ARTIFACT_DIR}/gitiles/gitiles.jar \
-o ${GERRIT_HOME}/gitiles.jar
#importer
ADD $GERRITFORGE_URL/job/plugin-importer-$PLUGIN_VERSION/$GERRITFORGE_ARTIFACT_DIR/importer/importer.jar \
$GERRIT_SITE/plugins/

#oauth2 plugin
ENV GERRIT_OAUTH_VERSION 2.14.6
ADD https://github.com/davido/gerrit-oauth-provider/releases/download/v$GERRIT_OAUTH_VERSION/gerrit-oauth-provider.jar \
$GERRIT_HOME/gerrit-oauth-provider.jar

RUN curl -fSsL \
https://github.com/davido/gerrit-oauth-provider/releases/download/v${GERRIT_OAUTH_VERSION}/gerrit-oauth-provider.jar \
-o ${GERRIT_HOME}/gerrit-oauth-provider.jar

#importer
RUN curl -fSsL \
${GERRITFORGE_URL}/job/plugin-importer-${PLUGIN_VERSION}/${GERRITFORGE_ARTIFACT_DIR}/importer/importer.jar \
-o ${GERRIT_HOME}/importer.jar
#gitiles
ADD $GERRITFORGE_URL/job/plugin-gitiles-$PLUGIN_VERSION/$GERRITFORGE_ARTIFACT_DIR/gitiles/gitiles.jar \
$GERRIT_HOME/gitiles.jar

# Ensure the entrypoint scripts are in a fixed location
COPY gerrit-entrypoint.sh /
COPY gerrit-start.sh /
RUN chmod +x /gerrit*.sh

#A directory has to be created before a volume is mounted to it.
#So gerrit user can own this directory.
RUN su-exec ${GERRIT_USER} mkdir -p $GERRIT_SITE

#Gerrit site directory is a volume, so configuration and repositories
#can be persisted and survive image upgrades.
VOLUME $GERRIT_SITE
COPY gerrit-entrypoint.sh gerrit-start.sh /

ENTRYPOINT ["/gerrit-entrypoint.sh"]

EXPOSE 8080 29418
SHELL [ "/bin/sh", "-euxc" ]

CMD ["/gerrit-start.sh"]
RUN \
apk add --update --no-cache git openssh openssl bash perl perl-cgi git-gitweb curl su-exec mysql-client ; \
adduser -D -h "$GERRIT_HOME" -g "Gerrit User" -s /sbin/nologin "$GERRIT_USER" ; \
mkdir /docker-entrypoint-init.d ; \
chmod +x /gerrit*.sh ; \
chown -R "$GERRIT_USER" "$GERRIT_SITE" "$GERRIT_HOME"
5 changes: 0 additions & 5 deletions gerrit-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@ if [ "$1" = "/gerrit-start.sh" ]; then
[ ${#DATABASE_TYPE} -gt 0 ] && rm -rf "${GERRIT_SITE}/git"
fi

# Install external plugins
su-exec ${GERRIT_USER} cp -f ${GERRIT_HOME}/delete-project.jar ${GERRIT_SITE}/plugins/delete-project.jar
su-exec ${GERRIT_USER} cp -f ${GERRIT_HOME}/events-log.jar ${GERRIT_SITE}/plugins/events-log.jar
su-exec ${GERRIT_USER} cp -f ${GERRIT_HOME}/importer.jar ${GERRIT_SITE}/plugins/importer.jar

# Provide a way to customise this image
echo
for f in /docker-entrypoint-init.d/*; do
Expand Down