π ββοΈ merge pull request #109 from FWDekker/forbidden-regexes~ #363
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: | |
paths-ignore: | |
- 'README.md' | |
- 'SECURITY.md' | |
- '.github/img/**' | |
pull_request: | |
paths-ignore: | |
- 'README.md' | |
- 'SECURITY.md' | |
- '.github/img/**' | |
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: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Test script and package | |
uses: cross-platform-actions/action@v0.22.0 | |
with: | |
operating_system: netbsd | |
version: "9.3" | |
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::Install basic packages" | |
sudo pkgin -y in git gmake mozilla-rootcerts-openssl | |
echo "::endgroup::" | |
echo "::group::Install ShellSpec" | |
git clone --depth=1 https://github.com/shellspec/shellspec.git /tmp/shellspec/ | |
sudo gmake -C /tmp/shellspec/ install | |
rm -rf /tmp/shellspec | |
echo "::endgroup::" | |
echo "::group::Install additional shells" | |
sudo pkgin -y in fish zsh | |
touch "$HOME/.zshrc" | |
echo "::endgroup::" | |
echo "::group::Ignore ownership issues" | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
echo "::endgroup::" | |
echo "::group::Test script" | |
gmake test | |
echo "::endgroup::" | |
echo "::group::Build package" | |
gmake dist/netbsd | |
echo "::endgroup::" | |
echo "::group::Install package" | |
sudo pkg_add ./dist/mommy-*+netbsd.tgz | |
echo "::endgroup::" | |
echo "::group::Test package" | |
MOMMY_SYSTEM=1 gmake test | |
echo "::endgroup::" | |
echo "::group::Uninstall package" | |
sudo 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 = ./.; })' |