[CI] Refactor CI actions, use sub-actions, matrices.

This commit is contained in:
Fabio Alessandrelli 2021-09-01 17:26:01 +02:00
parent 8a211219c7
commit 8773b83773
11 changed files with 372 additions and 590 deletions

36
.github/actions/godot-build/action.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: Build Godot
description: Build Godot with the provided options.
inputs:
target:
description: The scons target (debug/release_debug/release).
default: "debug"
tools:
description: If tools are to be built.
default: false
tests:
description: If tests are to be built.
default: false
platform:
description: The Godot platform to build.
required: false
sconsflags:
default: ""
scons-cache:
description: The scons cache path.
default: "${{ github.workspace }}/.scons-cache/"
scons-cache-limit:
description: The scons cache size limit.
default: 4096
runs:
using: "composite"
steps:
- name: Scons Build
shell: sh
env:
SCONSFLAGS: ${{ inputs.sconsflags }}
SCONS_CACHE: ${{ inputs.scons-cache }}
SCONS_CACHE_LIMIT: ${{ inputs.scons-cache-limit }}
run: |
echo "Building with flags:" ${{ env.SCONSFLAGS }}
scons p=${{ inputs.platform }} target=${{ inputs.target }} tools=${{ inputs.tools }} tests=${{ inputs.tests }} --jobs=2 ${{ env.SCONSFLAGS }}
ls -l bin/

22
.github/actions/godot-cache/action.yml vendored Normal file
View File

@ -0,0 +1,22 @@
name: Setup Godot build cache
description: Setup Godot build cache.
inputs:
cache-name:
description: The cache base name (job name by default).
default: "${{github.job}}"
scons-cache:
description: The scons cache path.
default: "${{github.workspace}}/.scons-cache/"
runs:
using: "composite"
steps:
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
uses: actions/cache@v2
with:
path: ${{inputs.scons-cache}}
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}

27
.github/actions/godot-deps/action.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: Setup python and scons
description: Setup python, install the pip version of scons.
inputs:
python-version:
description: The python version to use.
default: "3.x"
python-arch:
description: The python architecture.
default: "x64"
runs:
using: "composite"
steps:
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
# Semantic version range syntax or exact version of a Python version
python-version: ${{ inputs.python-version }}
# Optional - x64 or x86 architecture, defaults to x64
architecture: ${{ inputs.python-arch }}
- name: Setup scons
shell: bash
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
scons --version

View File

@ -0,0 +1,19 @@
name: Upload Godot artifact
description: Upload the Godot artifact.
inputs:
name:
description: The artifact name.
default: "${{ github.job }}"
path:
description: The path to upload.
required: true
default: "bin/*"
runs:
using: "composite"
steps:
- name: Upload Godot Artifact
uses: actions/upload-artifact@v2
with:
name: ${{ inputs.name }}
path: ${{ inputs.path }}
retention-days: 14

View File

