summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorGarrett Cox <garrettjcox@gmail.com>2024-01-20 22:55:42 +0000
committerGarrett Cox <garrettjcox@gmail.com>2024-05-22 09:04:58 -0500
commit837ef4dde6b8cceb747c07dcfc5842c8feb8379d (patch)
treeccc99968553e3310ff1d69f2db1e4db88cab6af1 /.github
parentb98106017a4f93961541ba3351bae11377e6ec9d (diff)
CI (#81)
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/apt-deps.txt1
-rw-r--r--.github/workflows/main.yml293
2 files changed, 240 insertions, 54 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/main.yml b/.github/workflows/main.yml
index 0a3fdf2f3..f40dd17a7 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -2,86 +2,271 @@ name: generate-builds
on:
push:
pull_request:
-
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
jobs:
+ generate-soh-otr-and-headers:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: true
+ - 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.11
+ with:
+ key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-ccache-${{ github.ref }}
+ ${{ runner.os }}-ccache-
+ - name: Cache build folders
+ uses: actions/cache@v4
+ with:
+ key: ${{ runner.os }}-build-${{ github.ref }}-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-build-${{ github.ref }}
+ ${{ runner.os }}-build-
+ path: |
+ build-cmake
+ SDL2-2.26.1
+ - name: Install latest SDL
+ run: |
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ if [ ! -d "SDL2-2.26.1" ]; then
+ wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz
+ tar -xzf SDL2-2.26.1.tar.gz
+ fi
+ cd SDL2-2.26.1
+ ./configure
+ make -j
+ sudo make install
+ sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
+ - name: Download Rom
+ run: |
+ url="${{ secrets.BASEROM }}"
+ outputPath="${{ github.workspace }}/OTRExporter/baserom.z64"
+ wget "$url" -O "$outputPath"
+ - name: Generate soh.otr
+ run: |
+ 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 --config Release --target GenerateSohOtr -j
+ - uses: actions/upload-artifact@v4
+ with:
+ name: soh.otr
+ path: soh.otr
+ retention-days: 1
+ - name: Generate headers
+ run: |
+ 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 --config Release --target ExtractAssetHeaders -j
+
+ find mm/assets/**/* -type f -exec touch -d "$(cat headers_updated_at.txt)" {} \;
+ - uses: actions/upload-artifact@v4
+ with:
+ name: headers
+ path: mm/assets
+ retention-days: 1
+ build-linux:
+ needs: generate-soh-otr-and-headers
+ strategy:
+ fail-fast: true
+ matrix:
+ include:
+ # - os: ubuntu-20.04
+ # gcc: 10
+ # archive-suffix: compatibility
+ - os: ubuntu-22.04
+ gcc: 12
+ archive-suffix: performance
+ runs-on: ${{ (matrix.os == 'ubuntu-20.04' && ((vars.LINUX_COMPATIBILITY_RUNNER && fromJSON(vars.LINUX_COMPATIBILITY_RUNNER)) || matrix.os)) || (matrix.os == 'ubuntu-22.04' && ((vars.LINUX_PERFORMANCE_RUNNER && fromJSON(vars.LINUX_PERFORMANCE_RUNNER)) || matrix.os)) }}
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: true
+ - 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.11
+ with:
+ key: ${{ matrix.os }}-ccache-${{ github.ref }}-${{ github.sha }}
+ restore-keys: |
+ ${{ matrix.os }}-ccache-${{ github.ref }}
+ ${{ matrix.os }}-ccache-
+ - name: Cache build folders
+ uses: actions/cache@v4
+ with:
+ key: ${{ matrix.os }}-build-${{ github.ref }}-${{ github.sha }}
+ restore-keys: |
+ ${{ matrix.os }}-build-${{ github.ref }}
+ ${{ matrix.os }}-build-
+ path: |
+ build-cmake
+ SDL2-2.26.1
+ - name: Install latest SDL
+ run: |
+ export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
+ if [ ! -d "SDL2-2.26.1" ]; then
+ wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz
+ tar -xzf SDL2-2.26.1.tar.gz
+ fi
+ cd SDL2-2.26.1
+ ./configure
+ make -j
+ sudo make install
+ sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
+ - name: Download soh.otr
+ uses: actions/download-artifact@v4
+ with:
+ name: soh.otr
+ - name: Download Headers
+ uses: actions/download-artifact@v4
+ with:
+ name: headers
+ path: mm/assets
+ - name: Build 2Ship
+ run: |
+ 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 --config Release -j
+ # Not building releases/artifacts for now
+ # (cd build-cmake && cpack -G External)
+
+ # mv README.md readme.txt
+ # mv build-cmake/*.appimage 2ship.appimage
+ env:
+ CC: gcc-${{ matrix.gcc }}
+ CXX: g++-${{ matrix.gcc }}
+ # - name: Upload build
+ # uses: actions/upload-artifact@v3
+ # with:
+ # name: 2ship-linux-${{ matrix.archive-suffix }}
+ # path: |
+ # # 2ship.appimage
+ # readme.txt
# build-windows:
- # runs-on: self-hosted
+ # needs: generate-soh-otr-and-headers
+ # runs-on: windows-latest
# steps:
# - name: Install dependencies
- # if: ${{ !vars.WINDOWS_RUNNER }}
# run: |
# choco install ninja
- # Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
# - uses: actions/checkout@v3
# with:
# submodules: true
- # # - name: ccache
- # # uses: hendrikmuhs/ccache-action@v1.2
- # # with:
- # # key: ${{ runner.os }}-ccache
- # - name: vcpkg
- # uses: johnwason/vcpkg-action@v5
+ # - name: ccache
+ # uses: hendrikmuhs/ccache-action@v1.2.11
# with:
- # pkgs: zlib bzip2 libpng sdl2 sdl2-net glew glfw3
- # token: ${{ github.token }}
- # triplet: 'x64-windows-release'
+ # key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
+ # restore-keys: |
+ # ${{ runner.os }}-ccache-${{ github.ref }}
+ # ${{ runner.os }}-ccache-
+ # - name: Cache build folder
+ # uses: actions/cache@v4
+ # with:
+ # key: ${{ runner.os }}-build-${{ github.ref }}-${{ github.sha }}
+ # restore-keys: |
+ # ${{ runner.os }}-build-${{ github.ref }}
+ # ${{ runner.os }}-build-
+ # path: |
+ # build-windows
+ # vcpkg
# - name: Configure Developer Command Prompt
# uses: ilammy/msvc-dev-cmd@v1
- # - name: Build SoH
- # env:
+ # - name: Download soh.otr
+ # uses: actions/download-artifact@v4
+ # with:
+ # name: soh.otr
+ # - name: Download Headers
+ # uses: actions/download-artifact@v4
+ # with:
+ # name: headers
+ # path: mm/assets
+ # - name: Build 2Ship
+ # env:
# VCPKG_ROOT: ${{github.workspace}}/vcpkg
# run: |
# 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 -DBUILD_REMOTE_CONTROL=1
- # cmake --build build-windows --config Release --target ExtractAssets --parallel 10
- # cmake --build build-windows --config Release --target ExtractAssetHeaders --parallel 10
+ # 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 --config Release --parallel 10
- # mkdir soh-windows
- # mv ./x64/Release/soh.exe ./soh-windows/soh.exe
- # mkdir soh-windows/debug
- # mkdir soh-windows/mods
- # New-Item soh-windows/mods/custom_otr_files_go_here.txt -type file
- # mv ./x64/Release/soh.pdb ./soh-windows/debug/soh.pdb
- # mv ./README.md ./soh-windows/readme.txt
- # mv ./build-windows/gamecontrollerdb.txt ./soh-windows/gamecontrollerdb.txt
- # mv ./x64/Release/assets ./soh-windows
+ # mkdir 2ship-windows
+ # mv ./x64/Release/mm.exe ./2ship-windows/2ship.exe
+ # mkdir 2ship-windows/debug
+ # mkdir 2ship-windows/mods
+ # New-Item 2ship-windows/mods/custom_otr_files_go_here.txt -type file
+ # # mv ./x64/Release/2ship.pdb ./2ship-windows/debug/2ship.pdb
+ # mv ./README.md ./2ship-windows/readme.txt
+ # mv ./build-windows/gamecontrollerdb.txt ./2ship-windows/gamecontrollerdb.txt
+ # mv ./x64/Release/assets ./2ship-windows
+ # mv ./soh.otr ./2ship-windows/soh.otr
# - name: Upload build
- # uses: actions/upload-artifact@v3
+ # uses: actions/upload-artifact@v4
# with:
- # name: soh-windows
- # path: soh-windows
- build-windows:
+ # name: 2ship-windows
+ # path: 2ship-windows
+ build-windows-self-hosted:
+ needs: generate-soh-otr-and-headers
runs-on: self-hosted
steps:
+ - name: Install dependencies
+ run: |
+ choco install ninja -y
+ choco install gzip -y
+ Add-Content $env:GITHUB_PATH $env:ChocolateyInstall
- uses: actions/checkout@v3
with:
submodules: true
- - name: Extract Assets
+ - name: Cache build folder
+ uses: actions/cache@v4
+ with:
+ save-always: true
+ key: ${{ runner.os }}-self-build-${{ github.ref }}-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-self-build-${{ github.ref }}
+ ${{ runner.os }}-self-build-
+ path: |
+ build-windows
+ vcpkg
+ - name: Configure Developer Command Prompt
+ uses: ilammy/msvc-dev-cmd@v1
+ - name: Download soh.otr
+ uses: actions/download-artifact@v4
+ with:
+ name: soh.otr
+ - name: Download Headers
+ uses: actions/download-artifact@v4
+ with:
+ name: headers
+ path: mm/assets
+ - name: Build 2Ship
env:
VCPKG_ROOT: ${{github.workspace}}/vcpkg
run: |
- choco install ninja
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
- C:\CMake\bin\cmake.exe -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 -DBUILD_REMOTE_CONTROL=1
- C:\CMake\bin\cmake.exe --build build-windows --config Release --target ExtractAssets --parallel 10
- C:\CMake\bin\cmake.exe --build build-windows --config Release --target ExtractAssetHeaders --parallel 10
- C:\CMake\bin\cmake.exe --build build-windows --config Release --parallel 10
-
- # - name: Build SoH
- # env:
- # VCPKG_ROOT: ${{github.workspace}}/vcpkg
- # run: |
- # set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
- # C:\CMake\bin\cmake.exe --build build-windows --config Release --parallel 10
-
- # mkdir soh-windows
- # mv ./x64/Release/soh.exe ./soh-windows/soh.exe
- # mkdir soh-windows/debug
- # mkdir soh-windows/mods
- # New-Item soh-windows/mods/custom_otr_files_go_here.txt -type file
- # mv ./x64/Release/soh.pdb ./soh-windows/debug/soh.pdb
- # mv ./README.md ./soh-windows/readme.txt
- # mv ./build-windows/gamecontrollerdb.txt ./soh-windows/gamecontrollerdb.txt
- # mv ./x64/Release/assets ./soh-windows
+ cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release
+ cmake --build build-windows --config Release --parallel 10
+ # Not building releases/artifacts for now
+ # mkdir 2ship-windows
+ # mv ./x64/Release/mm.exe ./2ship-windows/2ship.exe
+ # mkdir 2ship-windows/debug
+ # mkdir 2ship-windows/mods
+ # New-Item 2ship-windows/mods/custom_otr_files_go_here.txt -type file
+ # mv ./x64/Release/2ship.pdb ./2ship-windows/debug/2ship.pdb
+ # mv ./README.md ./2ship-windows/readme.txt
+ # mv ./build-windows/gamecontrollerdb.txt ./2ship-windows/gamecontrollerdb.txt
+ # mv ./x64/Release/assets ./2ship-windows
+ # mv ./soh.otr ./2ship-windows/soh.otr
+ # - name: Upload build
+ # uses: actions/upload-artifact@v4
+ # with:
+ # name: 2ship-windows
+ # path: 2ship-windows