Keep progress bar window centred after resize (#22354) #265
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.12 | |
# 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@v4 | |
with: | |
fetch-depth: 0 | |
- name: Lint Commit Messages | |
uses: wagoid/commitlint-github-action@v5 | |
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@v4 | |
- name: Run clang-format | |
run: scripts/check-code-formatting | |
check-changelog-formatting: | |
name: Check changelog formatting | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Run check-changelog-formatting | |
run: scripts/check-changelog-formatting | |
g2dat: | |
name: g2.dat | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout OpenRCT2 | |
uses: actions/checkout@v4 | |
with: | |
path: OpenRCT2 | |
- name: Download gxc | |
run: | | |
curl -Lo tools.tar.gz https://github.com/IntelOrca/libsawyer/releases/download/v1.3.0/libsawyer-tools-linux-x64.tar.gz | |
mkdir -p "$GITHUB_WORKSPACE/bin" | |
tar -C "$GITHUB_WORKSPACE/bin" -xf tools.tar.gz | |
echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH | |
- name: Build g2.dat | |
run: | | |
gxc build g2.dat OpenRCT2/resources/g2/sprites.json | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: g2.dat | |
path: g2.dat | |
windows: | |
name: Windows | |
runs-on: windows-latest | |
needs: check-code-formatting | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [win32, x64, arm64] | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
steps: | |
- name: Setup environment | |
run: | | |
BRANCH=$(echo $GITHUB_REF | cut -d'/' -f 3) | |
if [[ $BRANCH == 'develop' || $BRANCH == 'master' ]]; then | |
echo "CONFIGURATION=ReleaseLTCG" >> "$GITHUB_ENV" | |
else | |
echo "CONFIGURATION=Release" >> "$GITHUB_ENV" | |
fi | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Git describe for shallow checkout | |
id: ghd | |
uses: proudust/gh-describe@v2 | |
- 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@v4 | |
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: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "artifacts/test-**.xml" | |
if: matrix.platform != 'arm64' | |
- name: Upload artifacts (openrct2.org) | |
run: | | |
. scripts/setenv | |
if [[ "$OPENRCT2_PUSH" == "true" ]]; then | |
upload-build artifacts/openrct2-portable-*.zip "windows-portable-$PLATFORM.zip" $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
upload-build artifacts/openrct2-installer-*.exe "windows-installer-$PLATFORM.exe" $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
upload-build artifacts/openrct2-symbols-*.zip "windows-symbols-$PLATFORM.zip" $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:14-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@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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@v4 | |
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-12 | |
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-12 agents are all Intel, but as of 2024-04-25 new images, e.g. macos-14 (current macos-latest) are arm64 | |
# See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories | |
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@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
with: | |
key: ${{ matrix.cache_key }} | |
- name: Configure ccache | |
run: | | |
# See https://github.com/hendrikmuhs/ccache-action/issues/146 | |
ccache --set-config=compiler_check=content | |
- name: Install GCC problem matcher | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build OpenRCT2 | |
run: | | |
HOMEBREW_NO_ANALYTICS=1 brew install ninja pkg-config | |
. scripts/setenv -q && build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on ${{ matrix.build_flags }} | |
- 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@v4 | |
with: | |
name: OpenRCT2-${{ runner.os }}-${{ matrix.arch }}-cmake | |
path: artifacts/openrct2-macos.zip | |
if-no-files-found: error | |
- name: Run Tests | |
if: ${{matrix.run_tests}} | |
run: . scripts/setenv -q && run-tests | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "artifacts/test-**.xml" | |
if: ${{matrix.run_tests}} | |
macos-universal: | |
name: macOS universal app bundle | |
runs-on: macos-12 | |
needs: macos-cmake | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: download x64 app bundle | |
uses: actions/download-artifact@v4 | |
with: | |
name: OpenRCT2-${{ runner.os }}-x64-cmake | |
path: macos_universal/x64 | |
- name: download arm64 app bundle | |
uses: actions/download-artifact@v4 | |
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@v4 | |
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-universal.zip $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi | |
linux-portable: | |
name: ${{ matrix.distro }} Linux (${{ matrix.release }}, ${{ matrix.platform }}, portable) | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: ${{ matrix.image }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Use `-fno-var-tracking-assignments` to reduce amount of produced debug information. This is necessary due to 100MiB limit of GitHub / openrct2.org API. | |
- platform: x86_64 | |
distro: Ubuntu | |
release: jammy | |
image: openrct2/openrct2-build:14-jammy | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments" | |
- platform: x86_64 | |
distro: Debian | |
release: bullseye | |
image: openrct2/openrct2-build:14-bullseye | |
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments" -DWITH_TESTS=off | |
- platform: i686 | |
distro: Ubuntu | |
release: jammy | |
image: openrct2/openrct2-build:14-jammy32 | |
build_flags: -DFORCE32=ON -DENABLE_SCRIPTING=OFF -DCMAKE_CXX_FLAGS="-m32 -g -gz" -DWITH_TESTS=off | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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@v4 | |
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 }}-${{ matrix.distro }}.tar.gz $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi | |
linux-appimage: | |
name: Ubuntu Linux (AppImage, x86_64) | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:14-jammy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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@v4 | |
with: | |
name: OpenRCT2-AppImage | |
path: artifacts | |
if-no-files-found: error | |
- 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-x86_64.AppImage linux.AppImage $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi | |
linux-docker: | |
name: Ubuntu Linux (Docker) | |
needs: check-code-formatting | |
if: github.repository == 'OpenRCT2/OpenRCT2' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout image | |
uses: actions/checkout@v4 | |
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: Ubuntu Linux (jammy, debug, [http, network, flac, vorbis OpenGL] disabled) using clang | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:14-jammy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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 | |
linux-clang-tests: | |
name: Ubuntu Linux (debug) using clang, coverage enabled | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:14-jammy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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 -DCMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" -DWITH_TESTS=on | |
- name: Run Tests | |
run: . scripts/setenv -q && LLVM_PROFILE_FILE="openrct2-coverage-%p.profraw" run-tests | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: "artifacts/test-**.xml" | |
if: always() | |
- name: Process coverage information | |
run: | | |
cd bin | |
llvm-profdata merge -sparse openrct2-coverage*profraw -o openrct2.profdata | |
llvm-cov export -instr-profile=openrct2.profdata ./OpenRCT2Tests > coverage.json | |
llvm-cov report ./OpenRCT2Tests -instr-profile=openrct2.profdata | |
xz -1v openrct2.profdata | |
xz -1v coverage.json | |
xz -1v OpenRCT2Tests | |
- name: Upload artifacts (CI) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: OpenRCT2-${{ runner.os }}-coverage | |
path: | | |
bin/*profdata* | |
bin/coverage.json* | |
bin/OpenRCT2Tests.xz | |
if-no-files-found: error | |
android: | |
name: Android | |
runs-on: ubuntu-latest | |
needs: check-code-formatting | |
container: openrct2/openrct2-build:14-android | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2.13 | |
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@v4 | |
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.apk $OPENRCT2_VERSION $OPENRCT2_SHA1 $OPENRCT2_BRANCH | |
else | |
echo 'Not going to push build' | |
fi |