66 lines
1.4 KiB
Bash
66 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Required by the build or runner operation
|
|
function install_essentials() {
|
|
apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
jq \
|
|
gnupg \
|
|
tar \
|
|
unzip \
|
|
zip \
|
|
apt-transport-https \
|
|
sudo \
|
|
dirmngr \
|
|
locales \
|
|
gosu \
|
|
gpg-agent \
|
|
dumb-init \
|
|
libc-bin
|
|
}
|
|
|
|
function install_tools_apt() {
|
|
apt_packages | xargs apt-get install -y --no-install-recommends
|
|
}
|
|
|
|
function remove_caches() {
|
|
rm -rf /var/lib/apt/lists/*
|
|
rm -rf /tmp/*
|
|
}
|
|
|
|
function setup_sudoers() {
|
|
sed -e 's/Defaults.*env_reset/Defaults env_keep = "HTTP_PROXY HTTPS_PROXY NO_PROXY FTP_PROXY http_proxy https_proxy no_proxy ftp_proxy"/' -i /etc/sudoers
|
|
echo '%sudo ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
|
}
|
|
|
|
echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
|
|
|
|
scripts_dir=$(dirname "$0")
|
|
# shellcheck source=/dev/null
|
|
source "$scripts_dir/sources.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$scripts_dir/tools.sh"
|
|
# shellcheck source=/dev/null
|
|
source "$scripts_dir/config.sh"
|
|
|
|
apt-get update
|
|
install_essentials
|
|
configure_sources
|
|
|
|
apt-get update
|
|
# The docker group needs to run before installers
|
|
groupadd -g "$(docker_group_id)" docker || :
|
|
install_tools_apt
|
|
install_tools
|
|
|
|
setup_sudoers
|
|
groupadd -g "$(group_id)" runner
|
|
useradd -mr -d /home/runner -u "$(user_id)" -g "$(group_id)" runner
|
|
usermod -aG sudo runner
|
|
usermod -aG docker runner
|
|
|
|
remove_sources
|
|
remove_caches
|