Add template_release build for Linux CI #964
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: | |
branches: [ master, github_actions ] | |
pull_request: | |
branches: [ master ] | |
# Global Cache Settings | |
env: | |
SCONS_CACHE_LIMIT: 4096 | |
jobs: | |
linux: | |
runs-on: "ubuntu-20.04" | |
name: ${{matrix.name}} | |
strategy: | |
matrix: | |
include: | |
# Just to check if building still works in that version | |
- name: Editor debug build (4.0) | |
precision: single | |
target: editor | |
dev_build: yes | |
#dev_mode: yes # Flags specified manually. We want extra checks but we don't want to compile tests | |
production: no | |
executable_name: godot.linuxbsd.editor.dev.x86_64 | |
godot_base_branch: "4.0" | |
# Just to check if building works in Godot master | |
- name: Editor debug build (master) | |
precision: single | |
target: editor | |
dev_build: yes | |
#dev_mode: yes # Flags specified manually. We want extra checks but we don't want to compile tests | |
production: no | |
executable_name: godot.linuxbsd.editor.dev.x86_64 | |
godot_base_branch: "master" | |
- name: Editor debug build | |
precision: single | |
target: editor | |
dev_build: yes | |
#dev_mode: yes # Flags specified manually. We want extra checks but we don't want to compile tests | |
production: no | |
executable_name: godot.linuxbsd.editor.dev.x86_64 | |
godot_base_branch: "4.1" | |
- name: Editor build | |
precision: single | |
target: editor | |
dev_build: no | |
#dev_mode: no | |
production: yes | |
executable_name: godot.linuxbsd.editor.x86_64 | |
godot_base_branch: "4.1" | |
- name: Template build | |
precision: single | |
target: template_release | |
dev_build: no | |
#dev_mode: no | |
production: yes | |
executable_name: godot.linuxbsd.template_release.x86_64 | |
godot_base_branch: "4.1" | |
- name: Editor build with 64-bit floats | |
precision: double | |
target: editor | |
dev_build: no | |
#dev_mode: no | |
production: yes | |
executable_name: godot.linuxbsd.editor.double.x86_64 | |
godot_base_branch: "4.1" | |
steps: | |
# Clone Godot | |
- uses: actions/checkout@v3 | |
with: | |
repository: godotengine/godot | |
ref: ${{ matrix.godot_base_branch }} | |
# Clone our module under the correct directory | |
- uses: actions/checkout@v3 | |
with: | |
path: modules/voxel | |
# Setup custom buildroot so we may use an old but compatible GLIBC version, while keeping recent toolchain. | |
# This allows to make production builds that are compatible with older Linux distros. | |
# TODO Enhancement: cache buildroot so future runs can use it? | |
# TODO Enhancement: make buildroot setup a self-contained step. There are bits of setup elsewhere. | |
# Currently I also setup `PATH` in the Compilation step because modifications | |
# do not persist between steps (?). I also placed this step after checkout because the checkout step changes | |
# the working directory for all following steps. | |
# TODO Bug: pkg-config wrongly points to lib instead of lib64 for arch-dependent header. | |
# Using `sed` to patch it as a workaround. | |
# See https://github.com/godotengine/buildroot/issues/6 | |
- name: Setup buildroot | |
run: | | |
wget https://download.tuxfamily.org/godotengine/toolchains/linux/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 | |
tar -xjf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 | |
cd x86_64-godot-linux-gnu_sdk-buildroot | |
sed -i x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g" | |
./relocate-sdk.sh | |
cd .. | |
# [Already provided by the custom buildroot] | |
# Azure repositories are not reliable, we need to prevent azure giving us packages. | |
# - name: Make apt sources.list use the default Ubuntu repositories | |
# run: | | |
# sudo rm -f /etc/apt/sources.list.d/* | |
# sudo cp -f misc/ci/sources.list /etc/apt/sources.list | |
# sudo apt-get update | |
# [Already provided by the custom buildroot] | |
# Install all packages (except scons) | |
# - name: Configure dependencies | |
# run: | | |
# sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ | |
# libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm | |
# Upload cache on completion and check it out now | |
- name: Load .scons_cache directory | |
id: linux-cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{github.workspace}}/.scons_cache/ | |
key: ${{matrix.executable_name}}-${{matrix.godot_base_branch}}-${{github.ref}}-${{github.sha}} | |
restore-keys: | | |
${{matrix.executable_name}}-${{matrix.godot_base_branch}}-${{github.ref}}-${{github.sha}} | |
${{matrix.executable_name}}-${{matrix.godot_base_branch}}-${{github.ref}} | |
${{matrix.executable_name}}-${{matrix.godot_base_branch}} | |
# [Already provided by the custom buildroot] | |
# Use python 3.x release (works cross platform; best to keep self contained in it's own step) | |
# - name: Set up Python 3.x | |
# uses: actions/setup-python@v4 | |
# with: | |
# # Semantic version range syntax or exact version of a Python version | |
# python-version: '3.x' | |
# # Optional - x64 or x86 architecture, defaults to x64 | |
# architecture: 'x64' | |
# [Already provided by the custom buildroot] | |
# Setup scons, print python version and scons version info, so if anything is broken it won't run the build. | |
# - name: Configuring Python packages | |
# run: | | |
# python -c "import sys; print(sys.version)" | |
# python -m pip install scons | |
# python --version | |
# scons --version | |
# We should always be explicit with our flags usage here since it's gonna be sure to always set those flags | |
- name: Compilation | |
env: | |
SCONS_CACHE: ${{github.workspace}}/.scons_cache/ | |
run: | | |
PATH=${GITHUB_WORKSPACE}/x86_64-godot-linux-gnu_sdk-buildroot/bin:$PATH | |
scons -j2 verbose=yes warnings=extra werror=yes platform=linuxbsd tests=no dev_build=${{matrix.dev_build}} dev_mode=yes target=${{matrix.target}} production=${{matrix.production}} precision=${{matrix.precision}} | |
# Make build available | |
- uses: actions/upload-artifact@v3 | |
if: ${{ matrix.dev_build != 'yes' }} | |
with: | |
name: ${{matrix.executable_name}} | |
path: bin/${{matrix.executable_name}} | |