Publisher/.forgejo/workflows/Luncher_Windows-AMD64-Nightly.yaml

153 lines
5.6 KiB
YAML
Raw Normal View History

name: Build Luncher for Windows/AMD64/Nightly
on:
workflow_dispatch: {}
schedule:
- cron: "0 0 * * *"
jobs:
build-windows:
runs-on: win-10
steps:
- name: Check rsrc tool
shell: bash
run: |
rsrc --version || echo "rsrc tool not available"
- name: Check windres availability
shell: bash
run: |
windres --version || echo "windres not available, please install mingw"
- name: Check ImageMagick version
shell: powershell
run: |
magick -version
- name: Clone Publisher repo and Generate Manifest Files
shell: bash
run: |
git clone https://weforge.xyz/Spitfire/Publisher.git
cd Publisher
# Run win_manifest_gen.go to generate manifest files.
go run win_manifest_gen.go \
--name "Spitfire Luncher" \
--company "Spitfire Browser" \
--description "Official Luncher for Spitfire Browser" \
--official "https://spitfirebrowser.xyz" \
--dev "https://weforge.xyz" \
--requireAdmin=false
# Copy generated files (app.manifest and app.rc) to the workspace root.
cp app.manifest ../
cp app.rc ../
cd ..
- name: Clone Luncher, Convert Icon, and Build Spitfire Luncher
shell: bash
run: |
set -e
git clone https://weforge.xyz/Spitfire/Luncher.git
cd Luncher
# Copy the generated manifest files from the workspace root.
cp ../app.manifest .
cp ../app.rc .
# Download the icon PNG (530x530) from the dynamic URL.
curl -fL "https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.png?raw=true" -o icon.png
ls -l icon.png
head -n 10 icon.png || true
# Convert the PNG to a Windows ICO file with multiple sizes using ImageMagick.
magick icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
# Prepend an ICON directive to app.rc so the icon is embedded.
echo '1 ICON "icon.ico"' | cat - app.rc > tmp.rc && mv tmp.rc app.rc
# Compile the resource script into a .syso file using windres.
windres app.rc -O coff -o resource.syso
# Build the Luncher executable; resource.syso is automatically linked.
CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o spitfire-luncher.exe
# Move the built executable one level up for packaging.
mv spitfire-luncher.exe ..
cd ..
- name: Setup SSH Key for SourceForge
shell: bash
env:
SF_SSH_KEY: ${{ secrets.SF_SSH_KEY }}
run: |
echo "$SF_SSH_KEY" | sed 's/\\n/\n/g' | tr -d '\r' > sf_key
chmod 600 sf_key
- name: Download existing APPINDEX
shell: bash
env:
SF_USER: ${{ secrets.SF_USER }}
run: |
scp -i sf_key -o IdentitiesOnly=yes "$SF_USER@frs.sourceforge.net:/home/frs/project/spitfire-browser/APPINDEX" APPINDEX || true
- name: Download logo image for luncher (with temporary link)
shell: bash
run: |
mkdir -p spm
curl -L -o spm/logo.png "https://weforge.xyz/Spitfire/Branding/raw/commit/f1a70addd443f91b98bea8ff9cc924af1ac67600/logo6-only-plane.png"
- name: Compress artifact
shell: bash
run: |
tar -czf spitfire-luncher-amd64-nightly-windows.tar.gz spitfire-luncher.exe spm/logo.png
ls -l
- name: Prepare luncher folder structure and move artifact
shell: bash
run: |
DATE=$(date +'%Y.%m.%d')
mkdir -p upload/luncher/amd64/nightly/$DATE
mv spitfire-luncher-amd64-nightly-windows.tar.gz upload/luncher/amd64/nightly/$DATE/
echo "$DATE" > date.txt
- name: Upload luncher artifact to SourceForge
shell: bash
env:
SF_USER: ${{ secrets.SF_USER }}
run: |
DATE=$(cat date.txt)
scp -r -i sf_key -o IdentitiesOnly=yes upload/luncher "$SF_USER@frs.sourceforge.net:/home/frs/project/spitfire-browser/"
- name: Update APPINDEX for Luncher
shell: bash
run: |
DATE=$(cat date.txt)
cd Publisher
cp ../APPINDEX . || true
go run update_appindex.go \
--name "spitfire-luncher" \
--release "nightly" \
--version "$DATE" \
--arch "amd64" \
--description "Nightly build" \
--url "https://spitfirebrowser.xyz/" \
--license "AGPL-3.0" \
--origin "luncher" \
--maintainer "Internet Addict" \
--dependencies "" \
--platform "windows" \
--icon "https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.svg" \
--screenshots "https://spitfirebrowser.xyz/static/images/screenshots/1.png" \
--tags "browser,experimental,testing" \
--notes "Automated build of Spitfire" \
--remotePath "luncher/amd64/nightly/$DATE/spitfire-luncher-amd64-nightly-windows.tar.gz" \
--compressedFile "spitfire-luncher-amd64-nightly-windows.tar.gz" \
--uncompressedFile "spitfire-luncher.exe"
cp APPINDEX ../
- name: Upload updated APPINDEX for Luncher
shell: bash
env:
2025-02-18 18:42:47 +00:00
SF_USER: ${{ secrets.SF_USER }}
run: |
scp -i sf_key -o IdentitiesOnly=yes APPINDEX "$SF_USER@frs.sourceforge.net:/home/frs/project/spitfire-browser/APPINDEX"
- name: Cleanup SSH Key
if: always()
shell: bash
run: |
rm -f sf_key