Blame schutzbot/deploy.sh

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