@ -4,8 +4,11 @@ on: [push, pull_request]
# Global Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=android verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-android
cancel-in-progress: true
jobs: jobs:
android-template: android-template:
@ -28,48 +31,35 @@ jobs:
with: with:
java-version: 8 java-version: 8
# Upload cache on completion and check it out now - name: Setup Godot build cache
- name: Load .scons_cache directory uses: ./.github/actions/godot-cache
id: android-template-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true continue-on-error: true
# Use python 3.x release (works cross platform) - name: Setup python and scons
- name: Set up Python 3.x uses: ./.github/actions/godot-deps
uses: actions/setup-python@v2
- name: Compilation (armv7)
uses: ./.github/actions/godot-build
with: with:
# Semantic version range syntax or exact version of a Python version sconsflags: ${{ env.SCONSFLAGS }} android_arch=armv7
python-version: '3.x' platform: android
# Optional - x64 or x86 architecture, defaults to x64 target: release
architecture: 'x64' tools: false
- name: Configuring Python packages - name: Compilation (arm64v8)
run: | uses: ./.github/actions/godot-build
python -c "import sys; print(sys.version)" with:
python -m pip install scons sconsflags: ${{ env.SCONSFLAGS }} android_arch=arm64v8
python --version platform: android
scons --version target: release
tools: false
- name: Compilation - name: Generate Godot templates
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: | run: |
scons target=release tools=no android_arch=armv7
scons target=release tools=no android_arch=arm64v8
cd platform/android/java cd platform/android/java
./gradlew generateGodotTemplates ./gradlew generateGodotTemplates
cd ../../.. cd ../../..
ls -l bin/ ls -l bin/
- uses: actions/upload-artifact@v2 - name: Upload artifact
with: uses: ./.github/actions/upload-artifact
name: ${{ github.job }}
path: bin/*
retention-days: 14

View File

@ -4,8 +4,11 @@ on: [push, pull_request]
# Global Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=iphone verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-ios
cancel-in-progress: true
jobs: jobs:
ios-template: ios-template:
@ -15,45 +18,20 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# Upload cache on completion and check it out now - name: Setup Godot build cache
- name: Load .scons_cache directory uses: ./.github/actions/godot-cache
id: ios-template-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true continue-on-error: true
# Use python 3.x release (works cross platform) - name: Setup python and scons
- name: Set up Python 3.x uses: ./.github/actions/godot-deps
uses: actions/setup-python@v2
- name: Compilation (armv7)
uses: ./.github/actions/godot-build
with: with:
# Semantic version range syntax or exact version of a Python version sconsflags: ${{ env.SCONSFLAGS }}
python-version: '3.x' platform: iphone
# Optional - x64 or x86 architecture, defaults to x64 target: release
architecture: 'x64' tools: false
# You can test your matrix by printing the current Python version - name: Upload artifact
- name: Configuring Python packages uses: ./.github/actions/upload-artifact
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons target=release tools=no
ls -l bin/
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: bin/*
retention-days: 14

View File

@ -4,10 +4,13 @@ on: [push, pull_request]
# Global Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=javascript verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_LIMIT: 4096
EM_VERSION: 2.0.25 EM_VERSION: 2.0.25
EM_CACHE_FOLDER: 'emsdk-cache' EM_CACHE_FOLDER: "emsdk-cache"
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-javascript
cancel-in-progress: true
jobs: jobs:
javascript-template: javascript-template:
@ -17,26 +20,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# 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
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
id: javascript-template-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# Additional cache for Emscripten generated system libraries # Additional cache for Emscripten generated system libraries
- name: Load Emscripten cache - name: Load Emscripten cache
id: javascript-template-emscripten-cache id: javascript-template-emscripten-cache
@ -45,23 +28,6 @@ jobs:
path: ${{env.EM_CACHE_FOLDER}} path: ${{env.EM_CACHE_FOLDER}}
key: ${{env.EM_VERSION}}-${{github.job}} key: ${{env.EM_VERSION}}-${{github.job}}
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
uses: actions/setup-python@v2
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'
# You can test your matrix by printing the current Python version
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Set up Emscripten latest - name: Set up Emscripten latest
uses: mymindstorm/setup-emsdk@v10 uses: mymindstorm/setup-emsdk@v10
with: with:
@ -72,15 +38,20 @@ jobs:
run: | run: |
emcc -v emcc -v
- name: Compilation - name: Setup Godot build cache
env: uses: ./.github/actions/godot-cache
SCONS_CACHE: ${{github.workspace}}/.scons_cache/ continue-on-error: true
run: |
scons target=release tools=no use_closure_compiler=yes
ls -l bin/
- uses: actions/upload-artifact@v2 - name: Setup python and scons
uses: ./.github/actions/godot-deps
- name: Compilation
uses: ./.github/actions/godot-build
with: with:
name: ${{ github.job }} sconsflags: ${{ env.SCONSFLAGS }}
path: bin/* platform: javascript
retention-days: 14 target: release
tools: false
- name: Upload artifact
uses: ./.github/actions/upload-artifact

View File

@ -4,218 +4,129 @@ on: [push, pull_request]
# Global Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=linuxbsd verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux
cancel-in-progress: true
jobs: jobs:
linux-editor-mono: build-linux:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
name: Editor w/ Mono (target=release_debug, tools=yes) 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_glue=no
bin: "./bin/godot.x11.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/godot.x11.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_glue=no
build-mono: false
artifact: true
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# Azure repositories are not reliable, we need to prevent azure giving us packages. - name: Linux dependencies
- name: Make apt sources.list use the default Ubuntu repositories shell: bash
run: | run: |
# Azure repositories are not reliable, we need to prevent azure giving us packages.
sudo rm -f /etc/apt/sources.list.d/* sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update sudo apt-get update
# The actual dependencies
# Install all packages (except scons)
- name: Configure dependencies
run: |
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev xvfb \
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-editor-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# 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@v2
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'
# 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: |
scons tools=yes target=release_debug module_mono_enabled=yes mono_glue=no
xvfb-run ./bin/godot.x11.opt.tools.64.mono --generate-mono-glue modules/mono/glue || true
scons tools=yes target=release_debug module_mono_enabled=yes mono_glue=yes
ls -l bin/
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: bin/*
retention-days: 14
linux-template-mono:
runs-on: "ubuntu-20.04"
name: Template w/ Mono (target=release, tools=no)
steps:
- uses: actions/checkout@v2
# 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
# Install all packages (except scons)
- name: Configure dependencies
run: |
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ 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 libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev \
libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip
# Upload cache on completion and check it out now - name: Setup Godot build cache
- name: Load .scons_cache directory uses: ./.github/actions/godot-cache
id: linux-template-cache
uses: actions/cache@v2
with: with:
path: ${{github.workspace}}/.scons_cache/ cache-name: ${{ matrix.cache-name }}
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true continue-on-error: true
# Use python 3.x release (works cross platform) - name: Setup python and scons
- name: Set up Python 3.x uses: ./.github/actions/godot-deps
uses: actions/setup-python@v2
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'
# You can test your matrix by printing the current Python version
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Compilation - name: Compilation
env: uses: ./.github/actions/godot-build
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons target=release tools=no module_mono_enabled=yes mono_glue=no
ls -l bin/
- uses: actions/upload-artifact@v2
with: with:
name: ${{ github.job }} sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }}
path: bin/* platform: linuxbsd
retention-days: 14 target: ${{ matrix.target }}
tools: ${{ matrix.tools }}
linux-editor-sanitizers: # Generate mono glue
runs-on: "ubuntu-20.04" - name: Generate Mono glue code
name: Editor and exported project with sanitizers (target=debug/release, tools=yes/no, use_ubsan=yes, use_asan=yes) if: ${{ matrix.build-mono }}
steps:
- uses: actions/checkout@v2
# Azure repositories are not reliable, we need to prevent azure giving us packages.
- name: Make apt sources.list use the default Ubuntu repositories
run: | run: |
sudo rm -f /etc/apt/sources.list.d/* DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --generate-mono-glue modules/mono/glue || true
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update
# Install all packages (except scons) # Rebuild with mono
- name: Configure dependencies - name: Compilation (mono_glue=yes)
run: | uses: ./.github/actions/godot-build
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ if: ${{ matrix.build-mono }}
libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm \
xvfb wget2 unzip
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
id: linux-sanitizer-cache
uses: actions/cache@v2
with: with:
path: ${{github.workspace}}/.scons_cache/ sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} mono_glue=yes
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}} platform: linuxbsd
restore-keys: | target: ${{ matrix.target }}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}} tools: ${{ matrix.tools }}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# Use python 3.x release (works cross platform; best to keep self contained in it's own step) # Download and extract zip archive with project, folder is renamed to be able to easy change used project
- name: Set up Python 3.x - name: Download test project
uses: actions/setup-python@v2 if: ${{ matrix.test }}
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'
# 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: | run: |
python -c "import sys; print(sys.version)" wget https://github.com/qarmin/RegressionTestProject/archive/3.x.zip
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: |
scons tools=yes target=debug use_asan=yes use_ubsan=yes
ls -l bin/
# Download and test project to check leaks and invalid memory usage.
# CI has no audio device, so use the Dummy audio driver to avoid spurious error messages.
- name: Importing and running project project
run: |
wget2 https://github.com/qarmin/RegressionTestProject/archive/3.x.zip
unzip 3.x.zip unzip 3.x.zip
mv "RegressionTestProject-3.x" "test_project" mv "RegressionTestProject-3.x" "test_project"
echo "----- Open editor to check for memory leaks -----" # Editor is quite complicated piece of software, so it is easy to introduce bug here
DRI_PRIME=0 xvfb-run bin/godot.x11.tools.64s --audio-driver Dummy -e -q --path test_project 2>&1 | tee sanitizers_log.txt || true - name: Open and close editor
if: ${{ matrix.test }}
run: |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy -e -q --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt misc/scripts/check_ci_log.py sanitizers_log.txt
echo "----- Run and test project -----" # Run test project
DRI_PRIME=0 xvfb-run bin/godot.x11.tools.64s 30 --video-driver GLES3 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true - name: Run project
if: ${{ matrix.test }}
run: |
DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 30 --video-driver GLES3 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt misc/scripts/check_ci_log.py sanitizers_log.txt
# Check class reference # Check class reference
- name: Check for class reference updates - name: Check for class reference updates
if: ${{ matrix.test }}
run: | run: |
echo "Running --doctool to see if this changes the public API without updating the documentation." echo "Running --doctool to see if this changes the public API without updating the documentation."
echo -e "If a diff is shown, it means that your code/doc changes are incomplete and you should update the class reference with --doctool.\n\n" echo -e "If a diff is shown, it means that your code/doc changes are incomplete and you should update the class reference with --doctool.\n\n"
DRI_PRIME=0 xvfb-run bin/godot.x11.tools.64s --doctool . 2>&1 > /dev/null || true DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --doctool . 2>&1 > /dev/null || true
git diff --color --exit-code git diff --color --exit-code && ! git ls-files --others --exclude-standard | sed -e 's/^/New doc file missing in PR: /' | grep 'xml$'
- name: Upload artifact
uses: ./.github/actions/upload-artifact
if: ${{ matrix.artifact }}
with:
name: ${{ matrix.cache-name }}

View File

@ -4,108 +4,52 @@ on: [push, pull_request]
# Global Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=osx verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos
cancel-in-progress: true
jobs: jobs:
macos-editor: build-macos:
runs-on: "macos-latest" runs-on: "macos-latest"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Editor (target=release_debug, tools=yes)
cache-name: macos-editor
target: release_debug
tools: true
bin: "./bin/godot.osx.opt.tools.64"
name: Editor (target=release_debug, tools=yes) - name: Template (target=release, tools=no)
cache-name: macos-template
target: release
tools: false
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# Upload cache on completion and check it out now - name: Setup Godot build cache
- name: Load .scons_cache directory uses: ./.github/actions/godot-cache
id: macos-editor-cache
uses: actions/cache@v2
with: with:
path: ${{github.workspace}}/.scons_cache/ cache-name: ${{ matrix.cache-name }}
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true continue-on-error: true
# Use python 3.x release (works cross platform; best to keep self contained in it's own step) - name: Setup python and scons
- name: Set up Python 3.x uses: ./.github/actions/godot-deps
uses: actions/setup-python@v2
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'
# 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: |
scons tools=yes target=release_debug
ls -l bin/
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: bin/*
retention-days: 14
macos-template:
runs-on: "macos-latest"
name: Template (target=release, tools=no)
steps:
- uses: actions/checkout@v2
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
id: macos-template-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
uses: actions/setup-python@v2
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'
# You can test your matrix by printing the current Python version
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Compilation - name: Compilation
env: uses: ./.github/actions/godot-build
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons target=release tools=no
ls -l bin/
- uses: actions/upload-artifact@v2
with: with:
name: ${{ github.job }} sconsflags: ${{ env.SCONSFLAGS }}
path: bin/* platform: osx
retention-days: 14 target: ${{ matrix.target }}
tools: ${{ matrix.tools }}
- name: Upload artifact
uses: ./.github/actions/upload-artifact
with:
name: ${{ matrix.cache-name }}

View File

@ -1,120 +1,61 @@
name: ☁ Server Builds name: ☁ Server Builds
on: [push, pull_request] on: [push, pull_request]
# Global Cache Settings # Global Settings
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=server verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no module_mono_enabled=yes mono_glue=no
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-server
cancel-in-progress: true
jobs: jobs:
linux-editor: build-server:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-20.04"
name: Linux Headless w/ Mono (target=release_debug, tools=yes) name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Linux Headless w/ Mono (target=release_debug, tools=yes)
cache-name: server-editor-mono
target: release_debug
tools: true
- name: Linux Server w/ Mono (target=release, tools=no)
cache-name: server-template-mono
target: release
tools: false
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# Azure repositories are not reliable, we need to prevent azure giving us packages. - name: Linux dependencies
- name: Make apt sources.list use the default Ubuntu repositories shell: bash
run: | 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 cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update sudo apt-get update
# The actual dependencies
# Install all packages (except scons)
- name: Configure dependencies
run: |
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ 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 libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev \
libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip
# Upload cache on completion and check it out now - name: Setup Godot build cache
- name: Load .scons_cache directory uses: ./.github/actions/godot-cache
id: linux-headless-cache
uses: actions/cache@v2
with: with:
path: ${{github.workspace}}/.scons_cache/ cache-name: ${{ matrix.cache-name }}
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true continue-on-error: true
# Use python 3.x release (works cross platform; best to keep self contained in it's own step) - name: Setup python and scons
- name: Set up Python 3.x uses: ./.github/actions/godot-deps
uses: actions/setup-python@v2
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'
# 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: |
scons -j2 verbose=yes warnings=all werror=yes platform=server tools=yes target=release_debug module_mono_enabled=yes mono_glue=no
linux-server:
runs-on: "ubuntu-20.04"
name: Linux Server w/ Mono (target=release, tools=no)
steps:
- uses: actions/checkout@v2
# 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 cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update
# 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-server-cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
uses: actions/setup-python@v2
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'
# You can test your matrix by printing the current Python version
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Compilation - name: Compilation
env: uses: ./.github/actions/godot-build
SCONS_CACHE: ${{github.workspace}}/.scons_cache/ with:
run: | sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }}
scons -j2 target=release tools=no module_mono_enabled=yes mono_glue=no platform: server
target: ${{ matrix.target }}
tools: ${{ matrix.tools }}

View File

@ -5,113 +5,56 @@ on: [push, pull_request]
# SCONS_CACHE for windows must be set in the build environment # SCONS_CACHE for windows must be set in the build environment
env: env:
GODOT_BASE_BRANCH: 3.x GODOT_BASE_BRANCH: 3.x
SCONSFLAGS: platform=windows verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 SCONSFLAGS: verbose=yes warnings=all werror=yes debug_symbols=no
SCONS_CACHE_MSVC_CONFIG: true SCONS_CACHE_MSVC_CONFIG: true
SCONS_CACHE_LIMIT: 4096
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows
cancel-in-progress: true
jobs: jobs:
windows-editor: build-windows:
# Windows 10 with latest image # Windows 10 with latest image
runs-on: "windows-latest" runs-on: "windows-latest"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Editor (target=release_debug, tools=yes)
cache-name: windows-editor
target: release_debug
tools: true
bin: "./bin/godot.windows.opt.tools.64.exe"
# Windows Editor - checkout with the plugin - name: Template (target=release, tools=no)
name: Editor (target=release_debug, tools=yes) cache-name: windows-template
target: release
tools: false
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# Upload cache on completion and check it out now - name: Setup Godot build cache
# Editing this is pretty dangerous for Windows since it can break and needs to be properly tested with a fresh cache. uses: ./.github/actions/godot-cache
- name: Load .scons_cache directory with:
id: windows-editor-cache cache-name: ${{ matrix.cache-name }}
uses: actions/cache@v2 continue-on-error: true
with:
path: /.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# 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@v2
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'
# Setup scons, print python version and scons version info, so if anything is broken it won't run the build. - name: Setup python and scons
- name: Configuring Python packages uses: ./.github/actions/godot-deps
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
- name: Compilation uses: ./.github/actions/godot-build
env: with:
SCONS_CACHE: /.scons_cache/ sconsflags: ${{ env.SCONSFLAGS }}
run: | platform: windows
scons tools=yes target=release_debug target: ${{ matrix.target }}
ls -l bin/ tools: ${{ matrix.tools }}
scons-cache-limit: 3072
- uses: actions/upload-artifact@v2 - name: Upload artifact
with: uses: ./.github/actions/upload-artifact
name: ${{ github.job }} with:
path: bin/* name: ${{ matrix.cache-name }}
retention-days: 14
windows-template:
runs-on: "windows-latest"
name: Template (target=release, tools=no)
steps:
- uses: actions/checkout@v2
# Upload cache on completion and check it out now
# Editing this is pretty dangerous for Windows since it can break and needs to be properly tested with a fresh cache.
- name: Load .scons_cache directory
id: windows-template-cache
uses: RevoluPowered/cache@v2.1
with:
path: /.scons_cache/
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{github.job}}-${{env.GODOT_BASE_BRANCH}}
continue-on-error: true
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
uses: actions/setup-python@v2
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'
# You can test your matrix by printing the current Python version
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
python --version
scons --version
- name: Compilation
env:
SCONS_CACHE: /.scons_cache/
run: |
scons target=release tools=no
ls -l bin/
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: bin/*
retention-days: 14