Files
2026-05-26 23:10:21 +10:00

235 lines
6.2 KiB
YAML

name: Build Dependencies
on:
workflow_dispatch:
push:
branches:
- master
paths-ignore:
- '**.md'
- '**.txt'
permissions:
contents: write
jobs:
build-sources:
name: "📝 Sources"
runs-on: ubuntu-22.04
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
- name: Install Packages
run: |
sudo apt-get update
sudo apt-get install -y wget zip
- name: Download Sources
run: ./download-sources.sh
- name: Create Archive
run: zip -r deps-sources.zip deps-build
- name: Upload Artifact
uses: actions/upload-artifact@v6
with:
name: deps-sources
path: deps-sources.zip
compression-level: 0
if-no-files-found: error
build-windows:
name: "💻 Windows"
needs: build-sources
runs-on: windows-2025-vs2026
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
- name: Download Sources
uses: actions/download-artifact@v6
with:
name: deps-sources
path: ./deps-sources
- name: Extract Sources
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" x deps-sources/deps-sources.zip
- name: Build x64 Dependencies
run: .\build-dependencies-windows-x64.bat -skip-download -skip-cleanup
- name: Build ARM64 Dependencies
run: .\build-dependencies-windows-arm64.bat -skip-download -skip-cleanup
- name: Create Archives
shell: cmd
run: |
"C:\Program Files\7-Zip\7z.exe" a -r deps-windows-x64.7z windows-x64
"C:\Program Files\7-Zip\7z.exe" a -r deps-windows-arm64.7z windows-arm64
- name: Upload Artifacts
uses: actions/upload-artifact@v6
with:
name: deps-windows
path: |
deps-windows-x64.7z
deps-windows-arm64.7z
compression-level: 0
if-no-files-found: error
build-macos:
name: "🍎 MacOS"
needs: build-sources
runs-on: macos-26
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
- name: Download Sources
uses: actions/download-artifact@v6
with:
name: deps-sources
path: ./deps-sources
- name: Extract Sources
run: unzip deps-sources/deps-sources.zip
- name: Use Xcode 26.5
run: sudo xcode-select -s /Applications/Xcode_26.5.app
- name: Build Dependencies
run: ./build-dependencies-mac.sh -skip-download macos-universal
- name: Create Archive
run: tar -cJf deps-macos-universal.tar.xz macos-universal
- name: Upload Artifact
uses: actions/upload-artifact@v6
with:
name: deps-macos-universal
path: deps-macos-universal.tar.xz
compression-level: 0
if-no-files-found: error
build-linux-x64:
name: "🐧 Linux x64"
needs: build-sources
runs-on: ubuntu-22.04
timeout-minutes: 240
steps:
- uses: actions/checkout@v6
- name: Download Sources
uses: actions/download-artifact@v6
with:
name: deps-sources
path: ./deps-sources
- name: Extract Sources
run: unzip deps-sources/deps-sources.zip
- name: Install Packages
run: ./install-packages-linux.sh
- name: Build Dependencies
run: ./build-dependencies-linux.sh -skip-download linux-x64
- name: Build FFmpeg
run: ./build-ffmpeg-linux.sh linux-x64
- name: Create Archive
run: tar -cJf deps-linux-x64.tar.xz linux-x64
- name: Upload Artifact
uses: actions/upload-artifact@v6
with:
name: deps-linux-x64
path: deps-linux-x64.tar.xz
compression-level: 0
if-no-files-found: error
build-linux-cross:
name: "🐧 Linux ${{ matrix.arch }}"
needs: [build-sources, build-linux-x64]
runs-on: ubuntu-22.04
container:
image: ghcr.io/duckstation/cross-build-${{ matrix.arch }}:latest
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
arch: ["arm64", "armhf"]
steps:
- uses: actions/checkout@v6
- name: Download Sources
uses: actions/download-artifact@v6
with:
name: deps-sources
path: ./deps-sources
- name: Extract Sources
run: unzip deps-sources/deps-sources.zip
- name: Download x64 Artifact
uses: actions/download-artifact@v6
with:
name: deps-linux-x64
path: ./deps-linux-x64
- name: Extract x64 Artifact
run: |
tar -xvf deps-linux-x64/deps-linux-x64.tar.xz
- name: Build Dependencies
run: |
./build-dependencies-linux-cross.sh -skip-download "linux-x64" "${{ matrix.arch }}" "/${{ matrix.arch }}-chroot" "linux-cross-${{matrix.arch}}"
- name: Create Archive
run: tar -cJf "deps-linux-cross-${{ matrix.arch }}.tar.xz" "linux-cross-${{matrix.arch}}"
- name: Upload Artifact
uses: actions/upload-artifact@v6
with:
name: deps-linux-cross-${{ matrix.arch }}
path: deps-linux-cross-${{ matrix.arch }}.tar.xz
compression-level: 0
if-no-files-found: error
create-release:
name: "📤 Create Release"
if: github.ref == 'refs/heads/master'
needs: [build-windows, build-macos, build-linux-x64, build-linux-cross, build-sources]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Get Current Date
id: date
run: echo "date=$(date +'%Y%m%d')" >> "$GITHUB_OUTPUT"
- name: Download All Artifacts
uses: actions/download-artifact@v6
with:
path: artifacts
- name: Create Release
env:
GH_TOKEN: ${{ github.token }}
run: |
TAG="release-${{ steps.date.outputs.date }}"
gh release delete "$TAG" --yes --cleanup-tag || true
gh release create "$TAG" \
--title "$TAG" \
--notes "Dependencies built on $(date +'%Y-%m-%d') from commit ${{ github.sha }}." \
artifacts/deps-windows/deps-windows-x64.7z \
artifacts/deps-windows/deps-windows-arm64.7z \
artifacts/deps-macos-universal/deps-macos-universal.tar.xz \
artifacts/deps-linux-x64/deps-linux-x64.tar.xz \
artifacts/deps-linux-cross-arm64/deps-linux-cross-arm64.tar.xz \
artifacts/deps-linux-cross-armhf/deps-linux-cross-armhf.tar.xz \
artifacts/deps-sources/deps-sources.zip