Files
InstallerRobot/agent/scripts/build-deb.sh
2026-05-25 15:49:42 +07:00

78 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
VERSION="${VERSION:-0.1.3}"
ARCH="${ARCH:-amd64}"
PKG_NAME="local-installer-agent"
BUILD_ROOT="${BUILD_ROOT:-build}"
BUILD_DIR="${BUILD_ROOT}/${PKG_NAME}_${VERSION}_${ARCH}"
OUTPUT_PACKAGE="${BUILD_DIR}.deb"
if [[ ! "$VERSION" =~ ^[a-zA-Z0-9][a-zA-Z0-9._:+~=-]*$ ]]; then
echo "Invalid VERSION: ${VERSION}" >&2
exit 1
fi
if [[ ! "$ARCH" =~ ^[a-z0-9][a-z0-9._-]*$ ]]; then
echo "Invalid ARCH: ${ARCH}" >&2
exit 1
fi
rm -rf "${BUILD_ROOT}"
mkdir -p "${BUILD_DIR}/opt/local-installer-agent"
mkdir -p "${BUILD_DIR}/etc/local-installer-agent"
mkdir -p "${BUILD_DIR}/etc/systemd/system"
mkdir -p "${BUILD_DIR}/DEBIAN"
cp -r app "${BUILD_DIR}/opt/local-installer-agent/"
cp requirements.txt "${BUILD_DIR}/opt/local-installer-agent/"
cp packaging/systemd/local-installer-agent.service \
"${BUILD_DIR}/etc/systemd/system/local-installer-agent.service"
cp packaging/DEBIAN/control "${BUILD_DIR}/DEBIAN/control"
cp packaging/DEBIAN/postinst "${BUILD_DIR}/DEBIAN/postinst"
cp packaging/DEBIAN/prerm "${BUILD_DIR}/DEBIAN/prerm"
cp packaging/DEBIAN/postrm "${BUILD_DIR}/DEBIAN/postrm"
sed -i \
-e "s/^Version:.*/Version: ${VERSION}/" \
-e "s/^Architecture:.*/Architecture: ${ARCH}/" \
"${BUILD_DIR}/DEBIAN/control"
chmod 755 "${BUILD_DIR}/DEBIAN/postinst"
chmod 755 "${BUILD_DIR}/DEBIAN/prerm"
chmod 755 "${BUILD_DIR}/DEBIAN/postrm"
chmod 755 "${BUILD_DIR}/DEBIAN"
cat > "${BUILD_DIR}/etc/local-installer-agent/agent.env" <<EOF
AGENT_VERSION=${VERSION}
AGENT_HOST=127.0.0.1
AGENT_PORT=5010
ROBOT_PACKAGE_BASE_URL=https://robot.package
ALLOWED_ORIGINS=https://robot.installer,http://localhost:3000,http://localhost:5173
ALLOWED_DOWNLOAD_HOSTS=robot.package
ALLOWED_DOCKER_REGISTRIES=registry.robot.package
CACHE_DIR=/var/cache/local-installer-agent/packages
APP_DIR=/opt/robot-apps
LOG_DIR=/var/log/local-installer-agent
DB_PATH=/var/lib/local-installer-agent/agent.db
ALLOW_REMOVE=true
ALLOW_PURGE=false
ALLOW_DOCKER=false
ALLOW_DOCKER_COMPOSE=false
EOF
dpkg-deb --root-owner-group --build "${BUILD_DIR}"
echo "Built package:"
echo "${OUTPUT_PACKAGE}"
if [ -n "${PUBLISH_DIR:-}" ]; then
mkdir -p "${PUBLISH_DIR}"
cp "${OUTPUT_PACKAGE}" "${PUBLISH_DIR}/"
echo "Published package:"
echo "${PUBLISH_DIR}/$(basename "${OUTPUT_PACKAGE}")"
fi