Skip to content

✂️ a few simple fixes~ #278

✂️ a few simple fixes~

✂️ a few simple fixes~ #278

Workflow file for this run

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 /tmp/shellspec
sudo make -C /tmp/shellspec/ install
rm -rf /tmp/shellspec
echo "::endgroup::"
echo "::group::Install additional shells"
sudo apt-get install fish zsh
touch "$HOME/.zshrc"
echo "::endgroup::"
- name: Checkout
uses: actions/checkout@v4
- 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"
MOMMY_SYSTEM=1 make 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@v4
with:
repository: FWDekker/homebrew-mommy
path: homebrew-mommy
ref: dev
- name: Patch homebrew-mommy
working-directory: homebrew-mommy
env:
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
# Point the formula to the commit that is being tested in this workflow
sed -i -e "s|head \(.*\), branch: .*|head \1, revision: \"$RELEVANT_SHA\"|g" mommy.rb
git -c user.name="ignore" -c user.email="ignore" commit -am "ignore"
- 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"
MOMMY_SYSTEM=1 make 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 /tmp/shellspec-bin
chown -R build:build /tmp/shellspec-bin
cd /tmp/shellspec-bin
sudo -u build makepkg -si --noconfirm
rm -rf /tmp/shellspec-bin
cd -
echo "::endgroup::"
echo "::group::Install additional shells"
pacman -S --noconfirm fish zsh
echo "::endgroup::"
- name: Checkout mommy
uses: actions/checkout@v4
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"
MOMMY_SYSTEM=1 make test
echo "::endgroup::"
echo "::group::Uninstall"
pacman -R --noconfirm mommy
echo "::endgroup::"
- name: Checkout aur-mommy
uses: actions/checkout@v4
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/
env:
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
echo "::group::Patch"
sudo -u build ./update.sh "$RELEVANT_SHA"
echo "::endgroup::"
echo "::group::Build and install"
sudo -u build makepkg -si --noconfirm
echo "::endgroup::"
cd ../mommy/
echo "::group::Test"
MOMMY_SYSTEM=1 make 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 /tmp/shellspec
make -C /tmp/shellspec install
rm -rf /tmp/shellspec
echo "::endgroup::"
echo "::group::Install additional shells"
dnf -y install fish zsh
echo "::endgroup::"
- name: Checkout mommy
uses: actions/checkout@v4
with:
# Checkout to subdirectory is required for 'pkg/rpkg/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"
MOMMY_SYSTEM=1 make 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/rpkg 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"
MOMMY_SYSTEM=1 make 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@v4
- 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"
MOMMY_SYSTEM=1 make test
echo "::endgroup::"
echo "::group::Uninstall"
sudo make uninstall/osxpkg
echo "::endgroup::"
- name: Checkout homebrew-mommy
uses: actions/checkout@v4
with:
repository: FWDekker/homebrew-mommy
path: homebrew-mommy
ref: dev
- name: Patch homebrew-mommy
working-directory: homebrew-mommy
env:
RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
# Point the formula to the commit that is being tested in this workflow
sed -i -e "s|head \(.*\), branch: .*|head \1, revision: \"$RELEVANT_SHA\"|g" mommy.rb
git -c user.name="ignore" -c user.email="ignore" commit -am "ignore"
- 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"
MOMMY_SYSTEM=1 make test
echo "::endgroup::"
echo "::group::Uninstall"
brew uninstall mommy
brew untap local/mommy
echo "::endgroup::"
test-freebsd:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test script and package
uses: vmactions/freebsd-vm@v1
with:
usesh: true
prepare: |
set -e
echo "::group::Install basic packages"
pkg install -y git gmake
echo "::endgroup::"
echo "::group::Install ShellSpec"
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec
gmake -C /tmp/shellspec install
rm -rf /tmp/shellspec
echo "::endgroup::"
echo "::group::Install additional shells"
pkg install -y fish zsh
echo "::endgroup::"
# fpm
echo "::group::Install fpm: Actually install fpm"
pkg install -y devel/ruby-gems
gem install --no-document fpm
echo "::endgroup::"
echo "::group::Install fpm: Install gtar (workaround for https://github.com/jordansissel/fpm/pull/1922)"
pkg install -y gtar
mv /usr/bin/tar /usr/bin/bsdtar
mv /usr/local/bin/gtar /usr/bin/tar
echo "::endgroup::"
# /fpm
echo "::group::Ignore ownership issues"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
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"
MOMMY_SYSTEM=1 gmake test
echo "::endgroup::"
echo "::group::Uninstall package"
pkg delete -y mommy
echo "::endgroup::"
test-netbsd:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test script and package
uses: vmactions/netbsd-vm@v1
with:
usesh: true
prepare: |
set -e
export PATH="/usr/sbin:$PATH" # Add 'pkg_*' commands to path
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 /tmp/shellspec/
gmake -C /tmp/shellspec/ install
rm -rf /tmp/shellspec
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"
# MOMMY_SYSTEM=1 gmake test
# echo "::endgroup::"
#
# echo "::group::Uninstall package"
# pkg_delete mommy
# echo "::endgroup::"
test-openbsd:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies for mommy && Test script && Build package && Test package
uses: vmactions/openbsd-vm@v1
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 /tmp/shellspec
gmake -C /tmp/shellspec install
rm -rf /tmp/shellspec
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"
MOMMY_SYSTEM=1 gmake 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 /tmp/shellspec
make -C /tmp/shellspec install
rm -rf /tmp/shellspec
echo "::endgroup::"
echo "::group::Post-install additional shells"
touch "$HOME/.zshrc"
echo "::endgroup::"
- name: Checkout
uses: actions/checkout@v4
- 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: MOMMY_SYSTEM=1 make test
test-nixpkgs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Enable nix
uses: DeterminateSystems/nix-installer-action@main
- name: Enable cache
uses: DeterminateSystems/magic-nix-cache-action@main
- name: Build
run: |
nix build \
--impure \
--expr '(import <nixpkgs> {}).mommy.overrideAttrs (prev: { src = ./.; })'