Skip to content

build

build #5

Workflow file for this run

name: build
# macOS ve Linux kurulum dosyalarını üretir.
#
# Neden CI: macOS derlemesi YALNIZCA macOS'ta yapılabilir — electron-builder
# bunu Windows'ta açıkça reddediyor. Yani .dmg başka türlü hiç çıkamaz. Linux
# aynı zorunlulukta değil ama aynı yerde üretmek tutarlı.
#
# Neden Windows burada PAKETLENMİYOR: Windows kurulumu, Dynamic Lighting'in
# arka plan kimliği için kendi imzaladığı bir sertifika üretiyor
# (scripts/prepare-identity.js). Koşucunun PowerShell'i 'Cert:' sürücüsünü
# açamıyor, dolayısıyla burada üretilen bir Windows kurulumu o kimlikten
# YOKSUN olurdu — yerelde üretilenden farklı bir ürün. Windows'un zaten
# çalışan ve GPU öz testiyle doğrulanan bir yerel derleme yolu var; burada
# yalnız denetimleri koşuyoruz.
#
# GPU öz testi CI'da YOK — gerekçesi tests.yml'de. Yerine GPU gerektirmeyen
# ama mac/linux için asıl bilinmezi ölçen bir denetim var: audify'ın native
# ikilisi o platformda yükleniyor mu?
#
# Intel Mac (x64) bu sürümde yok: Apple geçişi tamamladı ve GitHub'ın Intel
# koşucuları saatlerce kuyrukta bekliyor. ROADMAP'te gerekçesiyle yazılı.
on:
workflow_dispatch:
push:
tags: ['v*']
jobs:
checks:
name: checks (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
# audify'ın librtaudio'su bu paylaşımlı kütüphanelere bağlanıyor.
# Masaüstü kurulumlarında zaten varlar; koşucu imajında yoklar.
- name: Linux audio libraries
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libpulse0 libarchive-tools
sudo apt-get install -y libasound2t64 || sudo apt-get install -y libasound2
- name: Install
run: npm ci
# macOS ve Linux için asıl bilinmez bu: ses motoru orada yükleniyor mu?
- name: Audio runtime check
run: npm run check:runtime
- name: Unit tests
run: node scripts/test.js
package:
name: ${{ matrix.label }}
needs: checks
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- label: macos-arm64
os: macos-latest
script: dist:mac:arm64
- label: linux-x64
os: ubuntu-latest
script: dist:linux
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
- name: Linux packaging dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libpulse0 libarchive-tools
sudo apt-get install -y libasound2t64 || sudo apt-get install -y libasound2
- name: Install
run: npm ci
- name: Package
run: npm run ${{ matrix.script }}
env:
# İmzasız çıkıyoruz (Apple Developer Program alınmadı). Bu değişken
# olmadan electron-builder anahtarlıkta olmayan bir sertifika arar.
CSC_IDENTITY_AUTO_DISCOVERY: false
- name: Collect installers
shell: bash
run: |
mkdir -p out
find dist -maxdepth 1 -type f \
\( -name '*.dmg' -o -name '*.zip' -o -name '*.AppImage' -o -name '*.deb' \) \
-exec cp {} out/ \;
ls -la out
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.label }}
path: out/*
if-no-files-found: error
retention-days: 14