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