Handle Gitea version upgrade in pretemplate script

Check for version update with script expected version versus installed
version
This commit is contained in:
wpetit 2019-06-17 17:01:44 +02:00
parent 9e541f5c9d
commit 054bdf790a
1 changed files with 98 additions and 59 deletions

View File

@ -21,76 +21,115 @@ APPNAME="gitea"
APPBINARY="gitea" APPBINARY="gitea"
APPSIG="7C9E68152594688862D62AF62D9AE806EC1592E2" APPSIG="7C9E68152594688862D62AF62D9AE806EC1592E2"
APPASC="${APPNAME}-${APPVERSION}-${OS}-${ARCH}.asc" APPASC="${APPNAME}-${APPVERSION}-${OS}-${ARCH}.asc"
KEYSERV="pgp.mit.edu" KEYSERV="hkp://p80.pool.sks-keyservers.net:80"
DLSERV="dl.gitea.io" DLSERV="dl.gitea.io"
APPDIR="${WKDIR}/gitea" APPDIR="${WKDIR}/gitea"
APPBINDIR="${APPDIR}/bin" APPBINDIR="${APPDIR}/bin"
APPCONFDIR="/etc/${APPNAME}" APPCONFDIR="/etc/${APPNAME}"
if [[ -d ${APPCONFDIR} ]] function configure_proxy {
then proxy=$(CreoleGet activer_proxy_client non)
exit 0 if [[ ${proxy} == "oui" ]]
fi then
proxy=$(CreoleGet activer_proxy_client non)
if [[ ${proxy} == "oui" ]]
then
prAddr=$(CreoleGet proxy_client_adresse) prAddr=$(CreoleGet proxy_client_adresse)
prPort=$(CreoleGet proxy_client_port) prPort=$(CreoleGet proxy_client_port)
export HTTP_PROXY=http://${prAddr}:${prPort} export HTTP_PROXY=http://${prAddr}:${prPort}
export http_proxy=http://${prAddr}:${prPort} export http_proxy=http://${prAddr}:${prPort}
export HTTPS_PROXY=http://${prAddr}:${prPort} export HTTPS_PROXY=http://${prAddr}:${prPort}
export https_proxy=http://${prAddr}:${prPort} export https_proxy=http://${prAddr}:${prPort}
fi fi
}
if [[ ! -d ${APPDIR} ]] function create_app_dir {
then
mkdir -p ${APPDIR}
chown ${USER}:${GROUP} ${APPDIR} -R
fi
# Create app user and group mkdir -p "${APPDIR}"
groupadd ${GROUP} chown ${USER}:${GROUP} "${APPDIR}" -R
adduser \
# 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}"
mkdir -p "${APPBINDIR}"
chown ${USER}:${GROUP} "${APPBINDIR}"
}
function create_user_and_group {
local existing_group=$(getent group ${GROUP})
if [ -z "${existing_group}" ]; then
groupadd ${GROUP}
fi
local existing_user=$(getent passwd ${USER})
if [ -z "${existing_user}" ]; then
adduser \
--shell ${USERSHELL} \ --shell ${USERSHELL} \
--gecos "${GECOS}" \ --gecos "${GECOS}" \
--ingroup ${GROUP} \ --ingroup ${GROUP} \
--disabled-password \ --disabled-password \
--home ${HOMEDIR} \ --home ${HOMEDIR} \
${USER} ${USER}
fi
}
# Create app structure function download_binary {
mkdir -p ${APPDIR}/{custom,data,indexers,public,log} local temp_bin=$(mktemp)
chown ${USER}:${GROUP} ${APPDIR}/{data,indexers,log}
chmod 750 ${APPDIR}/{data,indexers,log}
mkdir ${APPCONFDIR}
chown root:${GROUP} ${APPCONFDIR}
chmod 770 ${APPCONFDIR}
if [[ ! -d ${APPBINDIR} ]] wget -O "${temp_bin}" https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPNAME}-${APPVERSION}-${OS}-${ARCH}
then if [[ $? -ne 0 ]]
mkdir -p ${APPBINDIR}
chown ${USER}:${GROUP} ${APPBINDIR}
fi
cd $APPBINDIR
if [[ ! -f ${APPBINARY} ]]
then
wget -O ${APPBINARY} https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPNAME}-${APPVERSION}-${OS}-${ARCH}
if [[ $? -eq 0 ]]
then then
chmod +x ${APPBINARY}
else
echo "Error downloading binary for ${APPNAME}" echo "Error downloading binary for ${APPNAME}"
return 123 return 123
fi fi
fi
if [[ ! -f ${APPASC} ]] wget -O "${temp_bin}.asc" https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPASC}
then
wget -O ${APPASC} https://${DLSERV}/${APPNAME}/${APPVERSION}/${APPASC}
gpg --keyserver ${KEYSERV} --recv ${APPSIG} gpg --keyserver ${KEYSERV} --recv ${APPSIG}
gpg --verify ${APPNAME}-${APPVERSION}-${OS}-${ARCH}.asc ${APPBINARY} gpg --verify "${temp_bin}.asc" "${temp_bin}"
fi
cd - 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