Provide empty All-Projects and All-Users repositories for slave For the Gerrit slave to start, when using the gerrit-slave chart, the All-Users.git and All-Project.git repositories were expected to exist. The init cointainer would only proceed, if this was the case. Since it is not necessary that these repositories already contain data for the slave to start up, it would be easier to just create them before starting the slave, if they do not already exist. This change removes the parts of the init container entrypoint script that wait for the repositories to appear and creates bare All-Projects and All-Users repositories on startup, if they do not exit yet. Change-Id: I1bd489d587ae530f9b8283bde6c49ccfe7f5337c
diff --git a/container-images/gerrit-slave-init/tools/start b/container-images/gerrit-slave-init/tools/start index 7c21851..48f733d 100755 --- a/container-images/gerrit-slave-init/tools/start +++ b/container-images/gerrit-slave-init/tools/start
@@ -40,13 +40,6 @@ return 0 } -test_repositories(){ - local EXIT_CODE=0 - test -d "/var/gerrit/git/All-Projects.git" || EXIT_CODE=1 - test -d "/var/gerrit/git/All-Users.git" || EXIT_CODE=1 - return ${EXIT_CODE} -} - test_mysql_db(){ local EXIT_CODE=0 mysql -h ${DB_HOST} -P${DB_PORT} -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} >/dev/null 2>&1 </dev/null || EXIT_CODE=1 @@ -64,15 +57,6 @@ return ${EXIT_CODE} } -wait_for_repositories(){ - echo "Waiting for replicated repositories." - while [ true ]; do - test_repositories && break - sleep 10 - done - echo "The All-Projects.git and All-Users.git repository was found." -} - wait_for_db_schema(){ echo "Waiting for database to be ready." @@ -126,9 +110,6 @@ -d /var/gerrit fi -# wait for All-Projects to arrive via replication from master -wait_for_repositories - # wait for db schema to arrive via replication from master wait_for_db_schema
diff --git a/container-images/gerrit-slave/tools/start b/container-images/gerrit-slave/tools/start index 926ee0f..974e2ca 100755 --- a/container-images/gerrit-slave/tools/start +++ b/container-images/gerrit-slave/tools/start
@@ -1,5 +1,9 @@ #!/bin/bash +create_missing_repository(){ + test -d $1 || git init --bare $1 +} + gerrit_uid=$(id -u) gerrit_gid=$(cut -d: -f3 < <(getent group users)) @@ -10,6 +14,9 @@ JAVA_OPTIONS=$(git config --file /var/gerrit/etc/gerrit.config --get-all container.javaOptions) git config -f /var/gerrit/etc/gerrit.config container.slave true +create_missing_repository /var/gerrit/git/All-Projects.git +create_missing_repository /var/gerrit/git/All-Users.git + # workaround gerrit.sh does not start httpd java ${JAVA_OPTIONS} -jar /var/gerrit/bin/gerrit.war daemon \ -d /var/gerrit \
diff --git a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml index d7857ee..145996a 100644 --- a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml +++ b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
@@ -61,6 +61,25 @@ mountPath: "/var/keystore" subPath: keystore {{- end }} + - name: create-repositories + image: bitnami/git + securityContext: + runAsUser: 1000 + runAsGroup: 100 + command: + - /bin/bash + - -c + args: + - | + create_missing_repository(){ + test -d $1 || git init --bare $1 + } + + create_missing_repository /var/gerrit/git/All-Projects.git + create_missing_repository /var/gerrit/git/All-Users.git + volumeMounts: + - name: git-filesystem + mountPath: "/var/gerrit/git" containers: - name: gerrit-slave image: {{ template "registry" . }}{{ .Values.gerritSlave.images.gerritSlave }}:{{ .Values.images.version }}