Compare commits

..

15 Commits

Author SHA1 Message Date
03e1f55bb2 Merge branch 'infra/exporter-image' into customized-moa
All checks were successful
Build Godot Engine / Compile Linux (All Targets) (push) Successful in 16m31s
Build Godot Engine / Compile Windows (All Targets) (push) Successful in 20m21s
Build Godot Engine / Publish Builds (push) Successful in 16s
2026-01-20 10:43:10 +01:00
2edba73674 Fix bin selector for linux upload
All checks were successful
Build Godot Engine / Compile Windows (All Targets) (push) Successful in 22m48s
Build Godot Engine / Compile Linux (All Targets) (push) Successful in 19m3s
Build Godot Engine / Publish Builds (push) Successful in 38s
2026-01-01 13:48:05 +01:00
6dd4226698 Only upload the actual bins
Some checks failed
Build Godot Engine / Compile Linux (All Targets) (push) Failing after 35m2s
Build Godot Engine / Compile Windows (All Targets) (push) Successful in 21m18s
Build Godot Engine / Publish Builds (push) Has been skipped
2025-12-31 20:06:24 +01:00
c0a85cd70b Attempt building from cache
Some checks failed
Build Godot Engine / Compile Windows (All Targets) (push) Has been cancelled
Build Godot Engine / Compile Linux (All Targets) (push) Has been cancelled
Build Godot Engine / Publish Builds (push) Has been cancelled
2025-12-31 19:39:47 +01:00
ed2b28d7b1 Remove llvm from linux build
Some checks failed
Build Godot Engine / Compile Linux (All Targets) (push) Failing after 18m49s
Build Godot Engine / Compile Windows (All Targets) (push) Failing after 1m22s
Build Godot Engine / publish (push) Has been skipped
2025-12-31 19:11:46 +01:00
b92507e2cd Force new image pull
Some checks failed
Build Godot Engine / Compile Linux (All Targets) (push) Failing after 1m11s
Build Godot Engine / Compile Windows (All Targets) (push) Failing after 1m9s
Build Godot Engine / publish (push) Has been skipped
2025-12-31 19:07:58 +01:00
5fcb49df2a Remove image push and trigger new build workflow
Some checks failed
Build Godot Engine / Compile Linux (All Targets) (push) Failing after 29s
Build Godot Engine / Compile Windows (All Targets) (push) Failing after 1m48s
Build Godot Engine / publish (push) Has been skipped
2025-12-31 19:06:05 +01:00
69bc09b362 Try running new build
Some checks failed
Publish Export Image / push_to_registry (push) Failing after 1m11s
2025-12-31 19:03:48 +01:00
d180c7bcbd Build on pushes to infra branch
Some checks failed
Publish Export Image / push_to_registry (push) Failing after 56s
2025-12-31 12:21:58 +01:00
a79cab1d7b Build using podman 2025-12-31 12:20:41 +01:00
912224d35e Trigger on this infra branch 2025-12-30 16:49:40 +01:00
63ab6e3f58 Run on workstation
Some checks failed
Build Godot Engine / Build linuxbsd editor (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_debug (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_release (push) Has been cancelled
Build Godot Engine / Build windows template_debug (push) Has been cancelled
Build Godot Engine / Build windows editor (push) Has been cancelled
Build Godot Engine / Build windows template_release (push) Has been cancelled
Build Godot Engine / publish (push) Has been cancelled
2025-12-30 16:41:49 +01:00
f75b2e00df add workflow dispatch
Some checks failed
Build Godot Engine / Build windows template_debug (push) Has been cancelled
Build Godot Engine / Build windows editor (push) Has been cancelled
Build Godot Engine / Build windows template_release (push) Has been cancelled
Build Godot Engine / publish (push) Has been cancelled
Build Godot Engine / Build linuxbsd editor (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_release (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_debug (push) Has been cancelled
2025-12-30 16:41:03 +01:00
d6febaaa11 Add main branch
Some checks failed
Build Godot Engine / Build linuxbsd editor (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_release (push) Has been cancelled
Build Godot Engine / Build windows template_debug (push) Has been cancelled
Build Godot Engine / Build windows editor (push) Has been cancelled
Build Godot Engine / Build windows template_release (push) Has been cancelled
Build Godot Engine / publish (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_debug (push) Has been cancelled
2025-12-30 16:37:44 +01:00
e3e3ae0955 Add exporter image registry
Some checks failed
Build Godot Engine / Build linuxbsd editor (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_release (push) Has been cancelled
Build Godot Engine / Build windows template_debug (push) Has been cancelled
Build Godot Engine / Build windows editor (push) Has been cancelled
Build Godot Engine / Build windows template_release (push) Has been cancelled
Build Godot Engine / publish (push) Has been cancelled
Build Godot Engine / Build linuxbsd template_debug (push) Has started running
2025-12-30 16:36:36 +01:00
2 changed files with 155 additions and 124 deletions

View File

@ -1,146 +1,150 @@
name: Build Godot Engine
on:
workflow_dispatch:
push:
branches: [ "customized-moa" ]
branches: [ "customized-moa", "infra/exporter-image" ]
create:
tags:
- 'v*'
jobs:
# --- BUILD JOBS (Parallel Matrix) ---
build-engine:
name: Build ${{ matrix.platform }} ${{ matrix.target }}
runs-on: heavy-linux
# =================================================================
# JOB 1: LINUX COMPILATION (Consolidated)
# =================================================================
compile-linux:
name: Compile Linux (All Targets)
# Target your specific powerful node here
runs-on: heavy-linux
# 1. NEW: Define the container dynamically per matrix entry
# Run inside the Fedora Builder image we created with Kaniko
container:
image: registry.forge.northernlighthouseinteractive.com/${{ gitea.repository_owner }}/godot-builder-${{ matrix.builder }}:latest
# Pull credentials (if your registry is private)
image: registry.forge.northernlighthouseinteractive.com/northern-lighthouse/godot-builder-linux:8740f6e
credentials:
username: ${{ gitea.repository_owner }}
password: ${{ secrets.ORG_ACTIONS_TOKEN }}
# Set resource limits for the JOB container
options: --cpus 24 --memory 30g
# Optional: Mount a host volume for SCons cache to speed up repeat builds drastically
volumes:
- /mnt/scons_cache:/root/.scons_cache
strategy:
fail-fast: false
matrix:
include:
# Windows
- platform: windows
target: editor
production: yes
artifact_name: godot-windows-editor
builder: windows
extra_flags: "use_mingw=yes d3d12=no"
- platform: windows
target: template_debug
production: no
artifact_name: godot-windows-debug
builder: windows
extra_flags: "use_mingw=yes d3d12=no"
- platform: windows
target: template_release
production: yes
artifact_name: godot-windows-release
builder: windows
extra_flags: "use_mingw=yes d3d12=no"
# Linux
- platform: linuxbsd
target: editor
production: yes
artifact_name: godot-linux-editor
builder: linux
- platform: linuxbsd
target: template_debug
production: no
artifact_name: godot-linux-debug
builder: linux
- platform: linuxbsd
target: template_release
production: yes
artifact_name: godot-linux-release
builder: linux
steps:
- name: Checkout Source (Native Git)
run: |
echo "Initializing Git..."
git config --global --add safe.directory '*'
git init
# 1. Clean the Server URL using shell commands
# We strip both http:// and https:// to be safe
SERVER_DOMAIN=$(echo "${{ gitea.server_url }}" | sed 's|https://||' | sed 's|http://||')
# 2. Add Remote with Token Auth
# We use the $SERVER_DOMAIN variable we just created
git remote add origin "https://${{ gitea.actor }}:${{ secrets.ORG_ACTIONS_TOKEN }}@$SERVER_DOMAIN/${{ gitea.repository }}.git"
# 3. Fetch specific commit
echo "Fetching commit ${{ gitea.sha }}..."
git fetch --depth 1 origin ${{ gitea.sha }}
git checkout FETCH_HEAD
# 4. Handle Submodules
echo "Updating submodules..."
# Configure git to use credentials for submodules on the same domain
git config --global url."https://${{ gitea.actor }}:${{ secrets.ORG_ACTIONS_TOKEN }}@$SERVER_DOMAIN/".insteadOf "https://$SERVER_DOMAIN/"
git submodule update --init --recursive
# 2. UPDATED: No more 'buildah' script. Run SCons directly.
- name: Compile (${{ matrix.platform }})
run: |
echo "Starting Native Build..."
# Use the injected limit, fallback to nproc if missing
THREADS=${MAX_CORES:-$(nproc)}
echo "Building for ${{ matrix.platform }} (Target: ${{ matrix.target }}) with $THREADS threads."
# Base SCons command
# Note: We construct flags dynamically based on the matrix variables
scons platform=${{ matrix.platform }} \
target=${{ matrix.target }} \
arch=x86_64 \
precision=double \
production=${{ matrix.production }} \
${{ matrix.extra_flags }} \
-j$THREADS
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.artifact_name }}
path: bin/godot.*
# --- PUBLISH JOB ---
publish:
needs: build-engine
runs-on: ubuntu-latest
steps:
- name: Checkout Source
uses: actions/checkout@v3
with:
submodules: recursive
- name: Download All Artifacts
- name: Setup Cache
# If you mapped the volume above, configure SCons to use it
run: |
echo "Setting up SCons Cache..."
export SCONS_CACHE=/root/.scons_cache
export SCONS_CACHE_LIMIT=5000
- name: Compile Editor
run: |
echo "Compiling Linux Editor..."
scons platform=linux target=editor precision=double production=yes arch=x86_64 -j$(nproc)
- name: Compile Templates
run: |
echo "Compiling Linux Templates..."
scons platform=linux target=template_release precision=double production=yes arch=x86_64 -j$(nproc)
scons platform=linux target=template_debug precision=double production=yes arch=x86_64 -j$(nproc)
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: linux-build-artifacts
path: bin/godot.*
# =================================================================
# JOB 2: WINDOWS COMPILATION (Consolidated)
# =================================================================
compile-windows:
name: Compile Windows (All Targets)
# You can target a DIFFERENT node here to run in parallel!
# e.g., runs-on: verdantforest
runs-on: heavy-linux
# We use the SAME Linux builder because it has MinGW for cross-compilation
container:
image: registry.forge.northernlighthouseinteractive.com/northern-lighthouse/godot-builder-windows:8740f6e
credentials:
username: ${{ gitea.repository_owner }}
password: ${{ secrets.ORG_ACTIONS_TOKEN }}
volumes:
- /mnt/scons_cache:/root/.scons_cache
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Setup Cache
run: |
export SCONS_CACHE=/root/.scons_cache
export SCONS_CACHE_LIMIT=5000
- name: Compile Editor
run: |
echo "Compiling Windows Editor..."
# production=yes handles the optimization flags automatically
scons platform=windows target=editor precision=double production=yes arch=x86_64 use_mingw=yes use_llvm=yes d3d12=no -j$(nproc)
- name: Compile Templates
run: |
echo "Compiling Windows Templates..."
scons platform=windows target=template_release precision=double production=yes arch=x86_64 use_mingw=yes use_llvm=yes d3d12=no -j$(nproc)
scons platform=windows target=template_debug precision=double production=yes arch=x86_64 use_mingw=yes use_llvm=yes d3d12=no -j$(nproc)
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: windows-build-artifacts
path: bin/godot.*
# =================================================================
# JOB 3: PUBLISH
# =================================================================
publish:
name: Publish Builds
needs: [compile-linux, compile-windows]
runs-on: ubuntu-latest
steps:
- name: Download Linux
uses: actions/download-artifact@v3
with:
path: dist
name: linux-build-artifacts
path: .
- name: Make script executable
run: chmod +x .gitea/workflows/scripts/publish.sh
- name: Package and Publish
uses: docker://alpine:latest
env:
API_URL: https://registry.forge.northernlighthouseinteractive.com/api/packages/${{ gitea.repository_owner }}/generic
TOKEN: ${{ secrets.ORG_ACTIONS_TOKEN }}
ACTOR: ${{ gitea.repository_owner }}
VERSION: ${{ gitea.sha }}-${{ gitea.run_number }}
- name: Download Windows
uses: actions/download-artifact@v3
with:
entrypoint: /bin/sh
args: .gitea/workflows/scripts/publish.sh
name: windows-build-artifacts
path: bin/godot.*
# - name: Package and Publish
# uses: docker://alpine:latest
# env:
# API_URL: https://registry.forge.northernlighthouseinteractive.com/api/packages/${{ gitea.repository_owner }}/generic
# TOKEN: ${{ secrets.ORG_ACTIONS_TOKEN }}
# ACTOR: ${{ gitea.repository_owner }}
# VERSION: ${{ gitea.sha }}-${{ gitea.run_number }}
# with:
# entrypoint: /bin/sh
# args: .gitea/workflows/scripts/publish.sh
# - name: Publish Artifacts
# env:
# API_URL: https://registry.forge.northernlighthouseinteractive.com/api/packages/${{ gitea.repository_owner }}/generic
# TOKEN: ${{ secrets.ORG_ACTIONS_TOKEN }}
# ACTOR: ${{ gitea.repository_owner }}
# VERSION: ${{ gitea.sha }}-${{ gitea.run_number }}
# run: |
# echo "Publishing artifacts..."
# apk add curl zip
# curl --fail --user "${{ACTOR}}:${{TOKEN}}" \
# --upload-file "godot-editor-windows.zip" \
# "${{API_URL}}/godot-editor-windows/${{VERSION}}/godot-editor-windows.zip"
# ... Your existing publish script logic here ...

27
Dockerfile Normal file
View File

@ -0,0 +1,27 @@
# Dockerfile
FROM ubuntu:24.04
# Prevent interactive prompts during build
ENV DEBIAN_FRONTEND=noninteractive
# 1. Install Node.js (Required for Gitea/GitHub Actions)
# 2. Install Godot Runtime Dependencies (Required for export)
# 3. Install Git/Curl (Useful utilities)
RUN apt-get update && apt-get install -y \
nodejs \
npm \
git \
curl \
libfontconfig1 \
libx11-6 \
libxcursor1 \
libxext6 \
libxfixes3 \
libxi6 \
libxinerama1 \
libxrandr2 \
libxrender1 \
libgl1 \
ca-certificates \
unzip \
&& rm -rf /var/lib/apt/lists/*