Skip to content

Build/release

Build/release #74

Workflow file for this run

name: Build/release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ${{ matrix.os }}
env:
ELECTRON_BUILDER_HTTP_TIMEOUT: 6000000
ELECTRON_MIRROR: 'https://npmmirror.com/mirrors/electron/'
GH_TOKEN: ${{ secrets.TOKEN }}
strategy:
matrix:
include:
# macOS ARM64
- os: macos-latest
arch: arm64
addon_name: addon-macos-arm64.node
build_args: '--arm64'
is_primary_builder: true
# macOS Intel
- os: macos-13
arch: x64
addon_name: addon-macos-x64.node
build_args: '--x64'
is_primary_builder: false
# Windows no-cuda
- os: windows-2019
arch: x64
addon_name: addon-windows-no-cuda.node
cuda_version: no-cuda
cuda_opt: generic
is_primary_builder: false
# Windows CUDA 11.8.0 optimized
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1180-optimized.node
cuda_version: 11.8.0
cuda_opt: optimized
is_primary_builder: false
# Windows CUDA 11.8.0 generic
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1180-generic.node
cuda_version: 11.8.0
cuda_opt: generic
is_primary_builder: false
# Windows CUDA 12.2.0 optimized
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1220-optimized.node
cuda_version: 12.2.0
cuda_opt: optimized
is_primary_builder: false
# Windows CUDA 12.2.0 generic
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1220-generic.node
cuda_version: 12.2.0
cuda_opt: generic
is_primary_builder: false
# Windows CUDA 12.4.1 optimized
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1241-optimized.node
cuda_version: 12.4.1
cuda_opt: optimized
is_primary_builder: false
# Windows CUDA 12.4.1 generic
- os: windows-2019
arch: x64
addon_name: addon-windows-cuda-1241-generic.node
cuda_version: 12.4.1
cuda_opt: generic
is_primary_builder: false
steps:
- name: Check out Git repository
uses: actions/checkout@v3
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 20.14.0
# 下载对应的 addon
- name: Download addon from whisper.cpp repo
shell: bash # 指定使用 bash shell
run: |
mkdir -p temp-artifacts
curl -L -o "temp-artifacts/${{ matrix.addon_name }}" \
"https://github.com/buxuku/whisper.cpp/releases/download/latest/${{ matrix.addon_name }}"
curl -L -o "temp-artifacts/addon-windows-no-cuda.node" \
"https://github.com/buxuku/whisper.cpp/releases/download/latest/addon-windows-no-cuda.node"
curl -L -o "temp-artifacts/addon-macos-arm64-coreml.node" \
"https://github.com/buxuku/whisper.cpp/releases/download/latest/addon-macos-arm64-coreml.node"
# 准备 macOS 构建
- name: Prepare macOS addon
if: startsWith(matrix.os, 'macos')
env:
BUILD_PLATFORM: 'darwin'
BUILD_ARCH: '${{ matrix.arch }}'
run: |
cp temp-artifacts/${{ matrix.addon_name }} extraResources/addons/addon.node
cp temp-artifacts/addon-macos-arm64-coreml.node extraResources/addons/addon.coreml.node
# 更新 package.json 添加构建信息
node scripts/inject-build-info.js
# 准备 Windows 构建
- name: Prepare Windows addon
if: matrix.os == 'windows-2019'
env:
BUILD_PLATFORM: 'win32'
BUILD_ARCH: '${{ matrix.arch }}'
CUDA_VERSION: '${{ matrix.cuda_version }}'
CUDA_OPT: '${{ matrix.cuda_opt }}'
run: |
Copy-Item -Path "temp-artifacts/${{ matrix.addon_name }}" -Destination "extraResources/addons/addon.node"
Copy-Item -Path "temp-artifacts/addon-windows-no-cuda.node" -Destination "extraResources/addons/addon-no-cuda.node"
# 更新 package.json 添加构建信息
node scripts/inject-build-info.js
# 构建应用程序
- name: Build/release Electron app - macOS
uses: samuelmeuli/action-electron-builder@v1.6.0
if: startsWith(matrix.os, 'macos')
with:
args: ${{ matrix.build_args }}
github_token: ${{ secrets.TOKEN }}
release: ${{ startsWith(github.ref, 'refs/tags/v') && matrix.is_primary_builder == true }}
- name: Build/release Electron app - Windows
uses: samuelmeuli/action-electron-builder@v1.6.0
if: matrix.os == 'windows-2019'
env:
CUDA_VERSION: ${{ matrix.cuda_version }}
CUDA_OPT: ${{ matrix.cuda_opt }}
with:
github_token: ${{ secrets.TOKEN }}
release: false
max_attempts: 5