mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-31 01:56:02 +00:00
88 lines
2.6 KiB
YAML
88 lines
2.6 KiB
YAML
name: Build Windows installer
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
release_tag:
|
|
description: Existing desktop-v* release to verify after manual asset upload
|
|
required: false
|
|
type: string
|
|
pull_request:
|
|
paths:
|
|
- .github/workflows/build-windows-installer.yml
|
|
- app/**
|
|
- src/**
|
|
- scripts/**
|
|
- package.json
|
|
- package-lock.json
|
|
push:
|
|
tags:
|
|
- 'desktop-v*'
|
|
release:
|
|
types: [published]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
nsis:
|
|
if: ${{ github.event_name != 'release' && !(github.event_name == 'workflow_dispatch' && inputs.release_tag != '') }}
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22.13.0
|
|
cache: npm
|
|
cache-dependency-path: |
|
|
package-lock.json
|
|
app/package-lock.json
|
|
|
|
- name: Install CLI dependencies
|
|
run: npm ci
|
|
|
|
- name: Install desktop dependencies
|
|
run: npm ci --prefix app
|
|
|
|
- name: Test installer verifier
|
|
run: npm --prefix app test -- scripts/verify-windows-installer.test.ts
|
|
|
|
- name: Build NSIS installer
|
|
run: npm --prefix app run package:win
|
|
|
|
- name: Verify installer manifest
|
|
shell: pwsh
|
|
run: |
|
|
if ($env:GITHUB_REF_TYPE -eq 'tag') {
|
|
node app/scripts/verify-windows-installer.mjs --tag $env:GITHUB_REF_NAME
|
|
} else {
|
|
node app/scripts/verify-windows-installer.mjs
|
|
}
|
|
|
|
- name: Upload installer artifact
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: CodeBurn-Windows-Installer
|
|
path: |
|
|
app/release/CodeBurn-Setup-*.exe
|
|
app/release/CodeBurn-Setup-*.exe.blockmap
|
|
if-no-files-found: error
|
|
retention-days: 30
|
|
|
|
verify-release-assets:
|
|
if: ${{ (github.event_name == 'release' && startsWith(github.event.release.tag_name, 'desktop-v')) || (github.event_name == 'workflow_dispatch' && inputs.release_tag != '') }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Verify live desktop release assets
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
RELEASE_TAG: ${{ github.event.release.tag_name || inputs.release_tag }}
|
|
run: |
|
|
gh api "repos/${{ github.repository }}/releases/tags/$RELEASE_TAG" \
|
|
--jq '[.assets[].name]' > "$RUNNER_TEMP/release-assets.json"
|
|
node app/scripts/verify-windows-installer.mjs \
|
|
--tag "$RELEASE_TAG" \
|
|
--release-assets "$RUNNER_TEMP/release-assets.json"
|