Apply RebelScript branding #721
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: 🐧 Linux Builds | |
on: [push, pull_request] | |
# Global Settings | |
env: | |
BRANCH_NAME: main | |
SCONSFLAGS: verbose=yes warnings=all werror=yes | |
concurrency: | |
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux | |
cancel-in-progress: true | |
jobs: | |
build-linux: | |
runs-on: "ubuntu-20.04" | |
name: ${{ matrix.name }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Editor w/ Mono (target=release_debug, tools=yes) | |
cache-name: linux-editor-mono | |
target: release_debug | |
tools: true | |
sconsflags: module_mono_enabled=yes mono_static=yes mono_glue=no | |
bin: "./bin/rebel.linux.opt.tools.64.mono" | |
build-mono: true | |
artifact: true | |
- name: Editor and sanitizers (target=debug, tools=yes, use_asan=yes, use_ubsan=yes) | |
cache-name: linux-editor-sanitizers | |
target: debug | |
tools: true | |
sconsflags: use_asan=yes use_ubsan=yes | |
test: true | |
bin: "./bin/rebel.linux.tools.64s" | |
build-mono: false | |
# Skip 2GiB artifact speeding up action. | |
artifact: false | |
- name: Template w/ Mono (target=release, tools=no) | |
cache-name: linux-template-mono | |
target: release | |
tools: false | |
sconsflags: module_mono_enabled=yes mono_static=yes mono_glue=no debug_symbols=no | |
build-mono: false | |
artifact: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Linux dependencies | |
shell: bash | |
run: | | |
sudo apt-get update | |
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ | |
libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev \ | |
libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip | |
- name: Setup build cache | |
uses: ./.github/actions/build-cache | |
with: | |
cache-name: ${{ matrix.cache-name }} | |
continue-on-error: true | |
- name: Setup build dependencies | |
uses: ./.github/actions/build-dependencies | |
- name: Build | |
uses: ./.github/actions/build | |
with: | |
sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} | |
platform: linux | |
target: ${{ matrix.target }} | |
tools: ${{ matrix.tools }} | |
# Generate mono glue | |
- name: Generate Mono glue code | |
if: ${{ matrix.build-mono }} | |
run: | | |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --generate-mono-glue modules/mono/glue || true | |
# Rebuild with mono | |
- name: Build (mono_glue=yes) | |
uses: ./.github/actions/build | |
if: ${{ matrix.build-mono }} | |
with: | |
sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} mono_glue=yes | |
platform: linux | |
target: ${{ matrix.target }} | |
tools: ${{ matrix.tools }} | |
# Checkout test project | |
# If the test project needs to be updated, modify these settings to point to the updated test project. | |
# - repository: Your fork of the test project i.e. <username>/RebelTestProject | |
# - ref: Your branch with the updated test project e.g. fix-test-project | |
# - path: RebelTestProject - Don't change. This is the folder the rest of the workflow uses. | |
- name: Checkout test project | |
if: ${{ matrix.test }} | |
uses: actions/checkout@v4 | |
with: | |
repository: RebelToolbox/RebelTestProject | |
ref: main | |
path: RebelTestProject | |
# Editor is quite complicated piece of software, so it is easy to introduce bug here | |
- name: Open and close editor | |
if: ${{ matrix.test }} | |
run: | | |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy -e -q --path RebelTestProject 2>&1 | tee sanitizers_log.txt || true | |
tools/scripts/check_ci_log.py sanitizers_log.txt | |
# Run test project | |
- name: Run project | |
if: ${{ matrix.test }} | |
run: | | |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 30 --video-driver GLES3 --audio-driver Dummy --path RebelTestProject 2>&1 | tee sanitizers_log.txt || true | |
tools/scripts/check_ci_log.py sanitizers_log.txt | |
- name: Check API XML documentation | |
if: ${{ matrix.test }} | |
run: | | |
echo "Running --generate-docs to see if this changes the API XML documentation files." | |
echo "If a diff is created, the API XML documentation changes are incomplete." | |
echo "Update the API XML documentation with --generate-docs." | |
echo | |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --generate-docs 2>&1 > /dev/null || true | |
git diff --color --exit-code && ! git ls-files --others --exclude-standard | sed -e 's/^/New doc file missing in PR: /' | grep 'xml$' | |
- name: Prepare artifact | |
if: ${{ matrix.artifact }} | |
run: | | |
strip bin/rebel.* | |
- name: Upload artifact | |
uses: ./.github/actions/upload-artifact | |
if: ${{ matrix.artifact }} | |
with: | |
name: ${{ matrix.cache-name }} |