summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/CODEOWNERS13
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.yml7
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md12
-rw-r--r--.github/actions/godot-build/action.yml20
-rw-r--r--.github/actions/godot-cache/action.yml2
-rw-r--r--.github/actions/godot-deps/action.yml2
-rw-r--r--.github/actions/upload-artifact/action.yml2
-rw-r--r--.github/workflows/android_builds.yml29
-rw-r--r--.github/workflows/ios_builds.yml12
-rw-r--r--.github/workflows/linux_builds.yml154
-rw-r--r--.github/workflows/macos_builds.yml25
-rw-r--r--.github/workflows/static_checks.yml58
-rw-r--r--.github/workflows/web_builds.yml (renamed from .github/workflows/javascript_builds.yml)28
-rw-r--r--.github/workflows/windows_builds.yml27
14 files changed, 205 insertions, 186 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index ebbbe345fd..031582bc63 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -15,6 +15,7 @@ SCsub @godotengine/buildsystem
/core/ @godotengine/core
/core/crypto/ @godotengine/network
/core/debugger/ @godotengine/debugger
+/core/extension/ @godotengine/gdextension
/core/input/ @godotengine/input
# Doc
@@ -36,6 +37,7 @@ doc_classes/* @godotengine/documentation
## Rendering
/drivers/dummy/ @godotengine/rendering
+/drivers/gles3/ @godotengine/rendering
/drivers/spirv-reflect/ @godotengine/rendering
/drivers/vulkan/ @godotengine/rendering
@@ -110,21 +112,18 @@ doc_classes/* @godotengine/documentation
/modules/xatlas_unwrap/ @godotengine/rendering
## Scripting
-/modules/gdnative/ @godotengine/gdnative
/modules/gdscript/ @godotengine/gdscript
/modules/jsonrpc/ @godotengine/gdscript
-/modules/mono/ @godotengine/mono
-/modules/visual_script/ @godotengine/visualscript
+/modules/mono/ @godotengine/dotnet
## Text
/modules/freetype/ @godotengine/buildsystem
-/modules/gdnative/text/ @godotengine/gui-nodes
/modules/text_server_adv/ @godotengine/gui-nodes
/modules/text_server_fb/ @godotengine/gui-nodes
## XR
/modules/camera/ @godotengine/xr
-/modules/gdnative/xr/ @godotengine/xr
+/modules/gdextension/xr/ @godotengine/xr
/modules/mobile_vr/ @godotengine/xr
/modules/webxr/ @godotengine/xr
@@ -139,10 +138,10 @@ doc_classes/* @godotengine/documentation
# Platform
/platform/android/ @godotengine/android
-/platform/iphone/ @godotengine/ios
+/platform/ios/ @godotengine/ios
/platform/javascript/ @godotengine/html5
/platform/linuxbsd/ @godotengine/linux-bsd
-/platform/osx/ @godotengine/macos
+/platform/macos/ @godotengine/macos
/platform/uwp/ @godotengine/uwp
/platform/windows/ @godotengine/windows
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 2c2a963a26..0b4abac1af 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -52,5 +52,8 @@ body:
attributes:
label: Minimal reproduction project
description: |
- A small Godot project which reproduces the issue. Highly recommended to speed up troubleshooting.
- Drag and drop a ZIP archive to upload it.
+ A small Godot project which reproduces the issue, with no unnecessary files included. Be sure to not include the `.godot` folder in the archive (but keep `project.godot`).
+ Required, unless the reproduction steps are trivial and don't require any project files to be followed. In this case, write "N/A" in the field.
+ Drag and drop a ZIP archive to upload it. **Do not select another field until the project is done uploading.**
+ validations:
+ required: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 332ed2b72f..8dc712c78d 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,11 +1,7 @@
<!--
-Pull requests should always be made for the `master` branch first, as that's
-where development happens and the source of all future stable release branches.
+Please target the `master` branch in priority.
+PRs can target `3.x` if the same change was done in `master`, or is not relevant there.
-Relevant fixes are cherry-picked for stable branches as needed.
-
-Do not create a pull request for stable branches unless the change is already
-available in the `master` branch and it cannot be easily cherry-picked.
-Alternatively, if the change is only relevant for that branch (e.g. rendering
-fixes for the 3.2 branch).
+Relevant fixes are cherry-picked for stable branches as needed by maintainers.
+You can mention in the description if the change is compatible with `3.x`.
-->
diff --git a/.github/actions/godot-build/action.yml b/.github/actions/godot-build/action.yml
index 5ed64e7de2..377480b123 100644
--- a/.github/actions/godot-build/action.yml
+++ b/.github/actions/godot-build/action.yml
@@ -2,16 +2,13 @@ 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
+ description: Build target (editor, template_release, template_debug).
+ default: "editor"
tests:
- description: If tests are to be built.
+ description: Unit tests.
default: false
platform:
- description: The Godot platform to build.
+ description: Target platform.
required: false
sconsflags:
default: ""
@@ -20,7 +17,9 @@ inputs:
default: "${{ github.workspace }}/.scons-cache/"
scons-cache-limit:
description: The scons cache size limit.
- default: 4096
+ # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk.
+ # Limit to 7 GiB to avoid having the extracted cache fill the disk.
+ default: 7168
runs:
using: "composite"
steps:
@@ -31,6 +30,7 @@ runs:
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 }}
+ echo "Building with flags:" platform=${{ inputs.platform }} target=${{ inputs.target }} tests=${{ inputs.tests }} ${{ env.SCONSFLAGS }}
+ if [ "${{ inputs.target }}" != "editor" ]; then rm -rf editor; fi # Ensure we don't include editor code.
+ scons platform=${{ inputs.platform }} target=${{ inputs.target }} tests=${{ inputs.tests }} ${{ env.SCONSFLAGS }}
ls -l bin/
diff --git a/.github/actions/godot-cache/action.yml b/.github/actions/godot-cache/action.yml
index db14a0b97a..2d7afc8514 100644
--- a/.github/actions/godot-cache/action.yml
+++ b/.github/actions/godot-cache/action.yml
@@ -12,7 +12,7 @@ runs:
steps:
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ${{inputs.scons-cache}}
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
diff --git a/.github/actions/godot-deps/action.yml b/.github/actions/godot-deps/action.yml
index ee4d7d3751..e99167ff2b 100644
--- a/.github/actions/godot-deps/action.yml
+++ b/.github/actions/godot-deps/action.yml
@@ -12,7 +12,7 @@ runs:
steps:
# Use python 3.x release (works cross platform)
- name: Set up Python 3.x
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v4
with:
# Semantic version range syntax or exact version of a Python version
python-version: ${{ inputs.python-version }}
diff --git a/.github/actions/upload-artifact/action.yml b/.github/actions/upload-artifact/action.yml
index bc1871b914..ae0e634cbf 100644
--- a/.github/actions/upload-artifact/action.yml
+++ b/.github/actions/upload-artifact/action.yml
@@ -12,7 +12,7 @@ runs:
using: "composite"
steps:
- name: Upload Godot Artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: ${{ inputs.name }}
path: ${{ inputs.path }}
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml
index dd3622f1f0..666b10d016 100644
--- a/.github/workflows/android_builds.yml
+++ b/.github/workflows/android_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
@@ -13,21 +14,15 @@ concurrency:
jobs:
android-template:
runs-on: "ubuntu-20.04"
- name: Template (target=release, tools=no)
+ name: Template (target=template_release)
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
+ - uses: actions/checkout@v3
- name: Set up Java 11
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v3
with:
+ distribution: temurin
java-version: 11
- name: Setup Godot build cache
@@ -37,22 +32,20 @@ jobs:
- name: Setup python and scons
uses: ./.github/actions/godot-deps
- - name: Compilation (armv7)
+ - name: Compilation (arm32)
uses: ./.github/actions/godot-build
with:
- sconsflags: ${{ env.SCONSFLAGS }} android_arch=armv7
+ sconsflags: ${{ env.SCONSFLAGS }} arch=arm32
platform: android
- target: release
- tools: false
+ target: template_release
tests: false
- - name: Compilation (arm64v8)
+ - name: Compilation (arm64)
uses: ./.github/actions/godot-build
with:
- sconsflags: ${{ env.SCONSFLAGS }} android_arch=arm64v8
+ sconsflags: ${{ env.SCONSFLAGS }} arch=arm64
platform: android
- target: release
- tools: false
+ target: template_release
tests: false
- name: Generate Godot templates
diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/ios_builds.yml
index 721d574dbe..0ea7a4ccc3 100644
--- a/.github/workflows/ios_builds.yml
+++ b/.github/workflows/ios_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
@@ -13,10 +14,10 @@ concurrency:
jobs:
ios-template:
runs-on: "macos-latest"
- name: Template (target=release, tools=no)
+ name: Template (target=template_release)
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Godot build cache
uses: ./.github/actions/godot-cache
@@ -25,13 +26,12 @@ jobs:
- name: Setup python and scons
uses: ./.github/actions/godot-deps
- - name: Compilation (armv7)
+ - name: Compilation (arm64)
uses: ./.github/actions/godot-build
with:
sconsflags: ${{ env.SCONSFLAGS }}
- platform: iphone
- target: release
- tools: false
+ platform: ios
+ target: template_release
tests: false
- name: Upload artifact
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 92c2e3c516..0000a061d7 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -3,8 +3,11 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
+ DOTNET_NOLOGO: true
+ DOTNET_CLI_TELEMETRY_OPTOUT: true
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux
@@ -18,61 +21,66 @@ jobs:
fail-fast: false
matrix:
include:
- - name: Editor w/ Mono (target=release_debug, tools=yes, tests=yes)
+ - name: Editor w/ Mono (target=editor)
cache-name: linux-editor-mono
- target: release_debug
- tools: true
+ target: editor
tests: false # Disabled due freeze caused by mix Mono build and CI
- sconsflags: module_mono_enabled=yes mono_glue=no
+ sconsflags: module_mono_enabled=yes
doc-test: true
- bin: "./bin/godot.linuxbsd.opt.tools.64.mono"
+ bin: "./bin/godot.linuxbsd.editor.x86_64.mono"
build-mono: true
+ proj-conv: true
artifact: true
- - name: Editor with doubles and sanitizers (target=debug, tools=yes, float=64, tests=yes, use_asan=yes, use_ubsan=yes)
+ - name: Editor with doubles and GCC sanitizers (target=editor, tests=yes, dev_build=yes, precision=double, use_asan=yes, use_ubsan=yes, linker=gold)
cache-name: linux-editor-double-sanitizers
- target: debug
- tools: true
+ target: editor
tests: true
- sconsflags: float=64 use_asan=yes use_ubsan=yes
+ sconsflags: dev_build=yes precision=double use_asan=yes use_ubsan=yes linker=gold
proj-test: true
+ # Can be turned off for PRs that intentionally break compat with godot-cpp,
+ # until both the upstream PR and the matching godot-cpp changes are merged.
godot-cpp-test: true
- bin: "./bin/godot.linuxbsd.double.tools.64.san"
+ bin: "./bin/godot.linuxbsd.editor.dev.double.x86_64.san"
build-mono: false
# Skip 2GiB artifact speeding up action.
artifact: false
- - name: Template w/ Mono (target=release, tools=no)
+ - name: Editor with clang sanitizers (target=editor, tests=yes, dev_build=yes, use_asan=yes, use_ubsan=yes, use_llvm=yes, linker=lld)
+ cache-name: linux-editor-llvm-sanitizers
+ target: editor
+ tests: true
+ sconsflags: dev_build=yes use_asan=yes use_ubsan=yes use_llvm=yes linker=lld
+ bin: "./bin/godot.linuxbsd.editor.dev.x86_64.llvm.san"
+ build-mono: false
+ # Skip 2GiB artifact speeding up action.
+ artifact: false
+
+ - name: Template w/ Mono (target=template_release)
cache-name: linux-template-mono
- target: release
- tools: false
+ target: template_release
tests: false
- sconsflags: module_mono_enabled=yes mono_glue=no debug_symbols=no
+ sconsflags: module_mono_enabled=yes
build-mono: false
artifact: true
- - name: Minimal Template (target=release, tools=no, everything disabled)
+ - name: Minimal template (target=template_release, everything disabled)
cache-name: linux-template-minimal
- target: release
- tools: false
+ target: template_release
tests: false
sconsflags: modules_enabled_by_default=no disable_3d=yes disable_advanced_gui=yes deprecated=no minizip=no
artifact: true
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- - name: Linux dependencies
- shell: bash
+ # Need newer mesa for lavapipe to work properly.
+ - name: Linux dependencies for tests
+ if: ${{ matrix.proj-test }}
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
+ sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
+ sudo add-apt-repository ppa:kisak/kisak-mesa
+ sudo apt-get install -qq mesa-vulkan-drivers
- name: Setup Godot build cache
uses: ./.github/actions/godot-cache
@@ -83,34 +91,39 @@ jobs:
- name: Setup python and scons
uses: ./.github/actions/godot-deps
+ - name: Set up .NET Sdk
+ uses: actions/setup-dotnet@v2
+ if: ${{ matrix.build-mono }}
+ with:
+ dotnet-version: '6.0.x'
+
+ - name: Setup GCC problem matcher
+ uses: ammaraskar/gcc-problem-matcher@master
+
- name: Compilation
uses: ./.github/actions/godot-build
with:
sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }}
platform: linuxbsd
target: ${{ matrix.target }}
- tools: ${{ matrix.tools }}
tests: ${{ matrix.tests }}
- - name: Generate Mono glue
+ - name: Generate C# glue
if: ${{ matrix.build-mono }}
run: |
- ${{ matrix.bin }} --headless --generate-mono-glue modules/mono/glue || true
+ ${{ matrix.bin }} --headless --generate-mono-glue ./modules/mono/glue || true
- # Rebuild with mono
- - name: Compilation (mono_glue=yes)
- uses: ./.github/actions/godot-build
+ - name: Build .NET solutions
if: ${{ matrix.build-mono }}
- with:
- sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} mono_glue=yes
- platform: linuxbsd
- target: ${{ matrix.target }}
- tools: ${{ matrix.tools }}
+ run: |
+ ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
# Execute unit tests for the editor
- name: Unit tests
if: ${{ matrix.tests }}
run: |
+ ${{ matrix.bin }} --version
+ ${{ matrix.bin }} --help
${{ matrix.bin }} --test --headless
# Check class reference
@@ -122,82 +135,75 @@ jobs:
${{ matrix.bin }} --doctool --headless 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$'
- # Download, unzip and setup SwiftShader library [4466040]
- - name: Download SwiftShader
- if: ${{ matrix.tests }}
+ # Test 3.x -> 4.x project converter
+ - name: Test project converter
+ if: ${{ matrix.proj-conv }}
run: |
- wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
- unzip swiftshader2.zip
- rm swiftshader2.zip
- curr="$(pwd)/libvk_swiftshader.so"
- sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json
+ mkdir converter_test
+ cd converter_test
+ touch project.godot
+ ../${{ matrix.bin }} --headless --validate-conversion-3to4
+ cd ..
+ rm converter_test -rf
# Download and extract zip archive with project, folder is renamed to be able to easy change used project
- name: Download test project
if: ${{ matrix.proj-test }}
run: |
- wget https://github.com/qarmin/RegressionTestProject/archive/4.0.zip
+ wget https://github.com/godotengine/regression-test-project/archive/4.0.zip
unzip 4.0.zip
- mv "RegressionTestProject-4.0" "test_project"
+ mv "regression-test-project-4.0" "test_project"
# Editor is quite complicated piece of software, so it is easy to introduce bug here
- - name: Open and close editor
+ - name: Open and close editor (Vulkan)
+ if: ${{ matrix.proj-test }}
+ run: |
+ xvfb-run ${{ matrix.bin }} --audio-driver Dummy --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
+ misc/scripts/check_ci_log.py sanitizers_log.txt
+
+ - name: Open and close editor (GLES3)
if: ${{ matrix.proj-test }}
run: |
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy -e -q --path test_project 2>&1 | tee sanitizers_log.txt || true
+ DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --rendering-driver opengl3 --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt
# Run test project
- name: Run project
if: ${{ matrix.proj-test }}
run: |
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
+ xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
misc/scripts/check_ci_log.py sanitizers_log.txt
# Checkout godot-cpp
- name: Checkout godot-cpp
if: ${{ matrix.godot-cpp-test }}
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
with:
repository: godotengine/godot-cpp
submodules: 'recursive'
path: 'godot-cpp'
- # Check extension API
- - name: Check for extension api updates
+ # Dump GDExtension interface and API
+ - name: Dump GDExtension interface and API for godot-cpp build
if: ${{ matrix.godot-cpp-test }}
run: |
- echo "Running --dump-extension-api to create extensions api."
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --dump-extension-api 2>&1 > /dev/null || true
- misc/scripts/compare_extension_api.py godot-cpp/godot-headers/extension_api.json extension_api.json
-
- # Copy new extension API files into place
- - name: Copy new extension API files into place
- if: ${{ matrix.godot-cpp-test }}
- run: |
- cp -f extension_api.json godot-cpp/godot-headers/
- cp -f core/extension/gdnative_interface.h godot-cpp/godot-headers/godot/
-
- # Build godot-cpp library
- - name: Build godot-cpp library
- if: ${{ matrix.godot-cpp-test }}
- run: |
- cd godot-cpp
- scons target=${{ matrix.target }} generate_bindings=yes -j2
- cd ..
+ ${{ matrix.bin }} --headless --dump-gdextension-interface --dump-extension-api
+ cp -f gdextension_interface.h godot-cpp/gdextension/
+ cp -f extension_api.json godot-cpp/gdextension/
# Build godot-cpp test extension
- name: Build godot-cpp test extension
if: ${{ matrix.godot-cpp-test }}
run: |
cd godot-cpp/test
- scons target=${{ matrix.target }} -j2
+ scons target=template_debug dev_build=yes
cd ../..
- name: Prepare artifact
if: ${{ matrix.artifact }}
run: |
strip bin/godot.*
+ chmod +x bin/godot.*
- name: Upload artifact
uses: ./.github/actions/upload-artifact
diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml
index dec3abe52b..dd3db3270b 100644
--- a/.github/workflows/macos_builds.yml
+++ b/.github/workflows/macos_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
@@ -18,22 +19,20 @@ jobs:
fail-fast: false
matrix:
include:
- - name: Editor (target=release_debug, tools=yes, tests=yes)
+ - name: Editor (target=editor, tests=yes)
cache-name: macos-editor
- target: release_debug
- tools: true
+ target: editor
tests: true
- bin: "./bin/godot.osx.opt.tools.64"
+ bin: "./bin/godot.macos.editor.x86_64"
- - name: Template (target=release, tools=no)
+ - name: Template (target=template_release)
cache-name: macos-template
- target: release
- tools: false
+ target: template_release
tests: false
sconsflags: debug_symbols=no
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Godot build cache
uses: ./.github/actions/godot-cache
@@ -44,24 +43,30 @@ jobs:
- name: Setup python and scons
uses: ./.github/actions/godot-deps
+ - name: Setup Vulkan SDK
+ run: |
+ sh misc/scripts/install_vulkan_sdk_macos.sh
+
- name: Compilation
uses: ./.github/actions/godot-build
with:
sconsflags: ${{ env.SCONSFLAGS }}
- platform: osx
+ platform: macos
target: ${{ matrix.target }}
- tools: ${{ matrix.tools }}
tests: ${{ matrix.tests }}
# Execute unit tests for the editor
- name: Unit tests
if: ${{ matrix.tests }}
run: |
+ ${{ matrix.bin }} --version
+ ${{ matrix.bin }} --help
${{ matrix.bin }} --test
- name: Prepare artifact
run: |
strip bin/godot.*
+ chmod +x bin/godot.*
- name: Upload artifact
uses: ./.github/actions/upload-artifact
diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml
index 1f8888885a..6c92922185 100644
--- a/.github/workflows/static_checks.yml
+++ b/.github/workflows/static_checks.yml
@@ -11,43 +11,65 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout
- 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
- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
- sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main"
- sudo apt-get update
+ uses: actions/checkout@v3
- name: Install dependencies
run: |
- sudo apt-get install -qq dos2unix recode clang-format-13
- sudo update-alternatives --remove-all clang-format
- sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-13 100
- sudo pip3 install black==21.10b0 pygments
+ sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
+ sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main"
+ sudo apt-get install -qq dos2unix clang-format-15 libxml2-utils python3-pip moreutils
+ sudo update-alternatives --remove-all clang-format || true
+ sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-15 100
+ sudo pip3 install black==22.3.0 pygments pytest==7.1.2 mypy==0.971
- name: File formatting checks (file_format.sh)
run: |
bash ./misc/scripts/file_format.sh
- - name: Style checks via clang-format (clang_format.sh)
+ - name: Header guards formatting checks (header_guards.sh)
run: |
- bash ./misc/scripts/clang_format.sh
+ bash ./misc/scripts/header_guards.sh
- name: Python style checks via black (black_format.sh)
run: |
bash ./misc/scripts/black_format.sh
+ - name: Python scripts static analysis (mypy_check.sh)
+ run: |
+ bash ./misc/scripts/mypy_check.sh
+
+ - name: Python builders checks via pytest (pytest_builders.sh)
+ run: |
+ bash ./misc/scripts/pytest_builders.sh
+
- name: JavaScript style and documentation checks via ESLint and JSDoc
run: |
- cd platform/javascript
+ cd platform/web
npm ci
npm run lint
npm run docs -- -d dry-run
+ - name: Class reference schema checks
+ run: |
+ xmllint --noout --schema doc/class.xsd doc/classes/*.xml modules/*/doc_classes/*.xml
+
- name: Documentation checks
run: |
- doc/tools/make_rst.py --dry-run doc/classes modules
+ doc/tools/make_rst.py --dry-run --color doc/classes modules
+
+ - name: Style checks via clang-format (clang_format.sh)
+ run: |
+ bash ./misc/scripts/clang_format.sh
+
+ - name: Style checks via dotnet format (dotnet_format.sh)
+ run: |
+ bash ./misc/scripts/dotnet_format.sh
+
+ - name: Spell checks via codespell
+ uses: codespell-project/actions-codespell@v1
+ with:
+ skip: ./.*,./**/.*,./bin,./thirdparty,*.desktop,*.gen.*,*.po,*.pot,*.rc,./AUTHORS.md,./COPYRIGHT.txt,./DONORS.md,./core/input/gamecontrollerdb.txt,./core/string/locales.h,./editor/project_converter_3_to_4.cpp,./misc/scripts/codespell.sh,./platform/android/java/lib/src/com,./platform/web/node_modules,./platform/web/package-lock.json
+ check_hidden: false
+ ignore_words_list: curvelinear,doubleclick,expct,findn,gird,hel,inout,lod,nd,numer,ot,te
+ only_warn: true
diff --git a/.github/workflows/javascript_builds.yml b/.github/workflows/web_builds.yml
index 9163baab0f..f684b838e1 100644
--- a/.github/workflows/javascript_builds.yml
+++ b/.github/workflows/web_builds.yml
@@ -1,35 +1,28 @@
-name: 🌐 JavaScript Builds
+name: 🌐 Web Builds
on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no
- EM_VERSION: 2.0.27
+ EM_VERSION: 3.1.18
EM_CACHE_FOLDER: "emsdk-cache"
concurrency:
- group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-javascript
+ group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-web
cancel-in-progress: true
jobs:
- javascript-template:
+ web-template:
runs-on: "ubuntu-20.04"
- name: Template (target=release, tools=no)
+ name: Template (target=template_release)
steps:
- - uses: actions/checkout@v2
-
- # Additional cache for Emscripten generated system libraries
- - name: Load Emscripten cache
- id: javascript-template-emscripten-cache
- uses: actions/cache@v2
- with:
- path: ${{env.EM_CACHE_FOLDER}}
- key: ${{env.EM_VERSION}}-${{github.job}}
+ - uses: actions/checkout@v3
- name: Set up Emscripten latest
- uses: mymindstorm/setup-emsdk@v10
+ uses: mymindstorm/setup-emsdk@v11
with:
version: ${{env.EM_VERSION}}
actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
@@ -49,9 +42,8 @@ jobs:
uses: ./.github/actions/godot-build
with:
sconsflags: ${{ env.SCONSFLAGS }}
- platform: javascript
- target: release
- tools: false
+ platform: web
+ target: template_release
tests: false
- name: Upload artifact
diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml
index ad870ae58f..7f04c3475e 100644
--- a/.github/workflows/windows_builds.yml
+++ b/.github/workflows/windows_builds.yml
@@ -4,8 +4,9 @@ on: [push, pull_request]
# Global Settings
# SCONS_CACHE for windows must be set in the build environment
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
- SCONSFLAGS: verbose=yes warnings=all werror=yes module_text_server_fb_enabled=yes
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
SCONS_CACHE_MSVC_CONFIG: true
concurrency:
@@ -21,22 +22,22 @@ jobs:
fail-fast: false
matrix:
include:
- - name: Editor (target=release_debug, tools=yes, tests=yes)
+ - name: Editor (target=editor, tests=yes)
cache-name: windows-editor
- target: release_debug
- tools: true
+ target: editor
tests: true
- bin: "./bin/godot.windows.opt.tools.64.exe"
+ # Skip debug symbols, they're way too big with MSVC.
+ sconsflags: debug_symbols=no vsproj=yes
+ bin: "./bin/godot.windows.editor.x86_64.exe"
- - name: Template (target=release, tools=no)
+ - name: Template (target=template_release, tools=no)
cache-name: windows-template
- target: release
- tools: false
+ target: template_release
tests: false
sconsflags: debug_symbols=no
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Godot build cache
uses: ./.github/actions/godot-cache
@@ -44,24 +45,26 @@ jobs:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
-
- name: Setup python and scons
uses: ./.github/actions/godot-deps
+ - name: Setup MSVC problem matcher
+ uses: ammaraskar/msvc-problem-matcher@master
+
- name: Compilation
uses: ./.github/actions/godot-build
with:
sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }}
platform: windows
target: ${{ matrix.target }}
- tools: ${{ matrix.tools }}
tests: ${{ matrix.tests }}
- scons-cache-limit: 3072
# Execute unit tests for the editor
- name: Unit tests
if: ${{ matrix.tests }}
run: |
+ ${{ matrix.bin }} --version
+ ${{ matrix.bin }} --help
${{ matrix.bin }} --test
- name: Prepare artifact