diff options
| author | David Chavez <david@dcvz.io> | 2022-11-07 20:34:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-07 20:34:03 +0100 |
| commit | 2c6c1d2e46c0ae3323bdbbba4701d1dc370d3caf (patch) | |
| tree | 2b5d7fbd0dfc568ebaae9111fa4a6730268c40ca /.github | |
| parent | 92b1730237e29a0e722404c6bd86e5675dc929c7 (diff) | |
[CI] Add Github build pipeline (#1688)
Diffstat (limited to '.github')
| -rw-r--r-- | .github/workflows/apt-deps.txt | 1 | ||||
| -rw-r--r-- | .github/workflows/generate-builds.yml | 246 | ||||
| -rw-r--r-- | .github/workflows/gtar | 2 | ||||
| -rw-r--r-- | .github/workflows/macports-deps.txt | 1 |
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 |
