Skip to content

💜 merge pull request #64 from FWDekker/dev~ #57

💜 merge pull request #64 from FWDekker/dev~

💜 merge pull request #64 from FWDekker/dev~ #57

Workflow file for this run

name: CD
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: write
packages: read
jobs:
check-release-needed:
# Note that `workflow_dispatch` is never skipped
if: "!(contains(github.event.head_commit.message, '[cd skip]') || contains(github.event.head_commit.message, '[skip cd]'))"
runs-on: ubuntu-latest
steps:
- name: nop
run: true
build-linux:
needs: [ check-release-needed ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install fpm and build dependencies
run: |
sudo apt install -y rubygems libarchive-tools rpm zstd
sudo gem install --no-document fpm
- name: Build packages
run: make dist/generic dist/apk dist/deb dist/rpm dist/pacman
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*
build-macos:
needs: [ check-release-needed ]
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install fpm
run: sudo gem install --no-document fpm
- name: Build package
run: make dist/osxpkg
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*
build-freebsd:
needs: [ check-release-needed ]
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install fpm && Build package
uses: vmactions/freebsd-vm@v0
with:
usesh: true
prepare: |
echo "::group::Install basic packages"
pkg install -y git gmake || 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
gmake dist/freebsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*
build-netbsd:
needs: [ check-release-needed ]
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install fpm && Build package
uses: vmactions/netbsd-vm@v0
with:
usesh: true
prepare: |
set -e
echo "::group::Install basic packages"
pkg_add git gmake || exit 1
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
gmake dist/netbsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*
build-openbsd:
needs: [ check-release-needed ]
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install fpm && Build 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 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
gmake dist/openbsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*
release-mommy:
needs: [ build-linux, build-macos, build-freebsd, build-netbsd, build-openbsd ]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name != 'workflow_dispatch'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download built packages
uses: actions/download-artifact@v3
with:
name: dist
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./version)" >> $GITHUB_ENV
- name: Extract release notes
id: extract-release-notes
uses: ffurrer2/extract-release-notes@v1
with:
release_notes_file: RELEASE_NOTES.md
- name: Checkout release
uses: softprops/action-gh-release@v1
with:
draft: false
prerelease: false
tag_name: ${{ env.MOMMY_VERSION }}
body_path: RELEASE_NOTES.md
files: mommy*
release-aur:
needs: [ release-mommy ]
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: Checkout mommy
uses: actions/checkout@v3
with:
path: mommy
token: ${{ secrets.personal_access_token }}
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./mommy/version)" >> $GITHUB_ENV
- name: Checkout aur-mommy
uses: actions/checkout@v3
with:
repository: FWDekker/aur-mommy
path: aur-mommy
ref: master
fetch-depth: 0
# Required to trigger CI action when pushed
token: ${{ secrets.personal_access_token }}
- name: Fix aur-mommy directory ownership
run: chown -R build:build ./aur-mommy/
- name: Update build files
working-directory: ./aur-mommy/
run: |
echo "::group::Fast-forward main"
sudo -u build git checkout dev
sudo -u build git checkout master
sudo -u build git merge --commit dev
echo "::endgroup::"
echo "::group::Update build files"
sudo -u build ./update.sh "$MOMMY_VERSION"
echo "::endgroup::"
echo "::group::Commit update"
sudo -u build git config --global user.name "FWDekkerBot"
sudo -u build git config --global user.email "[email protected]"
sudo -u build git commit -am "🔖 mommy updated the build files to mommy $MOMMY_VERSION~"
echo "::endgroup::"
echo "::group::Fast-forward dev"
sudo -u build git checkout dev
sudo -u build git merge --commit master
echo "::endgroup::"
echo "::group::Push changes"
sudo -u build git push origin master dev
echo "::endgroup::"
release-homebrew:
needs: [ release-mommy ]
runs-on: ubuntu-latest
steps:
- name: Checkout mommy
uses: actions/checkout@v3
with:
path: mommy
token: ${{ secrets.personal_access_token }}
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./mommy/version)" >> $GITHUB_ENV
- name: Checkout homebrew-mommy
uses: actions/checkout@v3
with:
repository: FWDekker/homebrew-mommy
path: homebrew-mommy
ref: main
fetch-depth: 0
# Required to trigger CI action when pushed
token: ${{ secrets.personal_access_token }}
- name: Update formula
working-directory: ./homebrew-mommy/
run: |
echo "::group::Fast-forward main"
git checkout dev
git checkout main
git merge --commit dev
echo "::endgroup::"
echo "::group::Update formula"
./update.sh "$MOMMY_VERSION"
echo "::endgroup::"
echo "::group::Commit update"
git config --global user.name "FWDekkerBot"
git config --global user.email "[email protected]"
git commit -am "🔖 mommy updated the formula to mommy $MOMMY_VERSION~"
echo "::endgroup::"
echo "::group::Fast-forward dev"
git checkout dev
git merge --commit main
echo "::endgroup::"
echo "::group::Push changes"
git push origin main dev
echo "::endgroup::"