Files
ccextractor/.github/workflows/build_snap.yml

81 lines
2.1 KiB
YAML

name: Build CCExtractor Snap
on:
workflow_dispatch:
release:
types: [published]
jobs:
build_snap:
name: Build Snap package
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install snapd
run: |
sudo apt update
sudo apt install -y snapd
- name: Start snapd
run: |
sudo systemctl start snapd.socket
sudo systemctl start snapd
- name: Install Snapcraft
run: |
sudo snap install core22
sudo snap install snapcraft --classic
- name: Show Snapcraft version
run: snapcraft --version
- name: Set Snap version from tag
if: github.event_name == 'release'
run: |
# Extract version from GITHUB_REF (handles both v0.96.6 and 0.96.6 tags)
VERSION="${GITHUB_REF#refs/tags/}"
VERSION="${VERSION#v}"
VERSION="${VERSION%%-*}"
VERSION="${VERSION//[[:space:]]/}"
if [ -z "$VERSION" ]; then
echo "ERROR: Version is empty after parsing GITHUB_REF: $GITHUB_REF" >&2
exit 1
fi
if [ ${#VERSION} -gt 32 ]; then
echo "Snap version too long: $VERSION" >&2
exit 1
fi
# Verify snapcraft.yaml has a version line before modifying
if ! grep -q '^version:' snap/snapcraft.yaml; then
echo "ERROR: No version line found in snap/snapcraft.yaml" >&2
exit 1
fi
echo "Setting snap version to: $VERSION"
sed -i "s/^version: .*/version: '${VERSION}'/" snap/snapcraft.yaml
grep -m1 '^version:' snap/snapcraft.yaml
- name: Build snap
run: sudo snapcraft --destructive-mode
- name: List generated snap
run: ls -lh *.snap
- name: Upload snap as workflow artifact
uses: actions/upload-artifact@v7
with:
name: CCExtractor Snap
path: "*.snap"
- name: Upload snap to GitHub Release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v3
with:
files: "*.snap"