Reset to parent
All checks were successful
Queue Release Build / prepare (push) Successful in 19s
Queue Release Build / build-windows (push) Successful in 24m35s
Queue Release Build / build-linux (push) Successful in 39m23s
Queue Release Build / finalize (push) Successful in 4m9s

This commit is contained in:
2026-03-11 00:33:05 +01:00
parent c673771035
commit bb087cd2d8
6 changed files with 34546 additions and 26 deletions

View File

@@ -6,21 +6,20 @@ on:
workflow_dispatch:
jobs:
release:
runs-on: windows
prepare:
runs-on: ubuntu-latest
container: node:22
defaults:
run:
shell: powershell
outputs:
release_tag: ${{ steps.version.outputs.release_tag }}
release_name: ${{ steps.version.outputs.release_name }}
release_version: ${{ steps.version.outputs.release_version }}
release_id: ${{ steps.release.outputs.release_id }}
release_download_url: ${{ steps.release.outputs.release_download_url }}
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Install dependencies
run: |
npm ci --include=dev
npm --prefix server ci --include=dev
- name: Resolve release version
id: version
@@ -40,16 +39,113 @@ jobs:
--body "Automated draft release from ${{ github.ref_name }} @ ${{ github.sha }}"
--write-output
build-linux:
needs: prepare
runs-on: ubuntu-latest
container: node:22
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Install dependencies
env:
NODE_ENV: development
run: |
npm ci
cd server && npm ci
- name: Set CI release version
run: >
node tools/set-release-version.js
--version "${{ steps.version.outputs.release_version }}"
--version "${{ needs.prepare.outputs.release_version }}"
- name: Build application
run: |
npx esbuild node_modules/@timephy/rnnoise-wasm/dist/NoiseSuppressorWorklet.js --bundle --format=esm --outfile=public/rnnoise-worklet.js
npx ng build --configuration production --base-href='./'
npx --package typescript tsc -p tsconfig.electron.json
cd server
node ../tools/sync-server-build-version.js
npx --package typescript tsc
- name: Build Linux assets
run: npm run release:build:linux
run: |
npx electron-builder --linux --publish never
node tools/package-server-executable.js --target node18-linux-x64 --output metoyou-server-linux-x64
- name: Upload Linux assets
env:
GITEA_RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: >
node tools/gitea-release.js upload-built-assets
--server-url "${{ github.server_url }}"
--repository "${{ github.repository }}"
--release-id "${{ needs.prepare.outputs.release_id }}"
--dist-electron dist-electron
--dist-server dist-server
build-windows:
needs: prepare
runs-on: windows
defaults:
run:
shell: powershell
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Install dependencies
env:
NODE_ENV: development
run: |
npm ci
npm ci --prefix server
- name: Set CI release version
run: >
node tools/set-release-version.js
--version "${{ needs.prepare.outputs.release_version }}"
- name: Build application
run: |
npx esbuild node_modules/@timephy/rnnoise-wasm/dist/NoiseSuppressorWorklet.js --bundle --format=esm --outfile=public/rnnoise-worklet.js
npx ng build --configuration production --base-href='./'
npx --package typescript tsc -p tsconfig.electron.json
Push-Location server
node ../tools/sync-server-build-version.js
npx --package typescript tsc
Pop-Location
- name: Build Windows assets
run: npm run release:build:win
run: |
npx electron-builder --win --publish never
node tools/package-server-executable.js --target node18-win-x64 --output metoyou-server-win-x64.exe
- name: Upload Windows assets
env:
GITEA_RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: >
node tools/gitea-release.js upload-built-assets
--server-url "${{ github.server_url }}"
--repository "${{ github.repository }}"
--release-id "${{ needs.prepare.outputs.release_id }}"
--dist-electron dist-electron
--dist-server dist-server
finalize:
needs: [prepare, build-linux, build-windows]
runs-on: ubuntu-latest
container: node:22
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Install dependencies
run: npm ci --omit=dev
- name: Download previous manifest
env:
@@ -66,16 +162,16 @@ jobs:
node tools/generate-release-manifest.js
--existing dist-electron/release-manifest.previous.json
--manifest dist-electron/release-manifest.json
--feed-url "${{ steps.release.outputs.release_download_url }}"
--version "${{ steps.version.outputs.release_version }}"
--feed-url "${{ needs.prepare.outputs.release_download_url }}"
--version "${{ needs.prepare.outputs.release_version }}"
- name: Upload assets
- name: Upload release manifest
env:
GITEA_RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: >
node tools/gitea-release.js upload-built-assets
--server-url "${{ github.server_url }}"
--repository "${{ github.repository }}"
--release-id "${{ steps.release.outputs.release_id }}"
--release-id "${{ needs.prepare.outputs.release_id }}"
--dist-electron dist-electron
--dist-server dist-server
--dist-server dist-server

1
.gitignore vendored
View File

@@ -14,7 +14,6 @@ yarn-error.log
dist-electron
node_modules/*
*server/node_modules/*
*package-lock.json
.angular
# IDEs and editors
.idea/

31565
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,11 +11,11 @@
"prebuild": "npm run bundle:rnnoise",
"prestart": "npm run bundle:rnnoise",
"bundle:rnnoise": "esbuild node_modules/@timephy/rnnoise-wasm/dist/NoiseSuppressorWorklet.js --bundle --format=esm --outfile=public/rnnoise-worklet.js",
"start": "ng serve",
"build": "ng build",
"start": "npm run ng serve",
"build": "npm run ng build",
"build:electron": "tsc -p tsconfig.electron.json",
"build:all": "npm run build && npm run build:electron && cd server && npm run build",
"build:prod": "ng build --configuration production --base-href='./'",
"build:prod": "npm run ng build --configuration production --base-href='./'",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"server:build": "cd server && npm run build",

2863
server/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,10 +4,7 @@ import path from 'path';
import fs from 'fs';
import { createServer as createHttpServer } from 'http';
import { createServer as createHttpsServer } from 'https';
import {
resolveCertificateDirectory,
resolveEnvFilePath
} from './runtime-paths';
import { resolveCertificateDirectory, resolveEnvFilePath } from './runtime-paths';
// Load .env from project root (one level up from server/)
dotenv.config({ path: resolveEnvFilePath() });