Draw the arms #958
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
paths-ignore: | |
- '.editorconfig' | |
- '.gitattributes' | |
- '.github/*_TEMPLATE/**' | |
- '.github/workflows/localisation.yml' | |
- '.gitignore' | |
- '.vscode/**' | |
pull_request: | |
paths-ignore: | |
- '.editorconfig' | |
- '.gitattributes' | |
- '.github/*_TEMPLATE/**' | |
- '.github/workflows/localisation.yml' | |
- '.gitignore' | |
- '.vscode/**' | |
defaults: | |
run: | |
shell: bash | |
env: | |
OPENRCT2_BUILD_SERVER: GitHub | |
OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }} | |
BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }} | |
OPENRCT2_VERSION: 0.4.3 | |
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
lint-commit: | |
name: Lint Commit Message | |
if: github.event_name == 'pull_request' | |
runs-on: ubuntu-latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Lint Commit Messages | |
uses: wagoid/commitlint-github-action@v3 | |
with: | |
configFile: .commitlint.json | |
check-code-formatting: | |
name: Check code formatting | |
runs-on: ubuntu-latest | |
container: openrct2/openrct2-build:4-format | |
defaults: | |
run: | |
shell: sh | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Run clang-format | |
run: scripts/check-code-formatting | |
windows: | |
name: Windows | |
runs-on: windows-latest | |
needs: check-code-formatting | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [win32, x64] | |
env: | |
CONFIGURATION: Release | |
PLATFORM: ${{ matrix.platform }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Git describe for shallow checkout | |
id: ghd | |
uses: proudust/gh-describe@v1 | |
- name: Update GA environment | |
run: echo "OPENRCT2_DESCRIBE=${{ steps.ghd.outputs.describe }}" >> $GITHUB_ENV | |
- name: Install MSVC problem matcher | |
uses: ammaraskar/msvc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: . scripts/setenv && build | |
- name: Build artifacts | |
run: | | |
. scripts/setenv -q | |
build-portable | |
build-symbols | |
build-installer -i | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-${{ matrix.platform }} | |
path: artifacts | |
if-no-files-found: error | |
- name: Run Tests | |
if: matrix.platform != 'arm64' | |
run: . scripts/setenv -q && run-tests | |
- name: Upload artifacts (openrct2.org) | |
run: | | |
. scripts/setenv -q | |
if [[ "$OPENRCT2_PUSH" == "true" ]]; then | |
upload-build artifacts/openrct2-portable-*.zip "windows-portable-$PLATFORM" $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
upload-build artifacts/openrct2-installer-*.exe "windows-installer-$PLATFORM" $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
upload-build artifacts/openrct2-symbols-*.zip "windows-symbols-$PLATFORM" $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
upload-backtrace-symbols artifacts/openrct2-symbols-*.zip | |
else | |
echo 'Not going to push build' | |
fi | |
windows-mingw: | |
name: Windows (${{ matrix.platform_name }}) using mingw | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:8-mingw | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [win32] | |
include: | |
- platform: win32 | |
platform_name: win32 | |
cache_key: windows-mingw | |
build_flags: -DBUILD_SHARED_LIBS=ON -DENABLE_SCRIPTING=ON | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ matrix.cache_key }} | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: | | |
sudo su | |
cmake -B bin -G Ninja -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DCMAKE_BUILD_TYPE=Release -DDISABLE_IPO=on -DFORCE32=on ${{ matrix.build_flags }} | |
cd bin | |
ninja -k0 | |
- name: Upload artifacts (CI) | |
if: matrix.platform == 'NT5.1' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-Windows-${{ matrix.platform }} | |
path: bin/openrct2.exe | |
if-no-files-found: error | |
macos-cmake: | |
name: macOS (${{ matrix.arch }}) using CMake | |
runs-on: macos-latest | |
needs: check-code-formatting | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x64, arm64] | |
include: | |
- arch: x64 | |
cache_key: macos-x64 | |
# Note: only build/run tests on the native architecture of the CI agent | |
# GitHub macos-latest agents are currently all Intel | |
build_flags: -DARCH="x86_64" -DWITH_TESTS=on | |
run_tests: true | |
- arch: arm64 | |
cache_key: macos-arm64 | |
build_flags: -DARCH="arm64" | |
run_tests: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ matrix.cache_key }} | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: | | |
HOMEBREW_NO_ANALYTICS=1 brew install ninja | |
. scripts/setenv -q && build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on ${{ matrix.build_flags }} | |
- name: Run Tests | |
if: ${{matrix.run_tests}} | |
run: . scripts/setenv -q && run-tests | |
- name: Build artifacts | |
run: | | |
. scripts/setenv | |
mkdir -p artifacts | |
mv bin/OpenRCT2.app artifacts | |
echo -e "\033[0;36mCompressing OpenRCT2.app...\033[0m" | |
cd artifacts | |
zip -rqy openrct2-macos.zip OpenRCT2.app | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-${{ matrix.arch }}-cmake | |
path: artifacts/openrct2-macos.zip | |
if-no-files-found: error | |
macos-universal: | |
name: macOS universal app bundle | |
runs-on: macos-latest | |
needs: macos-cmake | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: download x64 app bundle | |
uses: actions/download-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-x64-cmake | |
path: macos_universal/x64 | |
- name: download arm64 app bundle | |
uses: actions/download-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-arm64-cmake | |
path: macos_universal/arm64 | |
- name: Make Universal app bundle | |
run: | | |
. scripts/setenv | |
cd macos_universal | |
unzip x64/openrct2-macos.zip -d x64 | |
unzip arm64/openrct2-macos.zip -d arm64 | |
create-macos-universal | |
- name: Create artifact | |
run: | | |
. scripts/setenv | |
mkdir -p artifacts | |
mv macos_universal/OpenRCT2-universal.app artifacts/OpenRCT2.app | |
echo -e "\033[0;36mCompressing OpenRCT2.app...\033[0m" | |
cd artifacts | |
zip -rqy openrct2-macos.zip OpenRCT2.app | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-universal | |
path: artifacts/openrct2-macos.zip | |
if-no-files-found: error | |
- name: Upload artifacts (openrct2.org) | |
run: | | |
. scripts/setenv | |
if [[ "$OPENRCT2_PUSH" == "true" ]]; then | |
upload-build artifacts/openrct2-macos.zip macos $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi | |
linux-portable: | |
name: Linux (${{ matrix.platform }}, ${{ matrix.distro }}, portable) | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: ${{ matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- platform: x86_64 | |
distro: bionic | |
image: openrct2/openrct2-build:4-bionic | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz" -DWITH_TESTS=off -DDISABLE_FLAC=ON -DDISABLE_VORBIS=ON | |
- platform: x86_64 | |
distro: focal | |
image: openrct2/openrct2-build:8-focal | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz" | |
- platform: x86_64 | |
distro: jammy | |
image: openrct2/openrct2-build:8-jammy | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz" | |
- platform: x86_64 | |
distro: bullseye | |
image: openrct2/openrct2-build:8-bullseye | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz" | |
- platform: i686 | |
distro: focal | |
image: openrct2/openrct2-build:8-focal32 | |
build_flags: -DFORCE32=ON -DENABLE_SCRIPTING=OFF -DCMAKE_CXX_FLAGS="-m32 -g -gz" -DWITH_TESTS=off | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: linux-${{ matrix.platform }}-${{ matrix.distro }} | |
- name: Get pre-reqs | |
run: . scripts/setenv && get-discord-rpc | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: . scripts/setenv -q && build -DWITH_TESTS=on -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DPORTABLE=ON ${{ matrix.build_flags }} | |
- name: Build artifacts | |
run: . scripts/setenv -q && build-portable artifacts/OpenRCT2-${{ runner.os }}-${{ matrix.distro }}-${{ matrix.platform }}.tar.gz bin/install/usr | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-${{ runner.os }}-${{ matrix.distro }}-${{ matrix.platform }} | |
path: artifacts | |
if-no-files-found: error | |
- name: Run Tests | |
run: . scripts/setenv -q && run-tests | |
- name: Upload artifacts (openrct2.org) | |
run: | | |
# Build identification code: https://github.com/Limetric/OpenRCT2.org/blob/e5b738f3dadcc5a3b78e8dfd434756ff31eaa1d3/src/misc/releaseAsset.js#L94-L116 | |
. scripts/setenv -q | |
if [[ "$OPENRCT2_PUSH" == "true" ]]; then | |
upload-build artifacts/OpenRCT2-${{ runner.os }}-${{ matrix.distro }}-${{ matrix.platform }}.tar.gz linux-${{ matrix.platform }} $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi | |
linux-appimage: | |
name: Linux (x64, AppImage) | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:8-focal | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: linux-appimage | |
- name: Get pre-reqs | |
run: . scripts/setenv -q && get-discord-rpc | |
- name: Build OpenRCT2 | |
run: . scripts/setenv -q && build -DCMAKE_BUILD_TYPE=Release -DAPPIMAGE=ON -DOPENRCT2_USE_CCACHE=on | |
- name: Build AppImage | |
run: . scripts/setenv -q && build-appimage | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-AppImage | |
path: artifacts | |
if-no-files-found: error | |
linux-docker: | |
name: Linux (docker) | |
needs: check-code-formatting | |
if: github.repository == 'OpenRCT2/OpenRCT2' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout image | |
uses: actions/checkout@v3 | |
with: | |
repository: OpenRCT2/openrct2-docker | |
- name: Build image | |
run: docker build -t openrct2/openrct2-cli:develop develop/cli | |
- name: Push image | |
env: | |
OPENRCT2_DOCKER_USER: ${{ secrets.OPENRCT2_DOCKER_USER }} | |
OPENRCT2_DOCKER_PASS: ${{ secrets.OPENRCT2_DOCKER_PASS }} | |
run: | | |
OPENRCT2_BRANCH=$(echo "$GITHUB_REF" | sed 's/refs\/heads\///') | |
echo "Current branch is $OPENRCT2_BRANCH" | |
if [ "$OPENRCT2_BRANCH" = 'develop' ]; then | |
docker login -u "$OPENRCT2_DOCKER_USER" -p "$OPENRCT2_DOCKER_PASS" | |
docker push openrct2/openrct2-cli:develop | |
else | |
echo 'Image not pushed' | |
fi | |
linux-clang: | |
name: Linux (Debug, [http, network, flac, vorbis OpenGL] disabled) using clang | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:8-jammy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: linux-clang | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: . scripts/setenv && build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DDISABLE_NETWORK=ON -DDISABLE_HTTP=ON -DDISABLE_FLAC=ON -DDISABLE_VORBIS=ON -DDISABLE_OPENGL=ON | |
android: | |
name: Android | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:8-android | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: android | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: | | |
. scripts/setenv | |
pushd src/openrct2-android | |
./gradlew app:assembleRelease | |
popd | |
mkdir -p artifacts | |
mv src/openrct2-android/app/build/outputs/apk/release/app-release.apk artifacts/openrct2-arm.apk | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: OpenRCT2-Android | |
path: artifacts | |
if-no-files-found: error | |
- name: Upload artifacts (openrct2.org) | |
run: | | |
. scripts/setenv -q | |
if [[ "$OPENRCT2_PUSH" == "true" ]]; then | |
upload-build artifacts/openrct2-arm.apk android-arm $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi |