86 lines
2.6 KiB
YAML
86 lines
2.6 KiB
YAML
name: Build and Release
|
|
|
|
# Triggered when debian/changelog changes on main — meaning version-bump.yml
|
|
# just committed a new version. Builds the .deb and publishes a GitHub Release.
|
|
# The actor guard ensures this only fires for the bot's commit, not manual edits.
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'debian/changelog'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
if: github.actor == 'github-actions[bot]'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Extract version from changelog
|
|
id: version
|
|
run: |
|
|
VERSION=$(grep -m1 '(' debian/changelog | sed 's/.*(\(.*\)).*/\1/')
|
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -y debhelper dpkg-dev
|
|
|
|
- name: Build deb package
|
|
run: |
|
|
dpkg-buildpackage -us -uc -b
|
|
ls -lh ../pve-mod_*.deb
|
|
|
|
- name: Collect release assets
|
|
id: assets
|
|
run: |
|
|
DEB=$(ls ../pve-mods_${{ steps.version.outputs.version }}.deb)
|
|
echo "deb=$DEB" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Extract release notes from changelog
|
|
id: notes
|
|
run: |
|
|
# Pull the top changelog entry (lines between first and second "^pve-mod (")
|
|
NOTES=$(awk '
|
|
/^pve-mod \(/ { if (found) exit; found=1; next }
|
|
found && /^ --/ { exit }
|
|
found { print }
|
|
' debian/changelog | grep '^\s*\*' | sed 's/^\s*\* /- /')
|
|
EOF=$(dd if=/dev/urandom bs=15 count=1 2>/dev/null | base64)
|
|
echo "notes<<$EOF" >> "$GITHUB_OUTPUT"
|
|
echo "$NOTES" >> "$GITHUB_OUTPUT"
|
|
echo "$EOF" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create Git tag
|
|
env:
|
|
TAG: ${{ steps.version.outputs.tag }}
|
|
run: |
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git tag "$TAG"
|
|
git push origin "$TAG"
|
|
|
|
- name: Create GitHub Release
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
TAG: ${{ steps.version.outputs.tag }}
|
|
NOTES: ${{ steps.notes.outputs.notes }}
|
|
DEB: ${{ steps.assets.outputs.deb }}
|
|
run: |
|
|
gh release create "$TAG" \
|
|
--title "pve-mod $TAG" \
|
|
--notes "$NOTES" \
|
|
"$DEB" \
|
|
"install.sh"
|