- Remove old Docker-based deploy.yml - Add release.yml: builds portable ZIP on tag push, uploads to Gitea - Add build-dist.ps1: downloads embedded Python, installs deps, bundles app - Add scrollbar-gutter: stable to prevent layout shift Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
2.2 KiB
YAML
75 lines
2.2 KiB
YAML
name: Build Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
build-windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Build portable distribution
|
|
shell: pwsh
|
|
run: |
|
|
.\build-dist.ps1 -Version "${{ gitea.ref_name }}"
|
|
|
|
- name: Upload build artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: LedGrab-${{ gitea.ref_name }}-win-x64
|
|
path: build/LedGrab-*.zip
|
|
retention-days: 90
|
|
|
|
- name: Create Gitea release
|
|
shell: pwsh
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
run: |
|
|
$tag = "${{ gitea.ref_name }}"
|
|
$zipFile = Get-ChildItem "build\LedGrab-*.zip" | Select-Object -First 1
|
|
if (-not $zipFile) { throw "ZIP not found" }
|
|
|
|
$baseUrl = "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}"
|
|
$headers = @{
|
|
"Authorization" = "token $env:GITEA_TOKEN"
|
|
"Content-Type" = "application/json"
|
|
}
|
|
|
|
# Create release
|
|
$body = @{
|
|
tag_name = $tag
|
|
name = "LedGrab $tag"
|
|
body = "Portable Windows build — unzip, run ``LedGrab.bat``, open http://localhost:8080"
|
|
draft = $false
|
|
prerelease = ($tag -match '(alpha|beta|rc)')
|
|
} | ConvertTo-Json
|
|
|
|
$release = Invoke-RestMethod -Method Post `
|
|
-Uri "$baseUrl/releases" `
|
|
-Headers $headers -Body $body
|
|
|
|
Write-Host "Created release: $($release.html_url)"
|
|
|
|
# Upload ZIP asset
|
|
$uploadHeaders = @{
|
|
"Authorization" = "token $env:GITEA_TOKEN"
|
|
}
|
|
$uploadUrl = "$baseUrl/releases/$($release.id)/assets?name=$($zipFile.Name)"
|
|
Invoke-RestMethod -Method Post -Uri $uploadUrl `
|
|
-Headers $uploadHeaders `
|
|
-ContentType "application/octet-stream" `
|
|
-InFile $zipFile.FullName
|
|
|
|
Write-Host "Uploaded: $($zipFile.Name)"
|