Skip to content

🐧 Linux Builds 3x #672

🐧 Linux Builds 3x

🐧 Linux Builds 3x #672

Workflow file for this run

name: 🐧 Linux Builds 3x
on:
push:
pull_request:
schedule:
- cron: '0 23 * * *'
# Global Settings
env:
GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: debug_symbols=yes
jobs:
build-linux:
runs-on: "ubuntu-22.04"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
# - name: Editor Mono Sanitizers
# cache-name: linux3x-editor-mono-sanitizers
# target: debug
# tools: true
# tests: false
# sconsflags: module_mono_enabled=yes mono_glue=no use_ubsan=yes use_asan=yes
# build-mono: true
# bin: "./bin/godot.x11.tools.64s.mono"
# artifact: true
- name: Editor Sanitizers
cache-name: linux3x-editor-sanitizers
target: debug
tools: true
tests: false
sconsflags: use_ubsan=yes use_asan=yes
artifact: true
- name: Template Release Sanitizers
cache-name: linux3x-template-sanitizers
target: release
tools: false
tests: false
sconsflags: use_ubsan=yes use_asan=yes optimize=none
artifact: true
# - name: Editor Mono Normal
# cache-name: linux3x-editor-mono-normal
# target: debug
# tools: true
# tests: false
# sconsflags: module_mono_enabled=yes mono_glue=no
# build-mono: true
# bin: "./bin/godot.x11.tools.64.mono"
# artifact: true
- name: Editor Normal
cache-name: linux3x-editor-normal
target: debug
tools: true
tests: false
artifact: true
- name: Template Release Normal
cache-name: linux3x-template-normal
target: release
tools: false
tests: false
sconsflags: optimize=none
artifact: true
- name: Editor Minimal
cache-name: linux3x-editor-minimal
target: debug
tools: true
tests: false
sconsflags: module_bmp_enabled=no module_bullet_enabled=no module_camera_enabled=no module_csg_enabled=no module_cvtt_enabled=no module_dds_enabled=no module_denoise_enabled=no module_enet_enabled=no module_etc_enabled=no module_fbx_enabled=no module_gdnative_enabled=no module_gltf_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jpg_enabled=no module_jsonrpc_enabled=no module_lightmapper_cpu_enabled=no module_mbedtls_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_ogg_enabled=no module_opensimplex_enabled=no module_opus_enabled=no module_pvr_enabled=no module_raycast_enabled=no module_squish_enabled=no module_stb_vorbis_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_visual_script_enabled=no module_vorbis_enabled=no module_webm_enabled=no module_webp_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no module_xatlas_unwrap_enabled=no module_regex_enabled=no
artifact: true
- name: Editor Minimal Sanitizers
cache-name: linux3x-editor-minimal-sanitizers
target: debug
tools: true
tests: false
sconsflags: module_bmp_enabled=no module_bullet_enabled=no module_camera_enabled=no module_csg_enabled=no module_cvtt_enabled=no module_dds_enabled=no module_denoise_enabled=no module_enet_enabled=no module_etc_enabled=no module_fbx_enabled=no module_gdnative_enabled=no module_gltf_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jpg_enabled=no module_jsonrpc_enabled=no module_lightmapper_cpu_enabled=no module_mbedtls_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_ogg_enabled=no module_opensimplex_enabled=no module_opus_enabled=no module_pvr_enabled=no module_raycast_enabled=no module_squish_enabled=no module_stb_vorbis_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_visual_script_enabled=no module_vorbis_enabled=no module_webm_enabled=no module_webp_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no module_xatlas_unwrap_enabled=no module_regex_enabled=no use_ubsan=yes use_asan=yes
artifact: true
- name: Editor Thread Sanitizer
cache-name: linux3x-editor-thread-sanitizer
target: debug
tools: true
tests: true
sconsflags: use_tsan=yes module_webm_enabled=no module_webp_enabled=no module_lightmapper_cpu_enabled=no module_denoise_enabled=no module_webxr_enabled=no module_mobile_vr_enabled=no use_llvm=yes CCFLAGS="-O2"
artifact: true
- name: Editor Memory Sanitizer
cache-name: linux3x-editor-memory-sanitizer
target: debug
tools: true
tests: true
sconsflags: use_msan=yes debug_symbols=yes use_llvm=yes
artifact: true
# - name: Editor Mono Sanitizers LLVM
# cache-name: linux3x-editor-mono-sanitizers-llvm
# target: debug
# tools: true
# tests: false
# sconsflags: module_mono_enabled=yes mono_glue=no use_ubsan=yes use_asan=yes use_llvm=yes
# build-mono: true
# bin: "./bin/godot.x11.tools.64.llvms.mono"
# artifact: true
#
# - name: Editor Sanitizers LLVM
# cache-name: linux3x-editor-sanitizers-llvm
# target: debug
# tools: true
# tests: false
# sconsflags: use_ubsan=yes use_asan=yes use_llvm=yes
# bin: "./bin/godot.x11.tools.64.llvms"
# artifact: true
#
# - name: Template Release Sanitizers LLVM
# cache-name: linux3x-template-sanitizers-llvm
# target: release
# tools: false
# tests: false
# sconsflags: use_ubsan=yes use_asan=yes use_llvm=yes optimize=none
# bin: "./bin/godot.x11.opt.64.llvms"
# artifact: true
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ env.GODOT_BASE_BRANCH }}
path: godot
- name: Linux dependencies
shell: bash
run: |
# Azure repositories are not reliable, we need to prevent azure giving us packages.
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update
# The actual dependencies
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 Godot build cache
uses: ./.github/actions/godot-cache
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Setup python and scons
uses: ./.github/actions/godot-deps
- name: Compilation
run: |
ls
cd godot
scons ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} target=${{ matrix.target }} tools=${{ matrix.tools }} -j2
cd ..
# Generate mono glue
- name: Mono Glue Generator
if: ${{ matrix.build-mono }}
run: |
cd godot
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --headless --generate-mono-glue modules/mono/glue || true
cd ..
# Rebuild with mono
- name: Compilation Mono Glue
if: ${{ matrix.build-mono }}
run: |
cd godot
scons ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} target=${{ matrix.target }} tools=${{ matrix.tools }} mono_glue=yes -j2
ls bin/
cd ..
- name: Upload artifact
uses: ./.github/actions/upload-artifact
if: ${{ matrix.artifact }}
with:
name: ${{ matrix.cache-name }}