archboot/usr/bin/archboot-aarch64-server-release.sh

104 lines
4.4 KiB
Bash
Raw Normal View History

2022-01-07 23:05:06 +01:00
#! /bin/bash
2022-01-13 15:32:45 +01:00
_DIRECTORY="$(date +%Y.%m)"
_ARCH="aarch64"
_ISODIR="/home/tobias/Arch/iso/${_ARCH}"
_BUILDDIR="$(mktemp -d ${_ISODIR}/server-release.XXX)"
2022-01-13 15:32:45 +01:00
_SERVER="pkgbuild.com"
_SERVER_HOME="/home/tpowa/"
_SERVER_DIR="/home/tpowa/public_html/archboot-images"
_USER="tobias"
_GROUP="users"
_GPG="--detach-sign --no-armor --batch --passphrase-file /etc/archboot/gpg.passphrase --pinentry-mode loopback -u 7EDF681F"
2022-01-13 15:32:45 +01:00
_PACMAN_AARCH__BUILDDIR="/home/tobias/Arch/iso"
_PACMAN_AARCH_SERVERDIR="/home/tpowa/public_html/archboot-helper/pacman-chroot-aarch64"
_PACMAN_AARCH64="pacman-aarch64-chroot"
_PACMAN_AARCH64_CHROOT_SERVER="https://pkgbuild.com/~tpowa/archboot-helper/pacman-chroot-aarch64"
_PACMAN_AARCH64_CHROOT="pacman-aarch64-chroot-latest.tar.zst"
2022-01-07 23:05:06 +01:00
### check for root
if ! [[ ${UID} -eq 0 ]]; then
2022-01-21 07:16:45 +01:00
echo "ERROR: Please run as root user!"
exit 1
2022-01-07 23:05:06 +01:00
fi
### check for tpowa's build server
if [[ ! "$(cat /etc/hostname)" == "T-POWA-LX" ]]; then
echo "This script should only be run on tpowa's build server. Aborting..."
exit 1
fi
2022-01-13 15:32:45 +01:00
# update aarch64 pacman chroot
2022-01-21 11:10:41 +01:00
cd "${_PACMAN_AARCH__BUILDDIR}" || exit 1
2022-01-13 15:32:45 +01:00
mkdir "${_PACMAN_AARCH64}"
echo "Downloading archlinuxarm pacman aarch64 chroot..."
[[ -f pacman-aarch64-chroot-latest.tar.zst ]] && rm pacman-aarch64-chroot-latest.tar.zst{,.sig}
wget ${_PACMAN_AARCH64_CHROOT_SERVER}/${_PACMAN_AARCH64_CHROOT}{,.sig} >/dev/null 2>&1
# verify dowload
sudo -u "${_USER}" gpg --verify "${_PACMAN_AARCH64_CHROOT}.sig" >/dev/null 2>&1 || exit 1
bsdtar -C "${_PACMAN_AARCH64}" -xf "${_PACMAN_AARCH64_CHROOT}" >/dev/null 2>&1
echo "Removing installation tarball ..."
rm ${_PACMAN_AARCH64_CHROOT}{,.sig} >/dev/null 2>&1
# update container to latest packages
echo "Update container to latest packages..."
systemd-nspawn -D "${_PACMAN_AARCH64}" pacman -Syu --noconfirm >/dev/null 2>&1 || exit 1
2022-01-13 15:32:45 +01:00
# remove package cache
2022-01-17 08:26:13 +01:00
echo "Remove package cache from container ..."
rm ${_PACMAN_AARCH64}/var/cache/pacman/pkg/*
2022-01-13 15:32:45 +01:00
# enable parallel downloads
sed -i -e 's:^#ParallelDownloads:ParallelDownloads:g' "${_PACMAN_AARCH64}"/etc/pacman.conf
# fix network in container
rm "${_PACMAN_AARCH64}/etc/resolv.conf"
echo "nameserver 8.8.8.8" > "${_PACMAN_AARCH64}/etc/resolv.conf"
echo "Clean container, delete not needed files from ${_PACMAN_AARCH64} ..."
rm -r "${_PACMAN_AARCH64}"/usr/include >/dev/null 2>&1
rm -r "${_PACMAN_AARCH64}"/usr/share/{man,doc,info,locale} >/dev/null 2>&1
echo "Generating tarball ..."
tar -acf "${_PACMAN_AARCH64_CHROOT}" -C "${_PACMAN_AARCH64}" .
echo "Removing ${_PACMAN_AARCH64} ..."
rm -r "${_PACMAN_AARCH64}"
echo "Finished container tarball."
2022-01-26 11:35:55 +01:00
#shellcheck disable=SC2086
2022-01-13 15:32:45 +01:00
sudo -u "${_USER}" gpg ${_GPG} "${_PACMAN_AARCH64_CHROOT}"
chown "${_USER}:${_GROUP}" ${_PACMAN_AARCH64_CHROOT}{,.sig}
sudo -u "${_USER}" scp ${_PACMAN_AARCH64_CHROOT}{,.sig} ${_SERVER}:${_PACMAN_AARCH_SERVERDIR} || exit 1
# create release in "${_ISODIR}"
cd "${_ISODIR}" || exit 1
2022-02-02 14:24:50 +01:00
"archboot-${_ARCH}-release.sh" "${_BUILDDIR}" || rm -r "${_BUILDDIR}"
# set user rights on files
2022-01-07 23:05:06 +01:00
# set user rights on files
2022-02-02 14:35:07 +01:00
[[ -d "${_BUILDDIR}" ]] || exit 1
2022-02-04 22:02:56 +01:00
chown -R "${_USER}:${_GROUP}" "${_BUILDDIR}"
2022-01-29 08:26:04 +01:00
chmod 755 "${_BUILDDIR}"
2022-02-02 14:52:09 +01:00
cd "${_BUILDDIR}" || exit 1
# remove sha256sum and install image
2022-01-07 23:05:06 +01:00
rm sha256sum.txt
# sign files and create new sha256sum.txt
for i in *; do
2022-01-26 11:35:55 +01:00
#shellcheck disable=SC2086
2022-01-13 15:32:45 +01:00
[[ -f "${i}" ]] && sudo -u "${_USER}" gpg ${_GPG} "${i}"
2022-01-07 23:05:06 +01:00
[[ -f "${i}" ]] && cksum -a sha256 "${i}" >> sha256sum.txt
[[ -f "${i}.sig" ]] && cksum -a sha256 "${i}.sig" >> sha256sum.txt
done
for i in boot/*; do
2022-01-26 11:35:55 +01:00
#shellcheck disable=SC2086
2022-01-13 15:32:45 +01:00
[[ -f "${i}" ]] && sudo -u "${_USER}" gpg ${_GPG} "${i}"
2022-01-07 23:05:06 +01:00
[[ -f "${i}" ]] && cksum -a sha256 "${i}" >> sha256sum.txt
[[ -f "${i}.sig" ]] && cksum -a sha256 "${i}.sig" >> sha256sum.txt
done
2022-02-04 06:53:10 +01:00
chown -R "${_USER}:${_GROUP}" "./*"
2022-01-07 23:05:06 +01:00
cd ..
[[ -d "archive" ]] || mkdir archive
[[ -d "archive/${_DIRECTORY}" ]] && rm -r "archive/${_DIRECTORY}"
[[ -d "${_DIRECTORY}" ]] && mv "${_DIRECTORY}" archive/
mv "${_BUILDDIR}" "${_DIRECTORY}"
2022-01-07 23:05:06 +01:00
# copy files to server
sudo -u "${_USER}" scp -r "${_DIRECTORY}" "${_SERVER}":"${_SERVER_HOME}" || exit 1
2022-01-07 23:05:06 +01:00
# move files on server, create symlink and remove 3 month old release
2022-01-13 15:32:45 +01:00
sudo -u "${_USER}" ssh "${_SERVER}" <<EOF
rm -r "${_SERVER_DIR}"/"${_ARCH}"/"${_DIRECTORY}"
rm -r "${_SERVER_DIR}"/"${_ARCH}"/"$(date -d "$(date +) - 3 month" +%Y.%m)"
mv "${_DIRECTORY}" "${_SERVER_DIR}"/"${_ARCH}"
cd "${_SERVER_DIR}"/"${_ARCH}"
2022-01-07 23:05:06 +01:00
rm latest
2022-01-13 15:32:45 +01:00
ln -s "${_DIRECTORY}" latest
2022-01-07 23:05:06 +01:00
EOF