mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-17 12:03:07 +01:00
143 lines
5.4 KiB
YAML
143 lines
5.4 KiB
YAML
name: CI
|
|
on: [push, pull_request]
|
|
env:
|
|
BUILD_SERVER: GitHub
|
|
OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }}
|
|
OPENRCT2_VERSION: 0.2.4
|
|
jobs:
|
|
check-code-formatting:
|
|
name: Check code formatting
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: openrct2/openrct2:format
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Run clang-format
|
|
run: scripts/run-clang-format.py -r src test --exclude src/openrct2/thirdparty
|
|
windows:
|
|
name: Windows
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform: [win32, x64]
|
|
env:
|
|
CONFIGURATION: Release
|
|
PLATFORM: ${{ matrix.platform }}
|
|
GIT_COMMIT_SHA1: ${{ github.sha }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
- name: Install NSIS
|
|
shell: bash
|
|
run: scripts/install-nsis
|
|
- name: Prepare environment
|
|
shell: bash
|
|
run: dos2unix test/tests/testdata/keys/*
|
|
- name: Build OpenRCT2
|
|
shell: pwsh
|
|
run: |
|
|
$env:GIT_BRANCH = $env:GITHUB_REF -replace "refs/heads/(.*)", '$1'
|
|
$env:GIT_DESCRIBE = (git describe HEAD | sed -E "s/-g.+$//")
|
|
$env:BUILD_VERSION = $env:GIT_DESCRIBE | sed "s/v//" | sed "s/-/./"
|
|
Set-Content -Path 'resources\version.h' -Value "#define OPENRCT2_FILE_VERSION $($env:BUILD_VERSION -replace "\.", ",")"
|
|
Add-Content -Path 'resources\version.h' -Value "#define OPENRCT2_PRODUCT_VERSION `"$($env:BUILD_VERSION)-$($env:GIT_COMMIT_SHA1.Substring(0,10))`""
|
|
Remove-Item -Force -Recurse "C:\Program Files (x86)\NSIS"
|
|
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" && msbuild openrct2.proj'
|
|
- name: Run Tests
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat"
|
|
msbuild openrct2.proj /t:test
|
|
- uses: actions/upload-artifact@master
|
|
name: Upload artifacts (CI)
|
|
with:
|
|
name: "OpenRCT2-Windows-${{ matrix.platform }}"
|
|
path: artifacts
|
|
- name: Upload artifacts (openrct2.org)
|
|
shell: bash
|
|
run: |
|
|
if [[ "$OPENRCT2_ORG_TOKEN" != "" ]]; then
|
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
|
GITHUB_BRANCH=
|
|
else
|
|
GITHUB_BRANCH=${GITHUB_REF#refs/heads/}
|
|
if [[ ! "$GITHUB_BRANCH" =~ ^(develop|push/) ]]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
scripts/upload-build artifacts/openrct2-portable-*.zip "windows-portable-$PLATFORM" $OPENRCT2_VERSION $GIT_COMMIT_SHA1 $GITHUB_BRANCH
|
|
scripts/upload-build artifacts/openrct2-installer-*.exe "windows-installer-$PLATFORM" $OPENRCT2_VERSION $GIT_COMMIT_SHA1 $GITHUB_BRANCH
|
|
scripts/upload-build artifacts/openrct2-symbols-*.zip "windows-symbols-$PLATFORM" $OPENRCT2_VERSION $GIT_COMMIT_SHA1 $GITHUB_BRANCH
|
|
fi
|
|
osx:
|
|
name: macOS
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
- name: Build OpenRCT2
|
|
run: |
|
|
xcodebuild
|
|
mkdir -p artifacts
|
|
mv build/Release/OpenRCT2.app artifacts
|
|
- uses: actions/upload-artifact@master
|
|
name: Upload artifacts (CI)
|
|
with:
|
|
name: "OpenRCT2-macOS"
|
|
path: artifacts
|
|
- name: Upload artifacts (openrct2.org)
|
|
env:
|
|
GITHUB_SHA1: ${{ github.sha }}
|
|
run: |
|
|
if [[ "$OPENRCT2_ORG_TOKEN" != "" ]]; then
|
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
|
GITHUB_BRANCH=
|
|
else
|
|
GITHUB_BRANCH=${GITHUB_REF#refs/heads/}
|
|
if [[ ! "$GITHUB_BRANCH" =~ ^(develop|push/) ]]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo -e '\033[0;36mCompressing OpenRCT2.app...'
|
|
cd artifacts
|
|
zip -rq openrct2-macos.zip OpenRCT2.app
|
|
|
|
../scripts/upload-build openrct2-macos.zip macos $OPENRCT2_VERSION $GITHUB_SHA1 $GITHUB_BRANCH
|
|
fi
|
|
build-appimage:
|
|
name: Linux (x64, AppImage)
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: openrct2/openrct2:ubuntu_amd64
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
name: Checkout
|
|
- name: Get pre-reqs
|
|
run: |
|
|
git clone https://github.com/discordapp/discord-rpc -b v3.4.0
|
|
git clone https://github.com/janisozaur/rapidjson discord-rpc/thirdparty/rapidjson -b patch-1
|
|
mkdir bin && cd bin
|
|
apt-get update
|
|
apt-get install -y wget libcairo2
|
|
wget https://github.com/TheAssassin/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
|
chmod +x linuxdeploy*.AppImage
|
|
- name: Build OpenRCT2
|
|
working-directory: bin
|
|
run: |
|
|
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
|
|
ninja -v
|
|
DESTDIR=AppDir ninja install
|
|
- name: Build AppImage
|
|
working-directory: bin
|
|
run: |
|
|
./linuxdeploy*.AppImage --appimage-extract-and-run --appdir AppDir/ --output appimage --desktop-file AppDir/usr/share/applications/openrct2.desktop
|
|
mkdir artifacts
|
|
mv OpenRCT2*.AppImage artifacts
|
|
- uses: actions/upload-artifact@master
|
|
with:
|
|
name: OpenRCT2-AppImage
|
|
path: bin/artifacts
|