💚 merge pull request #62 from FWDekker/fix-netbsd~ #183
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
jobs: | |
test-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install dependencies for mommy | |
run: | | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git | |
sudo make -C shellspec install | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
sudo apt-get install fish zsh | |
touch "$HOME/.zshrc" | |
echo "::endgroup::" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Test script | |
run: make test | |
- name: Install fpm and build dependencies | |
run: | | |
sudo apt-get install -y rubygems libarchive-tools rpm zstd | |
sudo gem install --no-document fpm | |
- name: Test fpm package | |
run: | | |
echo "::group::Build" | |
make dist/deb | |
echo "::endgroup::" | |
echo "::group::Install" | |
sudo apt-get install -y ./dist/mommy-*.deb | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
sudo apt-get purge -y mommy | |
echo "::endgroup::" | |
- name: Install Homebrew | |
run: NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
- name: Checkout homebrew-mommy | |
uses: actions/checkout@v3 | |
with: | |
repository: FWDekker/homebrew-mommy | |
path: homebrew-mommy | |
ref: dev | |
- name: Test Homebrew package | |
run: | | |
echo "::group::Enable Homebrew" | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
mkdir -p "$HOME/.config/fish/"; echo "set -gx fish_complete_path \$fish_complete_path $(brew --prefix)/share/fish/vendor_completions.d/" >> "$HOME/.config/fish/config.fish" | |
echo "FPATH=\"$(brew --prefix)/share/zsh/site-functions/:\$FPATH\"" >> "$HOME/.zshrc" | |
echo "::endgroup::" | |
echo "::group::Install" | |
brew tap local/mommy "$(pwd)/homebrew-mommy" | |
brew install mommy --HEAD | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
brew uninstall mommy | |
brew untap local/mommy | |
echo "::endgroup::" | |
test-archlinux: | |
runs-on: ubuntu-latest | |
container: archlinux:latest | |
steps: | |
- name: Set up basic system | |
run: | | |
echo "::group::Update system" | |
pacman -Syu --noconfirm | |
echo "::endgroup::" | |
echo "::group::Install basic packages" | |
pacman -S --noconfirm --needed git base-devel | |
echo "::endgroup::" | |
echo "::group::Add non-privileged user to run makepkg" | |
useradd -m build | |
echo "build ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers | |
echo "::endgroup::" | |
- name: Install dependencies for mommy | |
run: | | |
echo "::group::Install man-db" | |
pacman -S --noconfirm man-db | |
sed -i "/NoExtract.*man/d" /etc/pacman.conf # Extract man pages | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone https://aur.archlinux.org/shellspec-bin.git | |
chown -R build:build ./shellspec-bin | |
cd ./shellspec-bin | |
sudo -u build makepkg -si --noconfirm | |
cd - | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
pacman -S --noconfirm fish zsh | |
echo "::endgroup::" | |
- name: Checkout mommy | |
uses: actions/checkout@v3 | |
with: | |
path: mommy | |
- name: Fix mommy directory ownership | |
run: chown -R build:build ./mommy/ | |
- name: Test script | |
working-directory: ./mommy/ | |
run: make test | |
- name: Install fpm | |
run: | | |
pacman -S --noconfirm ruby | |
gem install --no-document fpm | |
ln -s "$HOME/.local/share/gem/ruby/"*"/bin/fpm" /usr/local/bin/fpm # Symlink `fpm` to latest version | |
- name: Test fpm package | |
working-directory: ./mommy/ | |
run: | | |
echo "::group::Build" | |
make dist/pacman | |
echo "::endgroup::" | |
echo "::group::Install" | |
pacman -U --noconfirm ./dist/mommy*.pacman | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
pacman -R --noconfirm mommy | |
echo "::endgroup::" | |
- name: Checkout aur-mommy | |
uses: actions/checkout@v3 | |
with: | |
repository: FWDekker/aur-mommy | |
path: aur-mommy | |
ref: dev | |
- name: Fix aur-mommy directory ownership | |
run: chown -R build:build ./aur-mommy/ | |
- name: Test AUR package | |
working-directory: ./aur-mommy/ | |
run: | | |
echo "::group::Patch" | |
sudo -u build ./update.sh dev | |
echo "::endgroup::" | |
echo "::group::Build and install" | |
sudo -u build makepkg -si --noconfirm | |
echo "::endgroup::" | |
cd ../mommy/ | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
pacman -R --noconfirm mommy | |
echo "::endgroup::" | |
test-fedora: | |
runs-on: ubuntu-latest | |
container: fedora:latest | |
steps: | |
- name: Set up basic system | |
run: | | |
echo "::group::Update system" | |
dnf -y update | |
echo "::endgroup::" | |
echo "::group::Install basic packages" | |
dnf -y install git make rpm-build | |
echo "::endgroup::" | |
- name: Install dependencies for mommy | |
run: | | |
echo "::group::Install man-db" | |
dnf -y install man-db | |
sed -i "/nodocs/d" /etc/dnf/dnf.conf # Extract man pages | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git | |
make -C shellspec install | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
dnf -y install fish zsh | |
echo "::endgroup::" | |
- name: Checkout mommy | |
uses: actions/checkout@v3 | |
with: | |
# Checkout to subdirectory is required for `pkg/rpm/rpkg.conf` to correctly determine `${git_props:root}` | |
path: mommy | |
- name: Test script | |
working-directory: ./mommy/ | |
run: make test | |
- name: Install fpm | |
run: | | |
dnf -y install rubygems | |
gem install --no-document fpm | |
- name: Test fpm package | |
working-directory: ./mommy/ | |
run: | | |
echo "::group::Build" | |
make dist/rpm | |
echo "::endgroup::" | |
echo "::group::Install" | |
dnf -y install ./dist/mommy*.rpm | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
dnf -y remove mommy | |
echo "::endgroup::" | |
- name: Install rpkg | |
run: dnf -y install rpkg | |
- name: Test SRPM package | |
working-directory: ./mommy/ | |
run: | | |
echo "::group::Build" | |
rpkg -p ./pkg/rpm local # build srpm | |
rpmbuild --rebuild /tmp/rpkg/mommy-*/*.rpm | |
echo "::endgroup::" | |
echo "::group::Install" | |
dnf -y install "$HOME"/rpmbuild/RPMS/*/*.rpm | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
dnf -y remove mommy | |
echo "::endgroup::" | |
test-macos: | |
runs-on: macos-latest | |
steps: | |
- name: Install dependencies for mommy | |
run: | | |
echo "::group::Install ShellSpec" | |
brew tap shellspec/shellspec | |
brew install shellspec | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
brew install fish | |
echo "::endgroup::" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Test script | |
run: make test | |
- name: Install fpm | |
run: sudo gem install --no-document fpm | |
- name: Test fpm package | |
run: | | |
echo "::group::Build" | |
make dist/osxpkg | |
echo "::endgroup::" | |
echo "::group::Install" | |
sudo installer -pkg ./dist/mommy*+osx.pkg -target / | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
sudo rm -f /usr/local/bin/mommy /usr/local/share/man/man1/mommy.1.gz /usr/local/share/fish/vendor_completions.d/mommy.fish /usr/local/share/zsh/site-functions/_mommy | |
echo "::endgroup::" | |
- name: Checkout homebrew-mommy | |
uses: actions/checkout@v3 | |
with: | |
repository: FWDekker/homebrew-mommy | |
path: homebrew-mommy | |
ref: dev | |
- name: Test Homebrew package | |
run: | | |
echo "::group::Enable Homebrew" | |
mkdir -p "$HOME/.config/fish/"; echo "set -gx fish_complete_path \$fish_complete_path $(brew --prefix)/share/fish/vendor_completions.d/" >> "$HOME/.config/fish/config.fish" | |
echo "FPATH=\"$(brew --prefix)/share/zsh/site-functions/:\$FPATH\"" >> "$HOME/.zshrc" | |
echo "::endgroup::" | |
echo "::group::Install" | |
brew tap local/mommy "$(pwd)/homebrew-mommy" | |
brew install mommy --HEAD | |
echo "::endgroup::" | |
echo "::group::Test" | |
make system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall" | |
brew uninstall mommy | |
brew untap local/mommy | |
echo "::endgroup::" | |
test-freebsd: | |
runs-on: macos-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Test script and package | |
uses: vmactions/freebsd-vm@v0 | |
with: | |
usesh: true | |
# TODO: Use `set -e` in `prepare` once https://github.com/vmactions/freebsd-vm/issues/66 is deployed | |
# Probably once the latest release at https://github.com/vmactions/freebsd-vm/releases is newer than v0.3.0 | |
prepare: | | |
echo "::group::Install basic packages" | |
pkg install -y git gmake || exit 1 | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git || exit 1 | |
gmake -C shellspec install || exit 1 | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
pkg install -y fish zsh || exit 1 | |
echo "::endgroup::" | |
# fpm | |
echo "::group::Install fpm: Actually install fpm" | |
pkg install -y devel/ruby-gems || exit 1 | |
gem install --no-document fpm || exit 1 | |
echo "::endgroup::" | |
echo "::group::Install fpm: Install gtar (workaround for https://github.com/jordansissel/fpm/pull/1922)" | |
pkg install -y gtar || exit 1 | |
mv /usr/bin/tar /usr/bin/bsdtar || exit 1 | |
mv /usr/local/bin/gtar /usr/bin/tar || exit 1 | |
echo "::endgroup::" | |
# /fpm | |
echo "::group::Ignore ownership issues" | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" || exit 1 | |
echo "::endgroup::" | |
run: | | |
set -e | |
echo "::group::Test script" | |
gmake test | |
echo "::endgroup::" | |
echo "::group::Build package" | |
gmake dist/freebsd | |
echo "::endgroup::" | |
echo "::group::Install package" | |
pkg add ./dist/mommy-*.freebsd | |
echo "::endgroup::" | |
echo "::group::Test package" | |
gmake system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall package" | |
pkg delete -y mommy | |
echo "::endgroup::" | |
test-netbsd: | |
runs-on: macos-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Test script and package | |
uses: vmactions/netbsd-vm@v0 | |
with: | |
usesh: true | |
prepare: | | |
set -e | |
echo "::group::Install basic packages" | |
pkg_add git gmake mozilla-rootcerts-openssl | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git | |
gmake -C shellspec install | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
pkg_add fish zsh | |
touch "$HOME/.zshrc" | |
echo "::endgroup::" | |
echo "::group::Install fpm" | |
pkg_add ruby | |
/usr/pkg/bin/gem install --no-document fpm | |
pkg_add pkg_install # This is necessary to make `fpm` work with `pkgin` format for some reason | |
echo "::endgroup::" | |
echo "::group::Ignore ownership issues" | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
echo "::endgroup::" | |
run: | | |
set -e | |
export PATH="/usr/sbin:$PATH" # Add `pkg_*` commands to path | |
export MOMMY_ZSH_SKIP=1 # Zsh completion capturing totally does not work | |
echo "::group::Test script" | |
gmake test | |
echo "::endgroup::" | |
echo "::group::Build package" | |
gmake dist/netbsd | |
echo "::endgroup::" | |
echo "::group::Install package" | |
pkg_add ./dist/mommy-*+netbsd.tgz | |
echo "::endgroup::" | |
echo "::group::Test package" | |
gmake system=1 test | |
echo "::endgroup::" | |
echo "::group::Uninstall package" | |
pkg_delete mommy | |
echo "::endgroup::" | |
test-openbsd: | |
runs-on: macos-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install dependencies for mommy && Test script && Build package && Test package | |
uses: vmactions/openbsd-vm@v0 | |
with: | |
usesh: true | |
prepare: | | |
set -e | |
echo "::group::Install basic packages" | |
pkg_add git gmake | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git | |
gmake -C shellspec install | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
pkg_add fish zsh | |
touch "$HOME/.zshrc" | |
echo "::endgroup::" | |
echo "::group::Install fpm" | |
pkg_add "$(pkg_info -Q ruby | grep "^ruby-[0-9]" | tail -n 1)" | |
/usr/local/bin/gem* install --no-document fpm | |
ln -s /usr/local/bin/fpm* /usr/local/bin/fpm # Symlink `fpm` to latest version | |
echo "::endgroup::" | |
echo "::group::Ignore ownership issues" | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
echo "::endgroup::" | |
run: | | |
set -e | |
export MOMMY_ZSH_SKIP=1 # `script` does not have the `-q` option in OpenBSD | |
echo "::group::Test script" | |
gmake test | |
echo "::endgroup::" | |
echo "::group::Build package" | |
gmake dist/openbsd | |
echo "::endgroup::" | |
echo "::group::Install package" | |
pkg_add -D unsigned ./dist/mommy-*+openbsd.tgz | |
echo "::endgroup::" | |
echo "::group::Test package" | |
gmake system=1 test # Zsh completion tests do not work in OpenBSD | |
echo "::endgroup::" | |
echo "::group::Uninstall package" | |
pkg_delete mommy | |
echo "::endgroup::" | |
test-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Set up msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
# Install basic package && Install additional shells | |
install: git make fish zsh | |
- name: Install dependencies for mommy | |
shell: msys2 {0} | |
run: | | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git | |
make -C shellspec install | |
echo "::endgroup::" | |
echo "::group::Post-install additional shells" | |
touch "$HOME/.zshrc" | |
echo "::endgroup::" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Test script | |
shell: msys2 {0} | |
run: make test | |
- name: Install mommy | |
shell: msys2 {0} | |
run: make install | |
- name: Test installed mommy | |
shell: msys2 {0} | |
run: make system=1 test |