Update #484
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: | |
# 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 |