summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorDavid Chavez <david@dcvz.io>2022-11-07 20:34:03 +0100
committerGitHub <noreply@github.com>2022-11-07 20:34:03 +0100
commit2c6c1d2e46c0ae3323bdbbba4701d1dc370d3caf (patch)
tree2b5d7fbd0dfc568ebaae9111fa4a6730268c40ca /.github
parent92b1730237e29a0e722404c6bd86e5675dc929c7 (diff)
[CI] Add Github build pipeline (#1688)
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/apt-deps.txt1
-rw-r--r--.github/workflows/generate-builds.yml246
-rw-r--r--.github/workflows/gtar2
-rw-r--r--.github/workflows/macports-deps.txt1
4 files changed, 250 insertions, 0 deletions
diff --git a/.github/workflows/apt-deps.txt b/.github/workflows/apt-deps.txt
new file mode 100644
index 000000000..2a12d368c
--- /dev/null
+++ b/.github/workflows/apt-deps.txt
@@ -0,0 +1 @@
+libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev ninja-build
diff --git a/.github/workflows/generate-builds.yml b/.github/workflows/generate-builds.yml
new file mode 100644
index 000000000..e20fd3c09
--- /dev/null
+++ b/.github/workflows/generate-builds.yml
@@ -0,0 +1,246 @@
+name: generate-builds
+on:
+ push:
+ pull_request:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+jobs:
+ extract-assets:
+ runs-on: [ self-hosted, asset-builder ]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Extract assets
+ run: |
+ cp ../../../ZELOOTD.z64 OTRExporter/baserom_non_mq.z64
+ cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
+ cmake --build build-cmake --target ExtractAssets --config Release
+ zip -r assets.zip soh/assets
+ - uses: actions/upload-artifact@v3
+ with:
+ name: assets
+ path: assets.zip
+ retention-days: 1
+ build-macos:
+ needs: extract-assets
+ runs-on: macos-12
+ steps:
+ - uses: actions/checkout@v2
+ - name: ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: ${{ runner.os }}-ccache
+ - name: Install gtar wrapper
+ run: |
+ sudo mv /usr/local/bin/gtar /usr/local/bin/gtar.orig
+ sudo cp .github/workflows//gtar /usr/local/bin/gtar
+ sudo chmod +x /usr/local/bin/gtar
+ - name: Cache MacPorts
+ id: cache-macports
+ uses: actions/cache@v2
+ with:
+ path: /opt/local/
+ key: ${{ runner.os }}-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}
+ restore-keys: |
+ ${{ runner.os }}-macports-
+ - name: Install MacPorts (if necessary)
+ run: |
+ if [ -d /opt/local/ ]; then
+ echo "MacPorts already installed"
+ else
+ wget https://github.com/macports/macports-base/releases/download/v2.7.2/MacPorts-2.7.2-12-Monterey.pkg
+ sudo installer -pkg ./MacPorts-2.7.2-12-Monterey.pkg -target /
+ fi
+ echo "/opt/local/bin:/opt/local/sbin" >> $GITHUB_PATH
+ - name: Install dependencies
+ run: |
+ brew uninstall --ignore-dependencies libpng
+ sudo port install $(cat .github/workflows/macports-deps.txt)
+ brew install ninja
+ - name: Restore assets
+ uses: actions/download-artifact@v3
+ with:
+ name: assets
+ - name: Build SoH
+ run: |
+ unzip -o assets.zip
+
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
+ cmake --build build-cmake --config Release --parallel 10
+ (cd build-cmake && cpack)
+
+ mv _packages/*.dmg SoH.dmg
+ mv README.md readme.txt
+ - name: Upload build
+ uses: actions/upload-artifact@v3
+ with:
+ name: soh-mac
+ path: |
+ SoH.dmg
+ readme.txt
+ build-linux:
+ needs: extract-assets
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y $(cat .github/workflows/apt-deps.txt)
+ - name: ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: ${{ runner.os }}-ccache
+ - name: Install latest SDL
+ run: |
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ wget https://www.libsdl.org/release/SDL2-2.24.1.tar.gz
+ tar -xzf SDL2-2.24.1.tar.gz
+ cd SDL2-2.24.1
+ ./configure
+ make -j 10
+ sudo make install
+ - name: Install latest SDL_net
+ run: |
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
+ tar -xzf SDL2_net-2.2.0.tar.gz
+ cd SDL2_net-2.2.0
+ ./configure
+ make -j 10
+ sudo make install
+ - name: Restore assets
+ uses: actions/download-artifact@v3
+ with:
+ name: assets
+ - name: Build SoH
+ run: |
+ unzip -o assets.zip
+
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
+ cmake --build build-cmake --target OTRGui -j3
+ cmake --build build-cmake --config Release -j3
+ (cd build-cmake && cpack -G External)
+
+ mv README.md readme.txt
+ mv build-cmake/*.appimage soh.appimage
+ env:
+ CC: gcc-10
+ CXX: g++-10
+ - name: Upload build
+ uses: actions/upload-artifact@v3
+ with:
+ name: soh-linux
+ path: |
+ soh.appimage
+ readme.txt
+ build-switch:
+ needs: extract-assets
+ runs-on: ubuntu-latest
+ container:
+ image: devkitpro/devkita64:latest
+ steps:
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y ninja-build
+ - uses: actions/checkout@v2
+ - name: ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: ${{ runner.os }}-switch-ccache
+ - name: Restore assets
+ uses: actions/download-artifact@v3
+ with:
+ name: assets
+ - name: Build SoH
+ run: |
+ unzip -o assets.zip
+
+ cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
+ cmake --build build-switch --target soh_nro -j3
+
+ mv build-switch/soh/*.nro soh.nro
+ mv README.md readme.txt
+ - name: Upload build
+ uses: actions/upload-artifact@v3
+ with:
+ name: soh-switch
+ path: |
+ soh.nro
+ readme.txt
+ build-wiiu:
+ needs: extract-assets
+ runs-on: ubuntu-latest
+ container:
+ image: devkitpro/devkitppc:latest
+ steps:
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y ninja-build
+ - uses: actions/checkout@v2
+ - name: ccache
+ uses: hendrikmuhs/ccache-action@v1.2
+ with:
+ key: ${{ runner.os }}-wiiu-ccache
+ - name: Restore assets
+ uses: actions/download-artifact@v3
+ with:
+ name: assets
+ - name: Build SoH
+ run: |
+ unzip -o assets.zip
+
+ cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
+ cmake --build build-wiiu --target soh_wuhb --config Release -j3
+
+ mv build-wiiu/soh/*.rpx soh.rpx
+ mv build-wiiu/soh/*.wuhb soh.wuhb
+ mv README.md readme.txt
+ env:
+ DEVKITPRO: /opt/devkitpro
+ DEVKITPPC: /opt/devkitpro/devkitPPC
+ - name: Upload build
+ uses: actions/upload-artifact@v3
+ with:
+ name: soh-wiiu
+ path: |
+ soh.rpx
+ soh.wuhb
+ readme.txt
+ build-windows:
+ needs: extract-assets
+ runs-on: windows-latest
+ steps:
+ - name: Install dependencies
+ run: |
+ choco install ninja
+ Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force
+ - uses: actions/checkout@v2
+ - name: ccache
+ uses: dcvz/ccache-action@27b9f33213c0079872f064f6b6ba0233dfa16ba2
+ with:
+ key: ${{ runner.os }}-ccache
+ - name: Restore assets
+ uses: actions/download-artifact@v3
+ with:
+ name: assets
+ - uses: ilammy/msvc-dev-cmd@v1
+ - name: Build SoH
+ run: |
+ 7z x assets.zip -aoa
+
+ set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
+ cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+ cmake --build build-windows --target OTRGui --config Release --parallel 10
+ cmake --build build-windows --config Release --parallel 10
+ cd build-windows
+ cpack -G ZIP
+ - name: Upload build
+ uses: actions/upload-artifact@v3
+ with:
+ name: soh-windows
+ path: _packages/*.zip
diff --git a/.github/workflows/gtar b/.github/workflows/gtar
new file mode 100644
index 000000000..5814696d1
--- /dev/null
+++ b/.github/workflows/gtar
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec sudo /usr/local/bin/gtar.orig "$@"
diff --git a/.github/workflows/macports-deps.txt b/.github/workflows/macports-deps.txt
new file mode 100644
index 000000000..02c11cc68
--- /dev/null
+++ b/.github/workflows/macports-deps.txt
@@ -0,0 +1 @@
+libsdl2 +universal libpng +universal glew +universal