|
Packit Service |
4d2de5 |
#!/bin/bash
|
|
Packit Service |
4d2de5 |
set -euxo pipefail
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
function retry {
|
|
Packit Service |
4d2de5 |
local count=0
|
|
Packit Service |
4d2de5 |
local retries=5
|
|
Packit Service |
4d2de5 |
until "$@"; do
|
|
Packit Service |
4d2de5 |
exit=$?
|
|
Packit Service |
4d2de5 |
count=$(($count + 1))
|
|
Packit Service |
4d2de5 |
if [[ $count -lt $retries ]]; then
|
|
Packit Service |
4d2de5 |
echo "Retrying command..."
|
|
Packit Service |
4d2de5 |
sleep 1
|
|
Packit Service |
4d2de5 |
else
|
|
Packit Service |
4d2de5 |
echo "Command failed after ${retries} retries. Giving up."
|
|
Packit Service |
4d2de5 |
return $exit
|
|
Packit Service |
4d2de5 |
fi
|
|
Packit Service |
4d2de5 |
done
|
|
Packit Service |
4d2de5 |
return 0
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Get OS details.
|
|
Packit Service |
4d2de5 |
source /etc/os-release
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Register RHEL if we are provided with a registration script.
|
|
Packit Service |
4d2de5 |
if [[ -n "${RHN_REGISTRATION_SCRIPT:-}" ]] && ! sudo subscription-manager status; then
|
|
Packit Service |
4d2de5 |
sudo chmod +x $RHN_REGISTRATION_SCRIPT
|
|
Packit Service |
4d2de5 |
sudo $RHN_REGISTRATION_SCRIPT
|
|
Packit Service |
4d2de5 |
fi
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Restart systemd to work around some Fedora issues in cloud images.
|
|
Packit Service |
4d2de5 |
sudo systemctl restart systemd-journald
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Remove Fedora's modular repositories to speed up dnf.
|
|
Packit Service |
4d2de5 |
sudo rm -f /etc/yum.repos.d/fedora*modular*
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Enable fastestmirror and disable weak dependency installation to speed up
|
|
Packit Service |
4d2de5 |
# dnf operations.
|
|
Packit Service |
4d2de5 |
echo -e "fastestmirror=1\ninstall_weak_deps=0" | sudo tee -a /etc/dnf/dnf.conf
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Ensure we are using the latest dnf since early revisions of Fedora 31 had
|
|
Packit Service |
4d2de5 |
# some dnf repo priority bugs like BZ 1733582.
|
|
Packit Service |
4d2de5 |
# NOTE(mhayden): We can exclude kernel updates here to save time with dracut
|
|
Packit Service |
4d2de5 |
# and module updates. The system will not be rebooted in CI anyway, so a
|
|
Packit Service |
4d2de5 |
# kernel update is not needed.
|
|
Packit Service |
4d2de5 |
if [[ $ID == fedora ]]; then
|
|
Packit Service |
4d2de5 |
sudo dnf -y upgrade --exclude kernel --exclude kernel-core
|
|
Packit Service |
4d2de5 |
fi
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Add osbuild team ssh keys.
|
|
Packit Service |
4d2de5 |
cat schutzbot/team_ssh_keys.txt | tee -a ~/.ssh/authorized_keys > /dev/null
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Set up a dnf repository for the RPMs we built via mock.
|
|
Packit Service |
4d2de5 |
sudo cp osbuild-mock.repo /etc/yum.repos.d/osbuild-mock.repo
|
|
Packit Service |
4d2de5 |
sudo dnf repository-packages osbuild-mock list
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Install the Image Builder packages.
|
|
Packit Service |
4d2de5 |
# Note: installing only -tests to catch missing dependencies
|
|
Packit Service |
4d2de5 |
retry sudo dnf -y install osbuild-composer-tests
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Set up a directory to hold repository overrides.
|
|
Packit Service |
4d2de5 |
sudo mkdir -p /etc/osbuild-composer/repositories
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Start services.
|
|
Packit Service |
4d2de5 |
sudo systemctl enable --now osbuild-composer.socket
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
# Verify that the API is running.
|
|
Packit Service |
4d2de5 |
sudo composer-cli status show
|
|
Packit Service |
4d2de5 |
sudo composer-cli sources list
|