From 2adcba05392a63f9a586ad7916deffb8f2086aae Mon Sep 17 00:00:00 2001 From: Till Wegmueller <toasterson@gmail.com> Date: Mon, 29 Nov 2021 23:20:11 +0100 Subject: [PATCH] Adding PR cleanup to CI and reformated with shfmt --- tools/jenkinshelper.ksh | 147 ++++++++++++++++++++++++++++--------------------- 1 files changed, 84 insertions(+), 63 deletions(-) diff --git a/tools/jenkinshelper.ksh b/tools/jenkinshelper.ksh index a09d0df..36f41e2 100755 --- a/tools/jenkinshelper.ksh +++ b/tools/jenkinshelper.ksh @@ -8,18 +8,18 @@ # just run prepare once to initially set up the environment # this must be run as root prepare() { - echo "jenkinshelper: preparing..." - pkg install web/server/apache-24 - mkdir -p /etc/apache2/2.4/conf.d && chown root:sys /etc/apache2/2.4/conf.d - grep "#ProxyPassMatch /default/(.*)\$ http://127.0.0.1:10000/\$1 nocanon max=200" "${HTTPCONF}" >/dev/null 2>&1 - if [ $? -gt 0 ]; then - echo "jenkinshelper: Initializing a new apache config at ${HTTPCONF}" - echo "#ProxyPassMatch /default/(.*)\$ http://127.0.0.1:10000/\$1 nocanon max=200" >"${HTTPCONF}" - else - echo "jenkinshelper: Preserving an existing ${HTTPCONF}" - fi + echo "jenkinshelper: preparing..." + pkg install web/server/apache-24 + mkdir -p /etc/apache2/2.4/conf.d && chown root:sys /etc/apache2/2.4/conf.d + grep "#ProxyPassMatch /default/(.*)\$ http://127.0.0.1:10000/\$1 nocanon max=200" "${HTTPCONF}" >/dev/null 2>&1 + if [ $? -gt 0 ]; then + echo "jenkinshelper: Initializing a new apache config at ${HTTPCONF}" + echo "#ProxyPassMatch /default/(.*)\$ http://127.0.0.1:10000/\$1 nocanon max=200" >"${HTTPCONF}" + else + echo "jenkinshelper: Preserving an existing ${HTTPCONF}" + fi - cat >/etc/apache2/2.4/conf.d/00-proxy.conf <<EOF + cat >/etc/apache2/2.4/conf.d/00-proxy.conf <<EOF LoadModule proxy_module libexec/mod_proxy.so LoadModule proxy_connect_module libexec/mod_proxy_connect.so LoadModule proxy_ftp_module libexec/mod_proxy_ftp.so @@ -32,52 +32,51 @@ RequestHeader unset Origin AllowEncodedSlashes NoDecode EOF - - chown root:builders "${HTTPCONF}" - chmod 664 "${HTTPCONF}" - svcadm enable svc:/network/http:apache24 + + chown root:builders "${HTTPCONF}" + chmod 664 "${HTTPCONF}" + svcadm enable svc:/network/http:apache24 } # setup oi-userland stage_setup() { - if [ ! -f /etc/apache2/2.4/conf.d/00-proxy.conf ]; then - echo "jenkinshelper: aborting, please run \"jenkinshelper -p\" initially as root on this jenkins instance once" - exit 1 - fi - echo "jenkinshelper: running gmake setup" - gmake setup + if [ ! -f /etc/apache2/2.4/conf.d/00-proxy.conf ]; then + echo "jenkinshelper: aborting, please run \"jenkinshelper -p\" initially as root on this jenkins instance once" + exit 1 + fi + echo "jenkinshelper: running gmake setup" + gmake setup } # scan the git log for changed components # we try to be smart and assume that all updates will always touch # the components Makefile also (to update COMPONENT_REVISION, etc) -stage_build_changed() { - for f in $(git diff --name-only HEAD..origin/oi/hipster | grep Makefile); do - echo "jenkinshelper: building for ${f%/*}..." - curpwd=$(pwd) - cd "${f%/*}" && gmake publish - rc=$? - cd "${curpwd}" - echo "jenkinshelper: done with ${f%/*} return code ${rc}" - done +stage_build_changed() { + for f in $(git diff --name-only HEAD..origin/oi/hipster | grep Makefile); do + echo "jenkinshelper: building for ${f%/*}..." + curpwd=$(pwd) + cd "${f%/*}" && gmake publish + rc=$? + cd "${curpwd}" + echo "jenkinshelper: done with ${f%/*} return code ${rc}" + done } # prepare the pkg.depotd server instance, if an instance already # exists for this branch, we will use that - otherwise create a # fresh one -stage_prepare_pkgdepotd() -{ - # we need the platform for the path to the repo - platform=$(uname -p) +stage_prepare_pkgdepotd() { + # we need the platform for the path to the repo + platform=$(uname -p) - # check if we already have this branch set up as a pkg.depotd: - if ! "svcs pkg/server:${BRANCH_NAME}" >/dev/null 2>&1; then + # check if we already have this branch set up as a pkg.depotd: + if ! "svcs pkg/server:${BRANCH_NAME}" >/dev/null 2>&1; then - # get highest port from ${HTTPCONF} to figure out the next free one - nextport=$(( $(nawk -F '[/:]' '{ print $7 }' < "${HTTPCONF}" | sort -n | tail -1) + 1 )) - - # set-up a new pkg/server instance - svccfg -s pkg/server <<EOF + # get highest port from ${HTTPCONF} to figure out the next free one + nextport=$(($(nawk -F '[/:]' '{ print $7 }' <"${HTTPCONF}" | sort -n | tail -1) + 1)) + + # set-up a new pkg/server instance + svccfg -s pkg/server <<EOF add ${BRANCH_NAME} select ${BRANCH_NAME} addpg pkg application @@ -89,26 +88,49 @@ end EOF - # enable the new pkg/server instance - svcadm enable pkg/server:${BRANCH_NAME} - - # add the new proxy rule to our apache config - echo "ProxyPassMatch /${BRANCH_NAME}/(.*)\$ http://127.0.0.1:${nextport}/\$1 nocanon max=200" >> "${HTTPCONF}" + # enable the new pkg/server instance + svcadm enable pkg/server:${BRANCH_NAME} + + # add the new proxy rule to our apache config + echo "ProxyPassMatch /${BRANCH_NAME}/(.*)\$ http://127.0.0.1:${nextport}/\$1 nocanon max=200" >>"${HTTPCONF}" fi - # we need to refresh the repo: - pkgrepo refresh -s ${WORKSPACE}/${platform}/repo + # we need to refresh the repo: + pkgrepo refresh -s ${WORKSPACE}/${platform}/repo - # also restarting pkg.depotd does not hurt - svcadm restart pkg/server:${BRANCH_NAME} - - # graceful restart apache to reload config - svcadm refresh svc:/network/http:apache24 + # also restarting pkg.depotd does not hurt + svcadm restart pkg/server:${BRANCH_NAME} + + # graceful restart apache to reload config + svcadm refresh svc:/network/http:apache24 +} + +# cleanup the pkg.depotd server instance +stage_cleanup_pr() { + # we need the platform for the path to the repo + platform=$(uname -p) + + if ! "svcs pkg/server:${BRANCH_NAME}" >/dev/null 2>&1; then + # disable the instance + svcadm disable pkg/server:${BRANCH_NAME} + + # svcadm is a async operation thus sleep here + sleep 1 + + # remove instance from SMF + svccfg delete pkg/server:${BRANCH_NAME} + + # Remove apache port + sed "/^ProxyPassMatch /${BRANCH_NAME}/d" + + # graceful restart apache to reload config + svcadm refresh svc:/network/http:apache24 + fi } usage() { - cat <<EOF + cat <<EOF Usage: jenkinshelper.ksh [ -h | -p | -s <stage> ] -h show this help @@ -116,21 +138,20 @@ -s followed by the stage to run, currently: setup, build_changed, prepare_pkgdepotd EOF -exit 0 + exit 0 } ## MAIN ## # call this script with the stage as an argument to -s -while getopts s:hp argv -do - case ${argv} in - s) stage="stage_${OPTARG}";; - p) stage="prepare";; - h) usage;; - esac +while getopts s:hp argv; do + case ${argv} in + s) stage="stage_${OPTARG}" ;; + p) stage="prepare" ;; + h) usage ;; + esac done -shift `expr ${OPTIND} - 1` +shift $(expr ${OPTIND} - 1) # run requested stage rt=0 -- Gitblit v1.9.3