name: Build Binary on: workflow_call: jobs: build-frontend: name: Build frontend runs-on: ubuntu-24.04 defaults: run: working-directory: web steps: - name: Checkout repo uses: actions/checkout@v6 - name: Setup bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install --frozen-lockfile - name: Cache dependencies uses: actions/cache@v5 with: path: ~/.bun/install/cache key: ${{ runner.os }}-bun-${{ hashFiles('docs/bun.lockb') }} restore-keys: | ${{ runner.os }}-bun- - name: Build Frontend run: bun run build - name: Upload Web Build Artifact uses: actions/upload-artifact@v6 with: name: web-build path: web/build build: name: Build bili-sync-rs for ${{ matrix.platform.release_for }} needs: build-frontend runs-on: ${{ matrix.platform.os }} strategy: matrix: platform: - release_for: Linux-armv7 os: ubuntu-24.04 target: armv7-unknown-linux-musleabihf bin: bili-sync-rs name: bili-sync-rs-Linux-armv7-musl.tar.gz - release_for: Linux-x86_64 os: ubuntu-24.04 target: x86_64-unknown-linux-musl bin: bili-sync-rs name: bili-sync-rs-Linux-x86_64-musl.tar.gz - release_for: Linux-aarch64 os: ubuntu-24.04 target: aarch64-unknown-linux-musl bin: bili-sync-rs name: bili-sync-rs-Linux-aarch64-musl.tar.gz - release_for: macOS-x86_64 os: macOS-latest target: x86_64-apple-darwin bin: bili-sync-rs name: bili-sync-rs-Darwin-x86_64.tar.gz - release_for: macOS-aarch64 os: macOS-latest target: aarch64-apple-darwin bin: bili-sync-rs name: bili-sync-rs-Darwin-aarch64.tar.gz - release_for: Windows-x86_64 os: windows-latest target: x86_64-pc-windows-msvc bin: bili-sync-rs.exe name: bili-sync-rs-Windows-x86_64.zip steps: - name: Checkout repo uses: actions/checkout@v6 with: fetch-depth: 0 - name: Download Web Build Artifact uses: actions/download-artifact@v8 with: name: web-build path: web/build - name: Read Toolchain Version id: read_rust_toolchain shell: bash run: | channel=$(grep '^channel' rust-toolchain.toml | sed 's/.*= *"\(.*\)"/\1/') echo "value=$channel" >> $GITHUB_OUTPUT - name: Build binary uses: houseabsolute/actions-rust-cross@v1 with: command: build target: ${{ matrix.platform.target }} toolchain: ${{ steps.read_rust_toolchain.outputs.value }} args: "--locked --release" strip: true - name: Package as archive shell: bash run: | cd target/${{ matrix.platform.target }}/release if [[ "${{ matrix.platform.target }}" == "x86_64-pc-windows-msvc" ]]; then 7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} else tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} fi - name: Upload release artifact uses: actions/upload-artifact@v6 with: name: bili-sync-rs-${{ matrix.platform.release_for }} path: | ${{ github.workspace }}/${{ matrix.platform.name }}