mirror of
https://github.com/xeghosted/OrbisForge.git
synced 2026-10-06 09:00:41 +02:00
Add GitHub Actions CI: generate+build every target type, plus a Windows GUI build check
This commit is contained in:
1 parent
96225e370e
commit
ff8db35934
1 file changed
+100
@@ -0,0 +1,100 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
generate-and-build:
|
||||
name: Generate + build (${{ matrix.name }})
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: ci_exe
|
||||
type: exe
|
||||
extra_args: ""
|
||||
artifact: build/eboot.bin
|
||||
- name: ci_prx
|
||||
type: prx
|
||||
extra_args: ""
|
||||
artifact: build/ci_prx.prx
|
||||
- name: ci_sprx
|
||||
type: sprx
|
||||
extra_args: ""
|
||||
artifact: build/ci_sprx.sprx
|
||||
- name: ci_pkg
|
||||
type: exe
|
||||
extra_args: "--pkg"
|
||||
artifact: "build/pkg_root/*.pkg"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install build tools
|
||||
run: sudo apt-get update && sudo apt-get install -y clang lld cmake libicu-dev
|
||||
|
||||
# PkgTool.Core (bundled in the OpenOrbis release, used for the --pkg case) is a
|
||||
# published .NET binary that needs libssl.so.1.1 -- current Ubuntu runner images
|
||||
# only ship libssl3. Same fix used for the real toolchain install.
|
||||
- name: Install libssl1.1 (PkgTool.Core dependency)
|
||||
run: |
|
||||
curl -sLO http://old-releases.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb
|
||||
sudo apt-get install -y ./libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb
|
||||
|
||||
- name: Install .NET SDK
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Install OpenOrbis PS4 Toolchain
|
||||
run: |
|
||||
set -e
|
||||
URL=$(curl -s https://api.github.com/repos/OpenOrbis/OpenOrbis-PS4-Toolchain/releases/latest | grep browser_download_url | cut -d '"' -f4)
|
||||
curl -L -o toolchain.tar.gz "$URL"
|
||||
mkdir -p /tmp/oo-extract
|
||||
tar -xzf toolchain.tar.gz -C /tmp/oo-extract
|
||||
mv /tmp/oo-extract/OpenOrbis/PS4Toolchain "$HOME/OpenOrbis-PS4-Toolchain"
|
||||
echo "OO_PS4_TOOLCHAIN=$HOME/OpenOrbis-PS4-Toolchain" >> "$GITHUB_ENV"
|
||||
echo "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build OrbisForge CLI
|
||||
run: dotnet publish src/OrbisForge.Cli -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true -o publish/linux-x64
|
||||
|
||||
- name: Generate project
|
||||
run: |
|
||||
chmod +x publish/linux-x64/orbisforge
|
||||
./publish/linux-x64/orbisforge new --name ${{ matrix.name }} --type ${{ matrix.type }} --output /tmp/gen ${{ matrix.extra_args }}
|
||||
|
||||
- name: Build generated project
|
||||
working-directory: /tmp/gen/${{ matrix.name }}
|
||||
run: bash build.sh
|
||||
|
||||
- name: Build .pkg target
|
||||
if: matrix.extra_args == '--pkg'
|
||||
working-directory: /tmp/gen/${{ matrix.name }}
|
||||
run: cmake --build build --target ${{ matrix.name }}_pkg
|
||||
|
||||
- name: Verify artifact
|
||||
working-directory: /tmp/gen/${{ matrix.name }}
|
||||
run: ls -la ${{ matrix.artifact }}
|
||||
|
||||
build-gui:
|
||||
name: Build solution (Windows, incl. GUI)
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install .NET SDK
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Build full solution
|
||||
run: dotnet build OrbisForge.slnx
|
||||
Reference in new issue
Block a user