CI-Scripts/deb/build-deb.sh

127 lines
2.6 KiB
Bash
Raw Normal View History

2021-06-02 23:01:37 +02:00
#!/bin/bash
2022-01-19 22:49:53 +01:00
# EXAMPLES
usage() {
echo "usage: " \
"NAME=app " \
"COPYCONFIG=../build/sample-config/*.conf " \
"VERSION=1.2-3 " \
"PLATFORM=amd64 " \
"COPYEXEC=../build/release/app " \
"sh build-deb.sh"
exit 1
}
echo "Build file for dpkg-deb: https://git.blubbfish.net/vs_utils/CI-Scripts/src/branch/master/deb/build-deb.sh"
if [ -z "${NAME}" ]; then
usage
fi
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
if [ -z "${HOME}" ]; then
echo "HOME variable was not set, chech yout system!"
exit 1
fi
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
if [ -z "${COPYCONFIG}" ]; then
usage
fi
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
if [ -z "${VERSION}" ]; then
usage
fi
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
if [ -z "${PLATFORM}" ]; then
usage
fi
if [ -z "${COPYEXEC}" ]; then
usage
fi
echo "1. Catch all paths together for ${NAME}."
HOMEDIR=${HOME}
ROOT="${HOMEDIR}/deb"
EXEC="${ROOT}/usr/local/bin/${NAME}"
CONFIG="${ROOT}/etc/${NAME}"
SHARE="${ROOT}/usr/share/${NAME}"
SYSTEMD="${ROOT}/lib/systemd/system"
DEBIAN="${ROOT}/DEBIAN"
LOGROTATE="${SHARE}/logrotate.d"
TARGETFILE="${NAME}_${VERSION}_${PLATFORM}.deb"
echo "2. Versionsumber and Arch: ${VERSION}, ${PLATFORM}."
2021-06-02 23:01:37 +02:00
echo "3. Create directorys."
2022-01-19 22:49:53 +01:00
mkdir -p ${EXEC}
mkdir -p ${CONFIG}
mkdir -p ${SHARE}/etc
mkdir -p ${SYSTEMD}
mkdir -p ${DEBIAN}
if [ -f "logrotate-${NAME}" ]; then
mkdir -p ${LOGROTATE}
2021-06-02 23:01:37 +02:00
fi
echo "4. Copy deb control files."
2022-01-19 22:49:53 +01:00
cp control ${DEBIAN}/control
cp postinst ${DEBIAN}
cp prerm ${DEBIAN}
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "5. Copy ${NAME}.service to ${SYSTEMD}."
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
cp "service-${NAME}" "${SYSTEMD}/${NAME}.service"
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "6. Copy programm files to ${EXEC}."
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
cp -r -t ${EXEC}/ ${COPYEXEC}
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "7. Copy example-conf to ${SHARE}/etc."
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
cp -t ${SHARE}/etc/ ${COPYCONFIG}
touch ${DEBIAN}/conffiles
find ${SHARE}/etc -type f -printf "/usr/share/${NAME}/etc/%P\n" > ${DEBIAN}/conffiles
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "8. Copy ${NAME}.conf to ${LOGROTATE}."
if [ -f "logrotate-${NAME}" ]; then
cp "logrotate-${NAME}" "${LOGROTATE}/${NAME}.conf"
echo "/usr/share/${NAME}/logrotate.d/${NAME}.conf" >> ${DEBIAN}/conffiles
2021-06-02 23:01:37 +02:00
else
echo "No logrotate found"
fi
echo "9. Creating md5sum"
2022-01-19 22:49:53 +01:00
touch ${DEBIAN}/md5sums
pushd ${ROOT} >> /dev/null
find . -path ./{DEBIAN} -prune -o -type f -exec md5sum {} \; | sed "s-./--" >> ${DEBIAN}/md5sums
2021-06-02 23:01:37 +02:00
popd >> /dev/null
echo "10. Setting permissions"
2022-01-19 22:49:53 +01:00
chmod -R 755 ${DEBIAN}
chmod 644 ${SYSTEMD}/"${NAME}.service"
chmod -R 755 ${EXEC}
chmod 644 ${SHARE}/etc/*
chmod 755 ${CONFIG}
if [ -f "logrotate-${NAME}" ]; then
chmod 644 ${LOGROTATE}/*
2021-06-02 23:01:37 +02:00
fi
echo "11. Build deb packet."
2022-01-19 22:49:53 +01:00
dpkg-deb --build ${ROOT}
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "12. Move ${TARGETFILE} to Builds."
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
mv ${HOMEDIR}/deb.deb "../Builds/${TARGETFILE}"
echo "::set-output name=debuilderfile::${TARGETFILE}"
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
echo "13. Cleanup ${HOMEDIR}/deb."
2021-06-02 23:01:37 +02:00
2022-01-19 22:49:53 +01:00
rm ${HOMEDIR}/deb -r
2021-06-02 23:01:37 +02:00
echo "All steps completed."