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

128 lines
4.7 KiB
YAML
Raw Permalink Normal View History

name: Build Luncher for Windows/AMD64/Nightly
on:
workflow_dispatch: {}
schedule:
- cron: "0 0 * * *"
jobs:
build:
runs-on: alpine-1.20
steps:
- name: Setup Environment
run: |
export LOCAL_BIN="$HOME/.local/bin"
mkdir -p "$LOCAL_BIN"
export PATH="$PATH:$LOCAL_BIN:$HOME/go/bin"
- name: Verify Tools
run: |
command -v go || { echo "::error::Go not found"; exit 1; }
command -v git || { echo "::error::Git not found"; exit 1; }
command -v curl || { echo "::error::Curl not found"; exit 1; }
command -v x86_64-w64-mingw32-windres || { echo "::error::Mingw-w64 not found"; exit 1; }
command -v magick || { echo "::error::ImageMagick not found"; exit 1; }
[ -f "$HOME/go/bin/rsrc" ] || { echo "::error::rsrc not found"; exit 1; }
- name: Clone Repositories
run: |
git clone https://weforge.xyz/Spitfire/Publisher.git
git clone https://weforge.xyz/Spitfire/Luncher.git
- name: Generate Manifest Files
shell: bash
run: |
cd Publisher
# Run win_manifest_gen.go from the Publisher repo 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=true
# Copy generated files (app.manifest and app.rc) to the workspace root.
cp app.manifest ../Luncher/
cp app.rc ../Luncher/
cd ..
- name: Build Windows Luncher
working-directory: ./Luncher
run: |
curl -fL "https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.png" -o icon.png
magick icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
echo '1 ICON "icon.ico"' >> app.rc
x86_64-w64-mingw32-windres app.rc -O coff -o app.syso
$HOME/go/bin/rsrc -manifest app.manifest -o rsrc.syso
# Verify syso files exist
ls -la *.syso
CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 \
go build -ldflags "-s -w -H=windowsgui" -o spitfire-luncher.exe
# Verify executable metadata
exiftool spitfire-luncher.exe
upx --best spitfire-luncher.exe
- name: Setup SSH Key
env:
SF_SSH_KEY: ${{ secrets.SF_SSH_KEY }}
run: |
echo "${SF_SSH_KEY}" > sf_key
chmod 600 sf_key
- name: Download APPINDEX
env:
SF_USER: ${{ secrets.SF_USER }}
run: |
scp -i sf_key -vvv -o IdentitiesOnly=yes "$SF_USER@frs.sourceforge.net:/home/frs/project/spitfire-browser/APPINDEX" APPINDEX || true
- name: Prepare Artifact
run: |
DATE=$(date +'%Y.%m.%d')
mkdir -p upload/luncher/amd64/nightly/$DATE
tar -czf upload/luncher/amd64/nightly/$DATE/spitfire-luncher-amd64-nightly-windows.tar.gz -C Luncher spitfire-luncher.exe
echo "$DATE" > date.txt
- name: Upload Artifact
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
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" \
--platform "windows" \
--icon "https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.svg" \
--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
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
if: always()
run: |
rm -rf sf_key upload APPINDEX date.txt