Skip to content

Update

Update #365

Workflow file for this run

name: CI
on:
push:
# Run for pushes to master or a release branch, e.g. a PR was merged ...
branches:
- master
- releases/v[0-9]+.[0-9]+.[0-9]+
# ... and only when we've possibly changed how the game will function.
paths:
- 'source/**'
- 'data/**'
- 'tests/**'
- '.github/workflows/**'
- 'CMakeLists.txt'
- 'CMakePresets.json'
- keys.txt
pull_request:
# Run for any push to any pull request, if it modifies source code or game text.
types: [opened, synchronize]
paths:
- 'source/**'
- 'data/**'
- 'tests/**'
- '.github/workflows/**'
- 'CMakeLists.txt'
- 'CMakePresets.json'
- keys.txt
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}
cancel-in-progress: true
jobs:
# Figure out what changed, so other jobs in this file can conditionally execute.
changed:
uses: ./.github/workflows/compute-changes.yml
build_ubuntu:
name: Ubuntu
needs: changed
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.unit_tests == 'true' || needs.changed.outputs.integration_tests == 'true' || needs.changed.outputs.cmake_files == 'true' }}
runs-on: ubuntu-${{ matrix.os }}
strategy:
matrix:
os: [20.04, 22.04]
opengl: [GL, GLES]
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Install development dependencies
run: |
sudo rm /etc/apt/sources.list.d/* && sudo dpkg --clear-avail # Speed up installation and get rid of unwanted lists
sudo apt-get update
sudo apt-get install -y --no-install-recommends libxmu-dev libxi-dev libgl-dev libglu1-mesa-dev libgles2-mesa-dev libwayland-dev libxkbcommon-dev libegl1-mesa-dev libosmesa6 mesa-utils libglvnd-dev x11-utils
- name: Disable VM sound card
run: |
sudo sh -c 'echo "pcm.!default { type plug slave.pcm \"null\" }" >> /etc/asound.conf'
- name: Setup sccache
uses: ./.github/sccache
- uses: lukka/get-cmake@latest
- uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '2cf957350da28ad032178a974607f59f961217d9'
- uses: lukka/run-cmake@v10
with:
configurePreset: ${{ matrix.opengl == 'GL' && 'linux-ci' || 'linux-gles-ci' }}
buildPreset: ${{ matrix.opengl == 'GL' && 'linux-ci' || 'linux-gles-ci' }}
testPreset: ${{ matrix.opengl == 'GL' && 'linux-ci' || 'linux-gles-ci' }}
- name: Run Benchmarks
run: ctest --preset ${{ matrix.opengl == 'GL' && 'linux-ci-benchmark' || 'linux-gles-ci-benchmark' }}
build_windows:
name: Windows
needs: changed
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.unit_tests == 'true' || needs.changed.outputs.cmake_files == 'true' }}
runs-on: windows-2022
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Setup sccache
uses: ./.github/sccache
- uses: lukka/get-cmake@latest
- uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '2cf957350da28ad032178a974607f59f961217d9'
- uses: lukka/run-cmake@v10
with:
configurePreset: 'mingw-ci'
buildPreset: 'mingw-ci'
testPreset: 'mingw-ci'
- name: Run Benchmarks
run: ctest --preset mingw-ci-benchmark
- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: binary-windows
path: ./build/ci/Endless Sky.exe
- name: Upload DLLs
uses: actions/upload-artifact@v3
with:
name: windows-dlls
path: ./build/ci/*.dll
build_windows_clang:
name: Windows Clang
needs: changed
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.unit_tests == 'true' || needs.changed.outputs.cmake_files == 'true' }}
runs-on: windows-2022
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Setup sccache
uses: ./.github/sccache
- uses: lukka/get-cmake@latest
- uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '2cf957350da28ad032178a974607f59f961217d9'
- uses: lukka/run-cmake@v10
with:
configurePreset: 'clang-cl-ci'
buildPreset: 'clang-cl-ci'
testPreset: 'clang-cl-ci'
- name: Run Benchmarks
run: ctest --preset clang-cl-ci-benchmark
build_macos:
name: MacOS
needs: changed
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.unit_tests == 'true' || needs.changed.outputs.cmake_files == 'true' }}
runs-on: macos-12
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Setup sccache
uses: ./.github/sccache
- name: Install pkg-config
run: type -P pkg-config || brew install pkg-config
- uses: lukka/get-cmake@latest
- uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '2cf957350da28ad032178a974607f59f961217d9'
- uses: lukka/run-cmake@v10
with:
configurePreset: 'macos-ci'
buildPreset: 'macos-ci'
testPreset: 'macos-ci'
- name: Run Benchmarks
run: ctest --preset macos-ci-benchmark
test-parse:
needs: [changed, build_windows]
name: Data Files
if: ${{ (needs.changed.outputs.game_code == 'true' || needs.changed.outputs.cmake_files == 'true' || needs.changed.outputs.data == 'true' || needs.changed.outputs.integration_tests == 'true' || needs.changed.outputs.parse_script == 'true') && always() }}
runs-on: windows-2022
env:
CONTINUOUS: EndlessSky-win64-continuous.zip
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
# If no code changes occurred then we can download the latest continuous.
- name: Download latest continuous
if: ${{ needs.changed.outputs.game_code != 'true' && needs.changed.outputs.cmake_files != 'true' }}
run: gh release download -R ${{ github.repository }} continuous -p ${{ env.CONTINUOUS }}
- name: Extract and prepare continuous
if: ${{ needs.changed.outputs.game_code != 'true' && needs.changed.outputs.cmake_files != 'true' }}
run: |
Expand-Archive ${{ env.CONTINUOUS }} -DestinationPath continuous -Force
COPY '.\continuous\Endless Sky.exe' .
COPY '.\continuous\*.dll' .
# Otherwise download the binary from CI.
- name: Download game binary from CI
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.cmake_files == 'true' }}
uses: actions/download-artifact@v3
with:
name: binary-windows
- name: Download DLLs from CI
if: ${{ needs.changed.outputs.game_code == 'true' || needs.changed.outputs.cmake_files == 'true' }}
uses: actions/download-artifact@v3
with:
name: windows-dlls
- name: Parse Datafiles
run: .\utils\test_parse.ps1 'Endless Sky.exe'
- name: Parse Integration Test Data
run: .\utils\test_parse.ps1 'Endless Sky.exe' tests/integration/config