From 11a467a98e6c1289a1dba361881e6a6d07d25ef8 Mon Sep 17 00:00:00 2001 From: William Petit Date: Mon, 17 Jun 2019 17:01:44 +0200 Subject: [PATCH] Handle Gitea version upgrade in pretemplate script Check for version update with script expected version versus installed version --- pretemplate/01-gitea-init | 162 ++++++++++++++++++++++++-------------- 1 file changed, 103 insertions(+), 59 deletions(-) diff --git a/pretemplate/01-gitea-init b/pretemplate/01-gitea-init index 730b07a..56e4219 100755 --- a/pretemplate/01-gitea-init +++ b/pretemplate/01-gitea-init @@ -21,76 +21,120 @@ APPNAME="gitea" APPBINARY="gitea" APPSIG="7C9E68152594688862D62AF62D9AE806EC1592E2" APPASC="${APPNAME}-${APPVERSION}-${OS}-${ARCH}.asc" -KEYSERV="pgp.mit.edu" +KEYSERV="hkp://p80.pool.sks-keyservers.net:80" DLSERV="dl.gitea.io" APPDIR="${WKDIR}/gitea" APPBINDIR="${APPDIR}/bin" APPCONFDIR="/etc/${APPNAME}" -if [[ -d ${APPCONFDIR} ]] -then - exit 0 -fi +function configure_proxy { + proxy=$(CreoleGet activer_proxy_client non) + if [[ ${proxy} == "oui" ]] + then + prAddr=$(CreoleGet proxy_client_adresse) + prPort=$(CreoleGet proxy_client_port) + export HTTP_PROXY=http://${prAddr}:${prPort} + export http_proxy=http://${prAddr}:${prPort} + export HTTPS_PROXY=http://${prAddr}:${prPort} + export https_proxy=http://${prAddr}:${prPort} + fi +} -proxy=$(CreoleGet activer_proxy_client non) +function create_app_dir { + + if [[ ! -d ${APPDIR} ]] + then + mkdir -p ${APPDIR} + chown ${USER}:${GROUP} ${APPDIR} -R + fi -if [[ ${proxy} == "oui" ]] -then - prAddr=$(CreoleGet proxy_client_adresse) - prPort=$(CreoleGet proxy_client_port) - export HTTP_PROXY=http://${prAddr}:${prPort} - export http_proxy=http://${prAddr}:${prPort} - export HTTPS_PROXY=http://${prAddr}:${prPort} - export https_proxy=http://${prAddr}:${prPort} -fi + # Create app structure + mkdir -p ${APPDIR}/{custom,data,indexers,public,log} + chown ${USER}:${GROUP} ${APPDIR}/{data,indexers,log} + chmod 750 ${APPDIR}/{data,indexers,log} + mkdir -p ${APPCONFDIR} + chown root:${GROUP} ${APPCONFDIR} + chmod 770 ${APPCONFDIR} -if [[ ! -d ${APPDIR} ]] -then - mkdir -p ${APPDIR} - chown ${USER}:${GROUP} ${APPDIR} -R -fi + if [[ ! -d ${APPBINDIR} ]] + then + mkdir -p ${APPBINDIR} + chown ${USER}:${GROUP} ${APPBINDIR} + fi +} -# Create app user and group -groupadd ${GROUP} -adduser \ - --shell ${USERSHELL} \ - --gecos "${GECOS}" \ - --ingroup ${GROUP} \ - --disabled-password \ - --home ${HOMEDIR} \ - ${USER} +function create_user_and_group { + local existing_group=$(getent group ${GROUP}) + if [ -z "${existing_group}" ]; then + groupadd ${GROUP} + fi -# Create app structure -mkdir -p ${APPDIR}/{custom,data,indexers,public,log} -chown ${USER}:${GROUP} ${APPDIR}/{data,indexers,log} -chmod 750 ${APPDIR}/{data,indexers,log} -mkdir ${APPCONFDIR} -chown root:${GROUP} ${APPCONFDIR} -chmod 770 ${APPCONFDIR} + local existing_user=$(getent passwd ${USER}) + if [ -z "${existing_user}" ]; then + adduser \ + --shell ${USERSHELL} \ + --gecos "${GECOS}" \ + --ingroup ${GROUP} \ + --disabled-password \ + --home ${HOMEDIR} \ + ${USER} + fi +} -if [[ ! -d ${APPBINDIR} ]] -then - mkdir -p ${APPBINDIR} - chown ${USER}:${GROUP} ${APPBINDIR} -fi +function download_binary { + local temp_bin=$(mktemp) -cd $APPBINDIR -if [[ ! -f ${APPBINARY} ]] -then - wget -O ${APPBINARY} https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPNAME}-${APPVERSION}-${OS}-${ARCH} - if [[ $? -eq 0 ]] - then - chmod +x ${APPBINARY} - else - echo "Error downloading binary for ${APPNAME}" - return 123 - fi -fi + wget -O "${temp_bin}" https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPNAME}-${APPVERSION}-${OS}-${ARCH} + if [[ $? -ne 0 ]] + then + echo "Error downloading binary for ${APPNAME}" + return 123 + fi -if [[ ! -f ${APPASC} ]] -then - wget -O ${APPASC} https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPASC} + wget -O "${temp_bin}.asc" https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPASC} gpg --keyserver ${KEYSERV} --recv ${APPSIG} - gpg --verify ${APPNAME}-${APPVERSION}-${OS}-${ARCH}.asc ${APPBINARY} -fi -cd - + gpg --verify "${temp_bin}.asc" "${temp_bin}" + + if [[ $? -ne 0 ]] + then + echo "Error downloading binary for ${APPNAME}" + return 123 + fi + + cd $APPBINDIR + chmod +x "${temp_bin}" + mv -f "${temp_bin}" ${APPBINARY} + cd - +} + +function current_gitea_version { + if [[ ! -f "${APPBINDIR}/${APPBINARY}" ]] + then + return + fi + "${APPBINDIR}/${APPBINARY}" --version | cut -d' ' -f 3 +} + +function main { + + # Check that installed version if ok + local current_version=$(current_gitea_version) + if [ "$current_version" == "$APPVERSION" ]; then + exit 0 + fi + + if [ -z "$current_version" ] + then + echo "Installing Gitea ${APPVERSION}..." + else + echo "Upgrade Gitea from ${current_version} to ${APPVERSION}..." + fi + + configure_proxy + create_user_and_group + create_app_dir + download_binary + +} + +main \ No newline at end of file