mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-17 03:53:07 +01:00
While we use annotated tags for releases, apparently GitHub Actions Workers do some peculiar steps for fetching the repository, resulting in incomplete(?) tag being checked out. The lightweight version of tag is present, but annotation lives on a different git object, which is not currently checked out in the CI job. To resolve the issue where GitHub Actions would try creating a release for a previous tag instead of current, make sure lightweight tags are considered as well. You can validate the difference between the two with following commands: ``` $ git rev-parse v0.4.1620fff63f05$ git --no-pager log -1 --oneline v0.4.16c1082a3d6c(tag: v0.4.16, origin/master) Release v0.4.16 ```
594 lines
23 KiB
YAML
594 lines
23 KiB
YAML
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.16
|
|
|
|
# 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:
|
|
build_variables:
|
|
name: Get version info
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
name: ${{ steps.artifact-name.outputs.name }}
|
|
describe: ${{ steps.ghd.outputs.describe }}
|
|
short-sha: ${{ steps.ghd.outputs.short-sha }}
|
|
distance: ${{ steps.ghd.outputs.distance }}
|
|
tag: ${{ steps.ghd.outputs.tag }}
|
|
push: ${{ steps.setenv.outputs.push }}
|
|
steps:
|
|
# We need to fetch entire repo to get the tags and correctly run `describe`
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
# We cannot use proudust/gh-describe, as it reports incorrect (too short) short-sha
|
|
- name: Git describe
|
|
id: ghd
|
|
run: |
|
|
TAG=$(git describe --tags --abbrev=0)
|
|
DESCRIBE=$(git describe --tags)
|
|
SHORT_SHA=$(git rev-parse --short HEAD)
|
|
DISTANCE=$(git rev-list --count $TAG..HEAD)
|
|
echo "tag=$TAG"
|
|
echo "describe=$DESCRIBE"
|
|
echo "short-sha=$SHORT_SHA"
|
|
echo "distance=$DISTANCE"
|
|
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
|
echo "describe=$DESCRIBE" >> $GITHUB_OUTPUT
|
|
echo "short-sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
|
echo "distance=$DISTANCE" >> $GITHUB_OUTPUT
|
|
- name: Set env
|
|
id: setenv
|
|
run: |
|
|
. scripts/setenv
|
|
echo "push=$OPENRCT2_PUSH"
|
|
echo "push=$OPENRCT2_PUSH" >> $GITHUB_OUTPUT
|
|
# Name now uses the same format as "describe"
|
|
- name: Get artifact name
|
|
id: artifact-name
|
|
run: |
|
|
echo "name=${{ steps.ghd.outputs.describe }}"
|
|
echo "name=${{ steps.ghd.outputs.describe }}" >> $GITHUB_OUTPUT
|
|
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:17-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
|
|
needs: build_variables
|
|
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-${{ needs.build_variables.outputs.name }}.dat
|
|
path: g2.dat
|
|
windows:
|
|
name: Windows
|
|
runs-on: windows-latest
|
|
needs: [check-code-formatting, build_variables]
|
|
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: 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: Rename artifacts
|
|
run: |
|
|
mv artifacts/openrct2-portable-*.zip artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-portable-$PLATFORM.zip
|
|
mv artifacts/openrct2-installer-*.exe artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-installer-$PLATFORM.exe
|
|
mv artifacts/openrct2-symbols-*.zip artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-symbols-$PLATFORM.zip
|
|
- name: Upload portable artifact (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-portable-${{ matrix.platform }}
|
|
path: artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-portable-${{ matrix.platform }}.zip
|
|
if-no-files-found: error
|
|
- name: Upload installer artifact (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-installer-${{ matrix.platform }}
|
|
path: artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-installer-${{ matrix.platform }}.exe
|
|
if-no-files-found: error
|
|
- name: Upload symbols artifact (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-symbols-${{ matrix.platform }}
|
|
path: artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-symbols-${{ matrix.platform }}.zip
|
|
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 symbols (backtrace.io)
|
|
run: |
|
|
. scripts/setenv
|
|
if [[ "$OPENRCT2_PUSH" == "true" ]]; then
|
|
upload-backtrace-symbols artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-windows-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, build_variables]
|
|
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-${{ needs.build_variables.outputs.name }}-Windows-mingw-${{ matrix.platform }}
|
|
path: bin/openrct2.exe
|
|
if-no-files-found: error
|
|
macos-cmake:
|
|
name: macOS (${{ matrix.arch }}) using CMake
|
|
runs-on: macos-14
|
|
needs: check-code-formatting
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: [x64, arm64]
|
|
include:
|
|
- arch: arm64
|
|
cache_key: macos-arm64
|
|
# 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="arm64" -DWITH_TESTS=on
|
|
run_tests: true
|
|
- arch: x64
|
|
cache_key: macos-x64
|
|
build_flags: -DARCH="x86_64"
|
|
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: |
|
|
# NB: GitHub comes with `pkg-config` preinstalled on macOS images
|
|
HOMEBREW_NO_ANALYTICS=1 brew install ninja
|
|
. 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-14
|
|
needs: [macos-cmake, build_variables]
|
|
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-${{ needs.build_variables.outputs.name }}-macos-universal.zip OpenRCT2.app
|
|
- name: Upload artifacts (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-universal
|
|
path: artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-macos-universal.zip
|
|
if-no-files-found: error
|
|
linux-portable:
|
|
name: ${{ matrix.distro }} Linux (${{ matrix.release }}, ${{ matrix.platform }}, portable)
|
|
runs-on: ubuntu-latest
|
|
needs: [check-code-formatting, build_variables]
|
|
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: noble
|
|
image: openrct2/openrct2-build:16-noble
|
|
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments"
|
|
- platform: x86_64
|
|
distro: Debian
|
|
release: bookworm
|
|
image: openrct2/openrct2-build:16-bookworm
|
|
build_flags: -DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_CXX_FLAGS="-g -gz -fno-var-tracking-assignments" -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 }}
|
|
strip bin/install/usr/bin/libopenrct2.so
|
|
- name: Build artifacts
|
|
run: . scripts/setenv -q && build-portable artifacts/OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-${{ matrix.release }}-${{ matrix.platform }}.tar.gz bin/install/usr
|
|
- name: Upload artifacts (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-${{ runner.os }}-${{ matrix.release }}-${{ matrix.platform }}
|
|
path: artifacts
|
|
if-no-files-found: error
|
|
- name: Run Tests
|
|
run: . scripts/setenv -q && run-tests
|
|
linux-appimage:
|
|
name: Ubuntu Linux (AppImage, x86_64)
|
|
runs-on: ubuntu-latest
|
|
needs: [check-code-formatting, build_variables]
|
|
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: Install Clang 15
|
|
run: apt update && apt install -y clang-15
|
|
- name: Get pre-reqs
|
|
run: . scripts/setenv -q && get-discord-rpc
|
|
- name: Build OpenRCT2
|
|
run: |
|
|
. scripts/setenv -q && build -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 -DCMAKE_BUILD_TYPE=Release -DAPPIMAGE=ON -DOPENRCT2_USE_CCACHE=on
|
|
strip bin/install/usr/bin/openrct2
|
|
- name: Build AppImage
|
|
env:
|
|
APPIMAGE_FILE_NAME: OpenRCT2-${{ needs.build_variables.outputs.name }}-linux-x86_64.AppImage
|
|
run: . scripts/setenv -q && build-appimage
|
|
- name: Upload artifacts (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-AppImage
|
|
path: artifacts
|
|
if-no-files-found: error
|
|
linux-docker:
|
|
name: Ubuntu Linux (Docker)
|
|
needs: check-code-formatting
|
|
if: github.repository == 'OpenRCT2/OpenRCT2' && github.ref == 'refs/heads/develop'
|
|
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 (noble, debug, [http, network, flac, vorbis OpenGL] disabled) using clang
|
|
runs-on: ubuntu-latest
|
|
needs: check-code-formatting
|
|
container: openrct2/openrct2-build:16-noble
|
|
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, build_variables]
|
|
container: openrct2/openrct2-build:16-noble
|
|
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 -DENABLE_HEADERS_CHECK=on -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-${{ needs.build_variables.outputs.name }}-${{ 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, build_variables]
|
|
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-${{ needs.build_variables.outputs.name }}-android-arm.apk
|
|
- name: Upload artifacts (CI)
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OpenRCT2-${{ needs.build_variables.outputs.name }}-Android
|
|
path: artifacts
|
|
if-no-files-found: error
|
|
release:
|
|
name: Release
|
|
runs-on: ubuntu-latest
|
|
needs: [build_variables, linux-portable, android, linux-appimage, macos-universal, windows]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
sparse-checkout: |
|
|
distribution/changelog.txt
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
merge-multiple: true
|
|
- name: Concatenate sha1 files
|
|
run: |
|
|
ls -lR
|
|
pushd ${{ github.workspace }}
|
|
sha1sum OpenRCT2-* > OpenRCT2-${{ needs.build_variables.outputs.name }}-sha1sums.txt
|
|
popd
|
|
- name: Create release notes
|
|
run: |
|
|
# Print all the lines until an empty line
|
|
sed -n '1,/^$/p' distribution/changelog.txt >> release_notes.txt
|
|
echo "" >> release_notes.txt
|
|
|
|
echo "SHA1 checksums:" >> release_notes.txt
|
|
echo "\`\`\`" >> release_notes.txt
|
|
cat OpenRCT2-${{ needs.build_variables.outputs.name }}-sha1sums.txt >> release_notes.txt
|
|
echo "\`\`\`" >> release_notes.txt
|
|
echo "" >> release_notes.txt
|
|
# Only upload tagged releases, mark them as draft for manual verification
|
|
- name: Create tagged release
|
|
uses: softprops/action-gh-release@v2
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
with:
|
|
draft: true
|
|
files: |
|
|
OpenRCT2-${{ needs.build_variables.outputs.name }}-sha1sums.txt
|
|
OpenRCT2-${{ needs.build_variables.outputs.name }}-*
|
|
body_path: release_notes.txt
|
|
tag_name: ${{ needs.build_variables.outputs.tag }}
|
|
# The upload to binaries repository is done from develop only
|
|
- name: Create tag for binaries repository
|
|
uses: actions/github-script@v5
|
|
if: ${{ needs.build_variables.outputs.push }}
|
|
with:
|
|
github-token: ${{ secrets.OPENRCT2_BINARIES_CI_UPLOAD }}
|
|
script: |
|
|
github.rest.git.createRef({
|
|
owner: 'OpenRCT2',
|
|
repo: 'OpenRCT2-binaries',
|
|
ref: 'refs/tags/${{ needs.build_variables.outputs.name }}',
|
|
sha: '2032e1601f3b35d07f088758d34bedbb84868616'
|
|
})
|
|
- name: Create release in binaries repo
|
|
uses: softprops/action-gh-release@v2
|
|
if: ${{ needs.build_variables.outputs.push }}
|
|
with:
|
|
repository: OpenRCT2/OpenRCT2-binaries
|
|
token: ${{ secrets.OPENRCT2_BINARIES_CI_UPLOAD }}
|
|
files: |
|
|
openrct2-${{ needs.build_variables.outputs.name }}-sha1sums.txt
|
|
OpenRCT2-${{ needs.build_variables.outputs.name }}-*
|
|
body_path: release_notes.txt
|
|
tag_name: ${{ needs.build_variables.outputs.name }}
|