1 Home
alex edited this page 2021-09-02 21:02:38 +02:00
#!/bin/sh

set -e

GLUON_RELEASE="${GIT_LOCAL_BRANCH}-$(date '+%Y%m%d')-${BUILD_ID}"

echo "Building Gluon firmware"
echo "  branch              : ${GIT_LOCAL_BRANCH}"
echo "  version             : ${GLUON_RELEASE}"
echo "  autoupdate disabled : ${DISABLE_AUTOUPDATER}"
echo "  target              : ${BUILD_TARGET}"
echo "  debug build pipeline: ${GLUON_DEBUG_BUILD}"

MAKE_OPTS="GLUON_RELEASE=${GLUON_RELEASE}"

# enable/disable feature according to branch name
if [ "${DISABLE_AUTOUPDATER}" = "false" ] ; then
	MAKE_OPTS="${MAKE_OPTS} GLUON_AUTOUPDATER_BRANCH=${GIT_LOCAL_BRANCH} GLUON_AUTOUPDATER_ENABLED=1"
else
  # disable autoupdate if debug enabled for build process
  GLUON_AUTOUPDATER_ENABLED=0
  MAKE_OPTS="${MAKE_OPTS} GLUON_AUTOUPDATER_ENABLED=0"
fi

if [ "x${BUILD_TARGET}" = "xall" ] ; then
	# if all is selected, ask gluon build system which targets are available 
	BUILD_TARGET="$(make list-targets)"
fi

if [ "${GLUON_DEBUG_BUILD}" = "true" ] ; then
	MAKE_OPTS="${MAKE_OPTS} V=s"
    NUM_JOBS=1
fi

# update gluon feeds
false && make update

# build firmwares for all targets
for target in ${BUILD_TARGET} ; do
	make -j${NUM_JOBS} ${MAKE_OPTS} GLUON_TARGET=${target} || make -j1 V=s
done
    
if [ "${DISABLE_AUTOUPDATER}" = "false" ] ; then
    # generate manifest and sign it
    make manifest GLUON_RELEASE=${GLUON_RELEASE} GLUON_AUTOUPDATER_BRANCH=${GIT_LOCAL_BRANCH}
	sh contrib/sign.sh "${GLUON_AUTOUPDATER_SIGNING_KEY}" "output/images/sysupgrade/${GIT_LOCAL_BRANCH}.manifest"
fi

if [ "${PUSH_IMAGES}" = "true" ] ; then
	rsync -e "ssh -p 4028 -i ${GLUON_IMAGE_UPLOADER_SSH_KEY_FILE} -o StrictHostKeyChecking=accept-new" \
		--partial --recursive --times --delete-after \
		output/ \
		"${GLUON_IMAGE_UPLOADER_SSH_KEY_USER}@freifunk.dezentrale.cloud:/var/www/images/images/${GIT_LOCAL_BRANCH}/"
fi