Files
nas-media-player/.github/workflows/build.yml
2026-04-19 10:54:17 +08:00

80 lines
2.1 KiB
YAML

name: Build Multi-Arch Binaries (Direct Release Upload)
on:
workflow_dispatch:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build:
name: Build ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- arch: x86_64
platform: linux/amd64
- arch: arm64
platform: linux/arm64
- arch: armhf
platform: linux/arm/v7
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Build binary (Ubuntu 20.04)
run: |
docker run --rm \
--platform=${{ matrix.platform }} \
-v "${{ github.workspace }}:/workspace" \
-w /workspace \
ubuntu:20.04 \
bash -euxo pipefail -c '
apt-get update
apt-get install -y \
python3 \
python3-pip \
python3-dev \
build-essential \
binutils
pip3 install --upgrade pip
pip3 install \
pyinstaller \
fastapi \
uvicorn \
aiofiles \
pydantic \
python-multipart
pyinstaller nas-media-player.spec --clean --noconfirm
mkdir -p dist_release
cp dist/nas-media-player dist_release/nas-media-player-${{ matrix.arch }}
chmod +x dist_release/nas-media-player-${{ matrix.arch }}
'
- name: Generate timestamp tag (shared logic)
id: tag
run: |
echo "TAG=build-$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
- name: Upload to GitHub Release (direct)
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.TAG }}
name: Release ${{ steps.tag.outputs.TAG }}
files: dist_release/nas-media-player-${{ matrix.arch }}
generate_release_notes: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}