Files
Cheikh Seck 9377f3b942 Remove GitHub Release step from release-snap.yml
Removed the GitHub Release creation step from the workflow.
2026-06-28 21:37:20 +00:00

149 lines
4.8 KiB
YAML

name: Release to Snap Store
on:
workflow_dispatch:
inputs:
version:
description: 'Version tag (e.g., v1.2.3)'
required: true
type: string
push:
tags:
- 'v*'
permissions:
contents: write
env:
SNAP_CHANNEL: stable
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_CREDENTIALS }}
jobs:
build-and-publish-snap:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Get version
id: get_tag
run: |
TAG="${{ inputs.version }}"
if [ -z "$TAG" ]; then
TAG="${{ github.ref_name }}"
fi
echo "TAG=$TAG" >> $GITHUB_OUTPUT
echo "VERSION=${TAG#v}" >> $GITHUB_OUTPUT
- name: Build Linux AMD64
env:
GOOS: linux
GOARCH: amd64
CGO_ENABLED: 0
TAG: ${{ steps.get_tag.outputs.TAG }}
VERSION: ${{ steps.get_tag.outputs.VERSION }}
run: |
mkdir -p dist
go build -ldflags="-s -w -X main.version=${VERSION} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o dist/godex-amd64 ./cmd/godex
- name: Build Linux ARM64
env:
GOOS: linux
GOARCH: arm64
CGO_ENABLED: 0
TAG: ${{ steps.get_tag.outputs.TAG }}
VERSION: ${{ steps.get_tag.outputs.VERSION }}
run: |
mkdir -p dist
go build -ldflags="-s -w -X main.version=${VERSION} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o dist/godex-arm64 ./cmd/godex
- name: Create tarballs for snap
env:
VERSION: ${{ steps.get_tag.outputs.VERSION }}
run: |
mkdir -p snap-build/godex-${VERSION}-linux-amd64
cp dist/godex-amd64 snap-build/godex-${VERSION}-linux-amd64/godex
chmod +x snap-build/godex-${VERSION}-linux-amd64/godex
tar -czf godex-${VERSION}-linux-amd64.tar.gz -C snap-build godex-${VERSION}-linux-amd64
mkdir -p snap-build/godex-${VERSION}-linux-arm64
cp dist/godex-arm64 snap-build/godex-${VERSION}-linux-arm64/godex
chmod +x snap-build/godex-${VERSION}-linux-arm64/godex
tar -czf godex-${VERSION}-linux-arm64.tar.gz -C snap-build godex-${VERSION}-linux-arm64
- name: Copy assets for snap
run: |
cp packaging/snap/gui/godex-ai-agent.png packaging/snap/
cp screen3.gif packaging/snap/
cp screen2.gif packaging/snap/
cp scrreen.gif packaging/snap/
- name: Install Snapcraft
run: |
sudo snap install snapcraft --classic
- name: Ensure snapd and core22
run: |
sudo systemctl start snapd
sudo snap wait system seed.loaded
sudo snap install core22 --channel=latest/stable
- name: Validate Snapcraft credentials
run: |
if [ -z "$SNAPCRAFT_STORE_CREDENTIALS" ]; then
echo "SNAP_CREDENTIALS secret is empty or unavailable."
exit 1
fi
- name: Build Snaps
env:
VERSION: ${{ steps.get_tag.outputs.VERSION }}
GITHUB_WORKSPACE: ${{ github.workspace }}
working-directory: packaging/snap
run: |
for arch in amd64 arm64; do
tarball="$GITHUB_WORKSPACE/godex-${VERSION}-linux-${arch}.tar.gz"
if [ ! -f "$tarball" ]; then
echo "Missing tarball: $tarball"
exit 1
fi
sed -i "/^ godex:/,/^ launcher:/ s|^\\(\\s*\\)source: .*|\\1source: ${tarball}|" snapcraft.yaml
sed -i "s/\$SNAPCRAFT_PROJECT_VERSION/${VERSION}/g" snapcraft.yaml
snapcraft pack --destructive-mode --build-for="$arch" --output "$GITHUB_WORKSPACE/godex_${VERSION}_${arch}.snap"
done
- name: Dump Snapcraft logs on failure
if: failure()
run: |
echo "=== Snapcraft logs ==="
log_dir="$HOME/.local/state/snapcraft/log"
if [ -d "$log_dir" ]; then
ls -1t "$log_dir" | head -5
latest_log=$(ls -1t "$log_dir" | head -1)
if [ -n "$latest_log" ]; then
echo "--- $log_dir/$latest_log ---"
cat "$log_dir/$latest_log"
fi
else
echo "No snapcraft log directory found at $log_dir"
fi
- name: Upload Snap to Store
env:
VERSION: ${{ steps.get_tag.outputs.VERSION }}
run: |
snap_files=$(ls *.snap 2>/dev/null || true)
if [ -z "$snap_files" ]; then
echo "No snap files found"
exit 1
fi
for snap_name in $snap_files; do
echo "Uploading $snap_name to Snap Store..."
snapcraft upload "$snap_name" --release "${SNAP_CHANNEL}"
done