more aur release testing to prevent any hash verification issues going forward

This commit is contained in:
Egor 2025-08-23 13:19:48 -07:00
parent c1b7c7f73e
commit f2a7ce37f2
3 changed files with 57 additions and 7 deletions

View file

@ -11,12 +11,22 @@ on:
description: 'Tag version to release to AUR (e.g., v0.5.1)' description: 'Tag version to release to AUR (e.g., v0.5.1)'
required: true required: true
type: string type: string
pkgrel:
description: 'Package release number (default: 1)'
required: false
type: string
default: '1'
workflow_call: workflow_call:
inputs: inputs:
tag: tag:
description: 'Tag version to release to AUR' description: 'Tag version to release to AUR'
required: true required: true
type: string type: string
pkgrel:
description: 'Package release number (default: 1)'
required: false
type: string
default: '1'
jobs: jobs:
aur-release: aur-release:
@ -81,9 +91,48 @@ jobs:
- name: Download artifacts and calculate SHA256s - name: Download artifacts and calculate SHA256s
id: sha_calc id: sha_calc
run: | run: |
# Download AppImage and desktop file, then calculate SHA256s # Download AppImage and desktop file with retry logic, then calculate SHA256s
curl -L -o "friendly-kobold-${{ steps.release_info.outputs.version }}.AppImage" "${{ steps.release_info.outputs.appimage_url }}" max_attempts=3
curl -L -o "friendly-kobold.desktop" "https://raw.githubusercontent.com/lone-cloud/friendly-kobold/${{ inputs.tag }}/assets/friendly-kobold.desktop"
# Download AppImage with retry
for attempt in $(seq 1 $max_attempts); do
echo "Attempt $attempt: Downloading AppImage..."
if curl -L -o "friendly-kobold-${{ steps.release_info.outputs.version }}.AppImage" "${{ steps.release_info.outputs.appimage_url }}"; then
echo "✅ AppImage downloaded successfully"
break
else
echo "❌ AppImage download failed, waiting 10 seconds..."
sleep 10
if [ $attempt -eq $max_attempts ]; then
echo "❌ Failed to download AppImage after $max_attempts attempts"
exit 1
fi
fi
done
# Download desktop file with retry
for attempt in $(seq 1 $max_attempts); do
echo "Attempt $attempt: Downloading desktop file..."
if curl -L -o "friendly-kobold.desktop" "https://raw.githubusercontent.com/lone-cloud/friendly-kobold/${{ inputs.tag }}/assets/friendly-kobold.desktop"; then
echo "✅ Desktop file downloaded successfully"
break
else
echo "❌ Desktop file download failed, waiting 10 seconds..."
sleep 10
if [ $attempt -eq $max_attempts ]; then
echo "❌ Failed to download desktop file after $max_attempts attempts"
exit 1
fi
fi
done
# Verify file sizes
appimage_size=$(stat -c%s "friendly-kobold-${{ steps.release_info.outputs.version }}.AppImage")
echo "AppImage size: $appimage_size bytes"
if [ $appimage_size -lt 50000000 ]; then # Less than 50MB is suspicious
echo "❌ AppImage seems too small ($appimage_size bytes), possible download issue"
exit 1
fi
SHA256_APPIMAGE=$(sha256sum "friendly-kobold-${{ steps.release_info.outputs.version }}.AppImage" | cut -d' ' -f1) SHA256_APPIMAGE=$(sha256sum "friendly-kobold-${{ steps.release_info.outputs.version }}.AppImage" | cut -d' ' -f1)
SHA256_DESKTOP=$(sha256sum "friendly-kobold.desktop" | cut -d' ' -f1) SHA256_DESKTOP=$(sha256sum "friendly-kobold.desktop" | cut -d' ' -f1)
@ -100,7 +149,7 @@ jobs:
# Maintainer: ${{ steps.release_info.outputs.author_name }} <${{ steps.release_info.outputs.author_email }}> # Maintainer: ${{ steps.release_info.outputs.author_name }} <${{ steps.release_info.outputs.author_email }}>
pkgname=friendly-kobold pkgname=friendly-kobold
pkgver=${{ steps.release_info.outputs.version }} pkgver=${{ steps.release_info.outputs.version }}
pkgrel=3 pkgrel=${{ inputs.pkgrel || '1' }}
pkgdesc="A desktop app for running Large Language Models locally" pkgdesc="A desktop app for running Large Language Models locally"
arch=('x86_64') arch=('x86_64')
url="https://github.com/lone-cloud/friendly-kobold" url="https://github.com/lone-cloud/friendly-kobold"
@ -167,7 +216,7 @@ jobs:
pkgbase = friendly-kobold pkgbase = friendly-kobold
pkgdesc = A desktop app for running Large Language Models locally pkgdesc = A desktop app for running Large Language Models locally
pkgver = ${{ steps.release_info.outputs.version }} pkgver = ${{ steps.release_info.outputs.version }}
pkgrel = 3 pkgrel = ${{ inputs.pkgrel || '1' }}
url = https://github.com/lone-cloud/friendly-kobold url = https://github.com/lone-cloud/friendly-kobold
arch = x86_64 arch = x86_64
license = AGPL-3.0-or-later license = AGPL-3.0-or-later
@ -193,7 +242,7 @@ jobs:
commit_username: ${{ steps.release_info.outputs.author_name }} commit_username: ${{ steps.release_info.outputs.author_name }}
commit_email: ${{ steps.release_info.outputs.author_email }} commit_email: ${{ steps.release_info.outputs.author_email }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: 'Update to ${{ steps.release_info.outputs.version }}' commit_message: "Update to ${{ steps.release_info.outputs.version }}-${{ inputs.pkgrel || '1' }}"
ssh_keyscan_types: rsa,ecdsa,ed25519 ssh_keyscan_types: rsa,ecdsa,ed25519
- name: Create AUR release summary - name: Create AUR release summary

View file

@ -161,4 +161,5 @@ jobs:
uses: ./.github/workflows/aur-release.yml uses: ./.github/workflows/aur-release.yml
with: with:
tag: ${{ github.ref_name }} tag: ${{ github.ref_name }}
pkgrel: '1'
secrets: inherit secrets: inherit

View file

@ -1,7 +1,7 @@
{ {
"name": "friendly-kobold", "name": "friendly-kobold",
"productName": "Friendly Kobold", "productName": "Friendly Kobold",
"version": "0.6.2", "version": "0.6.3",
"description": "A desktop app for running Large Language Models locally", "description": "A desktop app for running Large Language Models locally",
"main": "out/main/index.js", "main": "out/main/index.js",
"homepage": "./", "homepage": "./",