mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
* Allow to use single web instance for any repository * some improvements * drop includes from user home directory, introduce new variables to docker The old solution didn't actually work as expected, because devtools configuration belongs to filesystem (as well as sudo one), so it was still required to run setup command. In order to handle additional repositories, the POSTSETUP and PRESETUP commands variables have been introduced. FAQ has been updated as well * raise 404 in case if repository is unknown
60 lines
2.4 KiB
Bash
Executable File
60 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Install the package and run main install commands
|
|
|
|
set -ex
|
|
|
|
[[ $1 = "minimal" ]] && MINIMAL_INSTALL=1
|
|
|
|
# install dependencies
|
|
echo -e '[arcanisrepo]\nServer = http://repo.arcanis.me/$arch\nSigLevel = Never' | tee -a /etc/pacman.conf
|
|
# refresh the image
|
|
pacman --noconfirm -Syu
|
|
# main dependencies
|
|
pacman --noconfirm -Sy base-devel devtools git pyalpm python-cerberus python-inflection python-passlib python-requests python-srcinfo python-systemd sudo
|
|
# make dependencies
|
|
pacman --noconfirm -Sy python-build python-flit python-installer python-wheel
|
|
# optional dependencies
|
|
if [[ -z $MINIMAL_INSTALL ]]; then
|
|
# VCS support
|
|
pacman --noconfirm -Sy breezy darcs mercurial subversion
|
|
# web server
|
|
pacman --noconfirm -Sy python-aioauth-client python-aiohttp python-aiohttp-apispec-git python-aiohttp-cors python-aiohttp-debugtoolbar python-aiohttp-jinja2 python-aiohttp-security python-aiohttp-session python-cryptography python-jinja
|
|
# additional features
|
|
pacman --noconfirm -Sy gnupg python-boto3 rsync
|
|
fi
|
|
# FIXME since 1.0.4 devtools requires dbus to be run, which doesn't work now in container
|
|
cp "docker/systemd-nspawn.sh" "/usr/local/bin/systemd-nspawn"
|
|
|
|
# create fresh tarball
|
|
make VERSION=1.0.0 archlinux # well, it does not really matter which version we will put here
|
|
# run makepkg
|
|
mv ahriman-*-src.tar.xz package/archlinux
|
|
chmod +777 package/archlinux # because fuck you that's why
|
|
cd package/archlinux
|
|
sudo -u nobody -- makepkg -cf --skipchecksums --noconfirm
|
|
pacman --noconfirm -U ahriman-1.0.0-1-any.pkg.tar.zst
|
|
# create machine-id which is required by build tools
|
|
systemd-machine-id-setup
|
|
|
|
# initial setup command as root
|
|
[[ -z $MINIMAL_INSTALL ]] && WEB_ARGS=("--web-port" "8080")
|
|
ahriman -a x86_64 -r "github" service-setup --packager "ahriman bot <ahriman@example.com>" "${WEB_ARGS[@]}"
|
|
# validate configuration
|
|
ahriman service-config-validate --exit-code
|
|
# enable services
|
|
systemctl enable ahriman-web
|
|
systemctl enable ahriman@x86_64-github.timer
|
|
if [[ -z $MINIMAL_INSTALL ]]; then
|
|
# run web service (detached)
|
|
sudo -u ahriman -- ahriman web &
|
|
WEB_PID=$!
|
|
fi
|
|
# add the first package
|
|
sudo -u ahriman -- ahriman package-add --now ahriman
|
|
# check if package was actually installed
|
|
test -n "$(find "/var/lib/ahriman/repository/github/x86_64" -name "ahriman*pkg*")"
|
|
# run package check
|
|
sudo -u ahriman -- ahriman repo-update
|
|
# stop web service lol
|
|
[[ -z $WEB_PID ]] || kill $WEB_PID
|