92 lines
3 KiB
Bash
Executable file
92 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euxo pipefail
|
|
|
|
function retry {
|
|
local count=0
|
|
local retries=5
|
|
until "$@"; do
|
|
exit=$?
|
|
count=$(($count + 1))
|
|
if [[ $count -lt $retries ]]; then
|
|
echo "Retrying command..."
|
|
sleep 1
|
|
else
|
|
echo "Command failed after ${retries} retries. Giving up."
|
|
return $exit
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
# Variables for where to find osbuild-composer RPMs to test against
|
|
DNF_REPO_BASEURL=http://osbuild-composer-repos.s3-website.us-east-2.amazonaws.com
|
|
OSBUILD_COMMIT=f5bfb22355befeddfc4f313b753f81fe919b8e98 # main as of Sun Nov 15 11:10:09 2020
|
|
OSBUILD_COMPOSER_COMMIT=2dff7d05298349ef59adf94a4de7a3dd289c06d3 # release 25
|
|
|
|
# Get OS details.
|
|
source /etc/os-release
|
|
ARCH=$(uname -m)
|
|
|
|
# Koji is only available in EPEL for RHEL.
|
|
if [[ $ID == rhel ]] && ! rpm -q epel-release; then
|
|
curl -Ls --retry 5 --output /tmp/epel.rpm \
|
|
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
|
sudo rpm -Uvh /tmp/epel.rpm
|
|
fi
|
|
|
|
# Register RHEL if we are provided with a registration script.
|
|
if [[ -n "${RHN_REGISTRATION_SCRIPT:-}" ]] && ! sudo subscription-manager status; then
|
|
sudo chmod +x $RHN_REGISTRATION_SCRIPT
|
|
sudo $RHN_REGISTRATION_SCRIPT
|
|
fi
|
|
|
|
# Restart systemd to work around some Fedora issues in cloud images.
|
|
sudo systemctl restart systemd-journald
|
|
|
|
# Remove Fedora's modular repositories to speed up dnf.
|
|
sudo rm -f /etc/yum.repos.d/fedora*modular*
|
|
|
|
# Enable fastestmirror and disable weak dependency installation to speed up
|
|
# dnf operations.
|
|
echo -e "fastestmirror=1\ninstall_weak_deps=0" | sudo tee -a /etc/dnf/dnf.conf
|
|
|
|
# Ensure we are using the latest dnf since early revisions of Fedora 31 had
|
|
# some dnf repo priority bugs like BZ 1733582.
|
|
# NOTE(mhayden): We can exclude kernel updates here to save time with dracut
|
|
# and module updates. The system will not be rebooted in CI anyway, so a
|
|
# kernel update is not needed.
|
|
if [[ $ID == fedora ]]; then
|
|
sudo dnf -y upgrade --exclude kernel --exclude kernel-core
|
|
fi
|
|
|
|
# Add osbuild team ssh keys.
|
|
cat schutzbot/team_ssh_keys.txt | tee -a ~/.ssh/authorized_keys > /dev/null
|
|
|
|
# Set up a dnf repository for the RPMs we built via mock.
|
|
sudo cp mock.repo /etc/yum.repos.d/
|
|
|
|
# Set up dnf repositories with the RPMs we want to test
|
|
sudo tee /etc/yum.repos.d/osbuild.repo << EOF
|
|
[osbuild]
|
|
name=osbuild ${GIT_COMMIT}
|
|
baseurl=${DNF_REPO_BASEURL}/osbuild/${ID}-${VERSION_ID}/${ARCH}/${OSBUILD_COMMIT}
|
|
enabled=1
|
|
gpgcheck=0
|
|
# Default dnf repo priority is 99. Lower number means higher priority.
|
|
priority=5
|
|
|
|
[osbuild-composer]
|
|
name=osbuild-composer ${OSBUILD_COMPOSER_COMMIT}
|
|
baseurl=${DNF_REPO_BASEURL}/osbuild-composer/${ID}-${VERSION_ID}/${ARCH}/${OSBUILD_COMPOSER_COMMIT}
|
|
enabled=1
|
|
gpgcheck=0
|
|
# Give this a slightly lower priority, because we used to have osbuild in this repo as well.
|
|
priority=10
|
|
EOF
|
|
|
|
# Installing koji-osbuild-tests package
|
|
retry sudo dnf -y install koji-osbuild-tests
|
|
|
|
# Start services.
|
|
sudo systemctl enable --now osbuild-composer.socket
|
|
sudo systemctl enable --now osbuild-composer-api.socket
|