1*d2a8fad3SMartin Matuska#!/bin/bash 2*d2a8fad3SMartin Matuska# 3*d2a8fad3SMartin Matuska# Do a test install of ZFS from an external repository. 4*d2a8fad3SMartin Matuska# 5*d2a8fad3SMartin Matuska# USAGE: 6*d2a8fad3SMartin Matuska# 7*d2a8fad3SMartin Matuska# ./qemu-test-repo-vm [URL] 8*d2a8fad3SMartin Matuska# 9*d2a8fad3SMartin Matuska# URL: URL to use instead of http://download.zfsonlinux.org 10*d2a8fad3SMartin Matuska# If blank, use the default repo from zfs-release RPM. 11*d2a8fad3SMartin Matuska 12*d2a8fad3SMartin Matuskaset -e 13*d2a8fad3SMartin Matuska 14*d2a8fad3SMartin Matuskasource /etc/os-release 15*d2a8fad3SMartin MatuskaOS="$ID" 16*d2a8fad3SMartin MatuskaVERSION="$VERSION_ID" 17*d2a8fad3SMartin Matuska 18*d2a8fad3SMartin MatuskaALTHOST="" 19*d2a8fad3SMartin Matuskaif [ -n "$1" ] ; then 20*d2a8fad3SMartin Matuska ALTHOST="$1" 21*d2a8fad3SMartin Matuskafi 22*d2a8fad3SMartin Matuska 23*d2a8fad3SMartin Matuska# Write summary to /tmp/repo so our artifacts scripts pick it up 24*d2a8fad3SMartin Matuskamkdir /tmp/repo 25*d2a8fad3SMartin MatuskaSUMMARY=/tmp/repo/$OS-$VERSION-summary.txt 26*d2a8fad3SMartin Matuska 27*d2a8fad3SMartin Matuska# $1: Repo 'zfs' 'zfs-kmod' 'zfs-testing' 'zfs-testing-kmod' 28*d2a8fad3SMartin Matuska# $2: (optional) Alternate host than 'http://download.zfsonlinux.org' to 29*d2a8fad3SMartin Matuska# install from. Blank means use default from zfs-release RPM. 30*d2a8fad3SMartin Matuskafunction test_install { 31*d2a8fad3SMartin Matuska repo=$1 32*d2a8fad3SMartin Matuska host="" 33*d2a8fad3SMartin Matuska if [ -n "$2" ] ; then 34*d2a8fad3SMartin Matuska host=$2 35*d2a8fad3SMartin Matuska fi 36*d2a8fad3SMartin Matuska 37*d2a8fad3SMartin Matuska args="--disablerepo=zfs --enablerepo=$repo" 38*d2a8fad3SMartin Matuska 39*d2a8fad3SMartin Matuska # If we supplied an alternate repo URL, and have not already edited 40*d2a8fad3SMartin Matuska # zfs.repo, then update the repo file. 41*d2a8fad3SMartin Matuska if [ -n "$host" ] && ! grep -q $host /etc/yum.repos.d/zfs.repo ; then 42*d2a8fad3SMartin Matuska sudo sed -i "s;baseurl=http://download.zfsonlinux.org;baseurl=$host;g" /etc/yum.repos.d/zfs.repo 43*d2a8fad3SMartin Matuska fi 44*d2a8fad3SMartin Matuska 45*d2a8fad3SMartin Matuska sudo dnf -y install $args zfs zfs-test 46*d2a8fad3SMartin Matuska 47*d2a8fad3SMartin Matuska # Load modules and create a simple pool as a sanity test. 48*d2a8fad3SMartin Matuska sudo /usr/share/zfs/zfs.sh -r 49*d2a8fad3SMartin Matuska truncate -s 100M /tmp/file 50*d2a8fad3SMartin Matuska sudo zpool create tank /tmp/file 51*d2a8fad3SMartin Matuska sudo zpool status 52*d2a8fad3SMartin Matuska 53*d2a8fad3SMartin Matuska # Print out repo name, rpm installed (kmod or dkms), and repo URL 54*d2a8fad3SMartin Matuska baseurl=$(grep -A 5 "\[$repo\]" /etc/yum.repos.d/zfs.repo | awk -F'=' '/baseurl=/{print $2; exit}') 55*d2a8fad3SMartin Matuska package=$(sudo rpm -qa | grep zfs | grep -E 'kmod|dkms') 56*d2a8fad3SMartin Matuska 57*d2a8fad3SMartin Matuska echo "$repo $package $baseurl" >> $SUMMARY 58*d2a8fad3SMartin Matuska 59*d2a8fad3SMartin Matuska sudo zpool destroy tank 60*d2a8fad3SMartin Matuska sudo rm /tmp/file 61*d2a8fad3SMartin Matuska sudo dnf -y remove zfs 62*d2a8fad3SMartin Matuska} 63*d2a8fad3SMartin Matuska 64*d2a8fad3SMartin Matuskaecho "##[group]Installing from repo" 65*d2a8fad3SMartin Matuska# The openzfs docs are the authoritative instructions for the install. Use 66*d2a8fad3SMartin Matuska# the specific version of zfs-release RPM it recommends. 67*d2a8fad3SMartin Matuskacase $OS in 68*d2a8fad3SMartin Matuskaalmalinux*) 69*d2a8fad3SMartin Matuska url='https://raw.githubusercontent.com/openzfs/openzfs-docs/refs/heads/master/docs/Getting%20Started/RHEL-based%20distro/index.rst' 70*d2a8fad3SMartin Matuska name=$(curl -Ls $url | grep 'dnf install' | grep -Eo 'zfs-release-[0-9]+-[0-9]+') 71*d2a8fad3SMartin Matuska sudo dnf -y install https://zfsonlinux.org/epel/$name$(rpm --eval "%{dist}").noarch.rpm 2>&1 72*d2a8fad3SMartin Matuska sudo rpm -qi zfs-release 73*d2a8fad3SMartin Matuska test_install zfs $ALTHOST 74*d2a8fad3SMartin Matuska test_install zfs-kmod $ALTHOST 75*d2a8fad3SMartin Matuska test_install zfs-testing $ALTHOST 76*d2a8fad3SMartin Matuska test_install zfs-testing-kmod $ALTHOST 77*d2a8fad3SMartin Matuska ;; 78*d2a8fad3SMartin Matuskafedora*) 79*d2a8fad3SMartin Matuska url='https://raw.githubusercontent.com/openzfs/openzfs-docs/refs/heads/master/docs/Getting%20Started/Fedora/index.rst' 80*d2a8fad3SMartin Matuska name=$(curl -Ls $url | grep 'dnf install' | grep -Eo 'zfs-release-[0-9]+-[0-9]+') 81*d2a8fad3SMartin Matuska sudo dnf -y install -y https://zfsonlinux.org/fedora/$name$(rpm --eval "%{dist}").noarch.rpm 82*d2a8fad3SMartin Matuska test_install zfs $ALTHOST 83*d2a8fad3SMartin Matuska ;; 84*d2a8fad3SMartin Matuskaesac 85*d2a8fad3SMartin Matuskaecho "##[endgroup]" 86*d2a8fad3SMartin Matuska 87*d2a8fad3SMartin Matuska# Write out a simple version of the summary here. Later on we will collate all 88*d2a8fad3SMartin Matuska# the summaries and put them into a nice table in the workflow Summary page. 89*d2a8fad3SMartin Matuskaecho "Summary: " 90*d2a8fad3SMartin Matuskacat $SUMMARY 91