deploy-templates/templates/gerrit-configmap-configure-all-projects-repo.yaml (46 lines of code) (raw):
apiVersion: v1
kind: ConfigMap
metadata:
name: script-configure-all-projects-repo
namespace: {{ .Release.Namespace }}
labels:
{{- include "gerrit-operator.metaLabels" . | nindent 4 }}
data:
configure_all_project_repo.sh: |-
#!/bin/bash
function checkFastForwardGerrit() {
local fileName="$1"
local expressionToFind="$2"
local modifier="$3"
local configBlock="$4"
configBlock=$(sed -e 's,/,\\/,g; s/*/\\*/g; s/"/\\"/g; s/-/\\-/g' <<< ${configBlock})
local isInFile=$(cat "${fileName}" | grep -c "${expressionToFind}")
if [[ ((${isInFile} -eq 0) && (${modifier} -ne 0)) || ((${isInFile} -gt 0) && (${modifier} -eq 0)) ]] ; then
case ${modifier} in
0)
sed -i '/^\['"$configBlock"'\]/,/^\[/{/'"${expressionToFind}"'/d}' ${fileName}
isConfigChanged=true
;;
1)
sed -i '/^\['"$configBlock"'\]/,/^\[/{s,mergeContent = true,'"$expressionToFind"',}' ${fileName}
isConfigChanged=true
;;
2)
sed -i '/^\['"$configBlock"'\]/a\ '"${expressionToFind}"'' ${fileName}
isConfigChanged=true
;;
esac
else
echo "Required configuration has been already applied"
fi
}
declare isConfigChanged=false
sleep 30
git clone https://$GERRIT_ADMIN_USERNAME:$GERRIT_ADMIN_PASSWORD@{{ template "admin-tools.hostname" . }}/{{ .Values.gerrit.basePath }}/All-Projects && cd All-Projects
git config --global user.email "admin@example.com" && git config --global user.name "Admin"
checkFastForwardGerrit "project.config" "pushMerge = group Administrators" 0 "access \"refs/for/refs/*\""
checkFastForwardGerrit "project.config" "mergeContent = false" 1 "submit"
checkFastForwardGerrit "project.config" "action = fast forward only" 2 "submit"
checkFastForwardGerrit "project.config" "addPatchSet = group Administrators" 2 "access \"refs/*\""
if ${isConfigChanged}; then
git add . && git commit -a -m "Updated Gerrit config" && git push origin HEAD:refs/meta/config
fi