sq/.github/workflows/test-install.yml
Neil O'Toole 511e69f59b
Bunch o' dependency updates ()
* Bunch o' dependency updates

* All deps updated

* Linting
2023-11-18 18:02:50 -07:00

226 lines
6.6 KiB
YAML

# This workflow tests the various sq install mechanisms.
name: Test Install
on:
workflow_call:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
macos-brew:
runs-on: macos-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Test brew
shell: bash
run: |
set -e pipefail
brew install neilotoole/sq/sq
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
macos-install-sh:
runs-on: macos-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Test install.sh
shell: bash
run: |
set -e pipefail
/bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
linux-other:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
container:
- "ubuntu:latest"
- "fedora:latest"
- "rockylinux:9"
# - "opensuse/leap:latest"
container:
image: ${{ matrix.container }}
steps:
- name: Test install.sh
run: |
set pipefail
set +e
# Some images don't have curl installed
if ! command -v curl &> /dev/null ; then
if command -v apt &> /dev/null; then
apt update && apt install -y curl
fi
fi
set -e
/bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
alpine:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
container: alpine:latest
steps:
- name: Test install
run: |
set -e pipefail
apk add curl
/bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
archlinux-pacman:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
container: archlinux:latest
steps:
- name: Create non-root user
run: |
set -e pipefail
pacman -Syu --noconfirm
pacman -S --needed --noconfirm sudo base-devel
uname="moi"
useradd $uname
passwd -d $uname
printf '%s ALL=(ALL) ALL\n' $uname | tee -a /etc/sudoers
mkdir -p /home/$uname
chown -R "$uname:$uname" /home/$uname
- name: Test install (pacman)
run: |
set -e pipefail
# Run as non-root user
# sudo -u moi
# Should be installed via pacman
sudo -u moi /bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
archlinux-yay:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
container: archlinux:latest
steps:
- name: Create non-root user
run: |
set -e pipefail
pacman -Syu --noconfirm
pacman -S --needed --noconfirm sudo base-devel
uname="moi"
useradd $uname
passwd -d $uname
printf '%s ALL=(ALL) ALL\n' $uname | tee -a /etc/sudoers
mkdir -p /home/$uname
chown -R "$uname:$uname" /home/$uname
- name: Install yay
run: |
set -e pipefail
cd /tmp
curl -sO https://aur.archlinux.org/cgit/aur.git/snapshot/yay-bin.tar.gz
tar -xf yay-bin.tar.gz
chmod -R 777 yay-bin
cd yay-bin
sudo -u moi makepkg -sri --noconfirm
- name: Test install (yay)
run: |
set -e pipefail
# Should be installed via yay
sudo -u moi /bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
ubuntu-brew:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Test install via brew
shell: bash
run: |
set -e pipefail
brew install neilotoole/sq/sq
if [ "$(sq version | awk '{print $2}')" != "${{github.ref_name}}" ]; then
echo "Expected sq ${{github.ref_name}} but got: $(sq version)"
exit 1
fi
void-linux:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
container: ghcr.io/void-linux/void-glibc:latest
steps:
- name: Test install
run: |-
set -e
(xbps-install -Syu || true) && xbps-install -yu xbps curl
/bin/sh -c "$(curl -fsSL https://sq.io/install.sh)"
if [ "$(sq version | awk '{print $1}')" != "sq" ]; then
# NOTE: The Void package release is a manual process.
# Thus, the released version will not match this particular
# workflow release. We'll just do a simple test here.
echo "FAIL: sq install not working for some reason"
exit 1
fi
windows-scoop:
runs-on: windows-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Test install (scoop)
run: |
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
scoop bucket add sq https://github.com/neilotoole/sq
scoop install sq
$gotVersion = sq version
echo "-------- sq version --------"
echo $gotVersion
echo "----------------------------"
if ($gotVersion -ne "sq ${{github.ref_name}}") {
echo "Wanted: sq ${{github.ref_name}}"
echo "Actual: $gotVersion"
echo "Incorrect version number"
exit 1
}