2
0
Эх сурвалжийг харах

CI: Backport GitHub Actions from 3.x branch

Ensures that we have a configuration that is currently usable.

Some changes for the `3.2` branch as it's unmaintained:
- No cache
- No artifacts upload
- Uses clang-format 10
- No JavaScript linting
Rémi Verschelde 4 жил өмнө
parent
commit
67b2f3ed25

+ 170 - 45
.github/CODEOWNERS

@@ -2,48 +2,173 @@
 # Each line is a file pattern followed by one or more owners.
 # Each line is a file pattern followed by one or more owners.
 # Owners can be @users, @org/teams or emails
 # Owners can be @users, @org/teams or emails
 
 
-/doc/                @godotengine/documentation
-doc_classes/*        @godotengine/documentation
-
-# Rendering
-/drivers/gl_context/ @reduz
-/drivers/gles2/      @reduz
-/drivers/gles3/      @reduz
-
-# Audio
-/drivers/alsa/       @marcelofg55
-/drivers/alsamidi/   @marcelofg55
-/drivers/coreaudio/  @marcelofg55
-/drivers/coremidi/   @marcelofg55
-/drivers/pulseaudio/ @marcelofg55
-/drivers/wasapi/     @marcelofg55
-/drivers/winmidi/    @marcelofg55
-/drivers/xaudio2/    @marcelofg55
-
-/drivers/unix/       @hpvb
-/drivers/windows/    @hpvb
-
-/editor/icons/       @djrm
-
-/misc/               @akien-mga
-
-/modules/bullet/     @AndreaCatania
-/modules/csg/        @BastiaanOlij
-/modules/enet/       @godotengine/network
-/modules/gdnative/*arvr/ @BastiaanOlij
-/modules/gdscript/   @vnen @bojidar-bg
-/modules/mbedtls/    @godotengine/network
-/modules/mobile_vr/  @BastiaanOlij
-/modules/mono/       @neikeq
-/modules/opensimplex/ @JFonS
-/modules/regex/      @LeeZH
-/modules/upnp/       @godotengine/network
-/modules/websocket/  @godotengine/network
-
-/platform/javascript/ @eska014
-/platform/uwp/       @vnen
-
-/server/physics*/    @reduz @AndreaCatania
-/server/visual*/     @reduz
-
-/thirdparty/         @akien-mga
+# Buildsystem
+
+.*                                  @godotengine/buildsystem
+.github/                            @godotengine/buildsystem
+*.py                                @godotengine/buildsystem
+SConstruct                          @godotengine/buildsystem
+SCsub                               @godotengine/buildsystem
+
+# Core
+
+/core/                              @godotengine/core
+/core/crypto/                       @godotengine/network
+/core/input*.*                      @godotengine/input
+
+# Doc
+
+/doc/                               @godotengine/documentation
+doc_classes/*                       @godotengine/documentation
+
+# Drivers
+
+## Audio
+/drivers/alsa/                      @godotengine/audio
+/drivers/alsamidi/                  @godotengine/audio
+/drivers/coreaudio/                 @godotengine/audio
+/drivers/coremidi/                  @godotengine/audio
+/drivers/pulseaudio/                @godotengine/audio
+/drivers/wasapi/                    @godotengine/audio
+/drivers/winmidi/                   @godotengine/audio
+/drivers/xaudio2/                   @godotengine/audio
+
+## Rendering
+/drivers/dummy/                     @godotengine/rendering
+/drivers/gl_context/                @godotengine/rendering
+/drivers/gles2/                     @godotengine/rendering
+/drivers/gles3/                     @godotengine/rendering
+/drivers/gles_common/               @godotengine/rendering
+
+## OS
+/drivers/unix/                      @godotengine/_platforms
+/drivers/windows/                   @godotengine/windows
+
+## Misc
+/drivers/png/                       @godotengine/import
+
+# Editor
+
+/editor/*debugger*                  @godotengine/debugger
+/editor/icons/                      @godotengine/usability
+/editor/import/                     @godotengine/import
+/editor/plugins/*2d_*.*             @godotengine/2d-editor
+/editor/plugins/script_*.*          @godotengine/script-editor
+/editor/plugins/*shader*.*          @godotengine/shaders
+/editor/code_editor.*               @godotengine/script-editor
+/editor/*dock*.*                    @godotengine/docks
+
+# Main
+
+/main/                              @godotengine/core
+/main/tests/                        @godotengine/tests
+
+# Misc
+
+/misc/                              @godotengine/buildsystem
+
+# Modules
+
+## Audio (+ video)
+/modules/minimp3/                   @godotengine/audio
+/modules/ogg/                       @godotengine/audio
+/modules/opus/                      @godotengine/audio
+/modules/stb_vorbis/                @godotengine/audio
+/modules/theora/                    @godotengine/audio
+/modules/vorbis/                    @godotengine/audio
+/modules/webm/                      @godotengine/audio
+
+## Import
+/modules/basis_universal/           @godotengine/import
+/modules/bmp/                       @godotengine/import
+/modules/cvtt/                      @godotengine/import
+/modules/dds/                       @godotengine/import
+/modules/etc/                       @godotengine/import
+/modules/fbx/                       @godotengine/import
+/modules/gltf/                      @godotengine/import
+/modules/hdr/                       @godotengine/import
+/modules/jpg/                       @godotengine/import
+/modules/pvr/                       @godotengine/import
+/modules/squish/                    @godotengine/import
+/modules/svg/                       @godotengine/import
+/modules/tga/                       @godotengine/import
+/modules/tinyexr/                   @godotengine/import
+/modules/webp/                      @godotengine/import
+
+## Network
+/modules/enet/                      @godotengine/network
+/modules/mbedtls/                   @godotengine/network
+/modules/upnp/                      @godotengine/network
+/modules/webrtc/                    @godotengine/network
+/modules/websocket/                 @godotengine/network
+
+## Rendering
+/modules/denoise/                   @godotengine/rendering
+/modules/glslang/                   @godotengine/rendering
+/modules/lightmapper_cpu/           @godotengine/rendering
+/modules/meshoptimizer/             @godotengine/rendering
+/modules/raycast/                   @godotengine/rendering
+/modules/vhacd/                     @godotengine/rendering
+/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
+
+## 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/arvr/             @godotengine/xr
+/modules/mobile_vr/                 @godotengine/xr
+/modules/webxr/                     @godotengine/xr
+
+## Misc
+/modules/bullet/                    @godotengine/physics
+/modules/csg/                       @godotengine/3d-nodes
+/modules/gridmap/                   @godotengine/3d-nodes
+/modules/opensimplex/               @godotengine/3d-nodes
+/modules/recast/                    @godotengine/navigation
+/modules/regex/                     @godotengine/core
+
+# Platform
+
+/platform/android/                  @godotengine/android
+/platform/iphone/                   @godotengine/ios
+/platform/javascript/               @godotengine/html5
+/platform/x11/                      @godotengine/linux-bsd
+/platform/osx/                      @godotengine/macos
+/platform/uwp/                      @godotengine/uwp
+/platform/windows/                  @godotengine/windows
+
+# Scene
+
+/scene/2d/                          @godotengine/2d-nodes
+/scene/3d/                          @godotengine/3d-nodes
+/scene/animation/                   @godotengine/animation
+/scene/audio/                       @godotengine/audio
+/scene/debugger/                    @godotengine/debugger
+/scene/gui/                         @godotengine/gui-nodes
+/scene/main/                        @godotengine/core
+/scene/resources/default_theme/     @godotengine/gui-nodes
+/scene/resources/font.*             @godotengine/gui-nodes
+/scene/resources/visual_shader*.*   @godotengine/shaders
+
+# Servers
+
+/servers/arvr*                      @godotengine/xr
+/servers/audio*                     @godotengine/audio
+/servers/camera*                    @godotengine/xr
+/servers/physics*                   @godotengine/physics
+/servers/visual*                    @godotengine/rendering
+
+# Thirdparty
+
+/thirdparty/                        @godotengine/buildsystem

+ 17 - 30
.github/workflows/android_builds.yml

@@ -1,10 +1,10 @@
 name: 🤖 Android Builds
 name: 🤖 Android Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=android verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
+  ANDROID_NDK_VERSION: 21.1.6352462
 
 
 jobs:
 jobs:
   android-template:
   android-template:
@@ -18,35 +18,18 @@ jobs:
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       - name: Make apt sources.list use the default Ubuntu repositories
       - name: Make apt sources.list use the default Ubuntu repositories
         run: |
         run: |
+          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
 
 
-      # Install all packages (except scons)
-      - name: Configure dependencies
-        run: |
-         sudo apt-get install openjdk-8-jdk
-         echo "::set-env name=JAVA_HOME::usr/lib/jvm/java-8-openjdk-amd64"
+      - name: Set up Java 8
+        uses: actions/setup-java@v1
+        with:
+          java-version: 8
 
 
-      - name: Install Android SDK and NDK
+      - name: Install Android NDK r21
         run: |
         run: |
-          echo "::set-env name=PATH::/usr/lib/jvm/java-8-openjdk-amd64/jre/bin:${PATH}"
-          java -version
-          echo "::set-env name=ANDROID_HOME::$(pwd)/godot-dev/build-tools/android-sdk"
-          echo "::set-env name=ANDROID_NDK_ROOT::$(pwd)/godot-dev/build-tools/android-ndk"
-          misc/ci/android-tools-linux.sh
-          source ~/.bashrc
-
-      # Upload cache on completion and check it out now
-      - name: Load .scons_cache directory
-        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}}
+          sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install 'ndk;${{env.ANDROID_NDK_VERSION}}'
 
 
       # Use python 3.x release (works cross platform)
       # Use python 3.x release (works cross platform)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
@@ -57,7 +40,6 @@ jobs:
           # Optional - x64 or x86 architecture, defaults to x64
           # Optional - x64 or x86 architecture, defaults to x64
           architecture: 'x64'
           architecture: 'x64'
 
 
-      # You can test your matrix by printing the current Python version
       - name: Configuring Python packages
       - name: Configuring Python packages
         run: |
         run: |
           python -c "import sys; print(sys.version)"
           python -c "import sys; print(sys.version)"
@@ -67,6 +49,11 @@ jobs:
 
 
       - name: Compilation
       - name: Compilation
         env:
         env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+          ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/${{env.ANDROID_NDK_VERSION}}/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=android target=release tools=no
+          scons target=release tools=no android_arch=armv7
+          scons target=release tools=no android_arch=arm64v8
+          cd platform/android/java
+          ./gradlew generateGodotTemplates
+          cd ../../..
+          ls -l bin/

+ 4 - 18
.github/workflows/ios_builds.yml

@@ -1,10 +1,9 @@
 name: 🍏 iOS Builds
 name: 🍏 iOS Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=iphone verbose=yes warnings=all werror=no debug_symbols=no --jobs=2
 
 
 jobs:
 jobs:
   ios-template:
   ios-template:
@@ -14,18 +13,6 @@ jobs:
     steps:
     steps:
       - uses: actions/checkout@v2
       - uses: actions/checkout@v2
 
 
-      # Upload cache on completion and check it out now
-      - name: Load .scons_cache directory
-        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}}
-
       # Use python 3.x release (works cross platform)
       # Use python 3.x release (works cross platform)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
         uses: actions/setup-python@v2
         uses: actions/setup-python@v2
@@ -44,7 +31,6 @@ jobs:
           scons --version
           scons --version
 
 
       - name: Compilation
       - name: Compilation
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=no platform=iphone target=release tools=no
+          scons target=release tools=no
+          ls -l bin/

+ 6 - 19
.github/workflows/javascript_builds.yml

@@ -1,10 +1,9 @@
 name: 🌐 JavaScript Builds
 name: 🌐 JavaScript Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=javascript verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
   EM_VERSION: 1.39.20
   EM_VERSION: 1.39.20
   EM_CACHE_FOLDER: 'emsdk-cache'
   EM_CACHE_FOLDER: 'emsdk-cache'
 
 
@@ -19,21 +18,10 @@ jobs:
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       - name: Make apt sources.list use the default Ubuntu repositories
       - name: Make apt sources.list use the default Ubuntu repositories
         run: |
         run: |
+          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
 
 
-      # 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}}
-
       # 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
@@ -60,7 +48,7 @@ jobs:
           scons --version
           scons --version
 
 
       - name: Set up Emscripten latest
       - name: Set up Emscripten latest
-        uses: mymindstorm/setup-emsdk@v6
+        uses: mymindstorm/setup-emsdk@v7
         with:
         with:
           version: ${{env.EM_VERSION}}
           version: ${{env.EM_VERSION}}
           actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
           actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
@@ -70,7 +58,6 @@ jobs:
           emcc -v
           emcc -v
 
 
       - name: Compilation
       - name: Compilation
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=javascript target=release tools=no use_closure_compiler=yes
+          scons target=release tools=no use_closure_compiler=yes
+          ls -l bin/

+ 13 - 36
.github/workflows/linux_builds.yml

@@ -1,13 +1,12 @@
 name: 🐧 Linux Builds
 name: 🐧 Linux Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=linuxbsd verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
 
 
 jobs:
 jobs:
-  linux-editor:
+  linux-editor-mono:
     runs-on: "ubuntu-20.04"
     runs-on: "ubuntu-20.04"
     name: Editor w/ Mono (target=release_debug, tools=yes)
     name: Editor w/ Mono (target=release_debug, tools=yes)
 
 
@@ -17,27 +16,16 @@ jobs:
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       - name: Make apt sources.list use the default Ubuntu repositories
       - name: Make apt sources.list use the default Ubuntu repositories
         run: |
         run: |
+          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
 
 
       # Install all packages (except scons)
       # Install all packages (except scons)
       - name: Configure dependencies
       - name: Configure dependencies
         run: |
         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 xvfb \
             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 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}}
-
       # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
       # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
         uses: actions/setup-python@v2
         uses: actions/setup-python@v2
@@ -57,12 +45,13 @@ jobs:
 
 
       # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
       # 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
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=x11 tools=yes target=release_debug module_mono_enabled=yes mono_glue=no
+          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/
 
 
-  linux-template:
+  linux-template-mono:
     runs-on: "ubuntu-20.04"
     runs-on: "ubuntu-20.04"
     name: Template w/ Mono (target=release, tools=no)
     name: Template w/ Mono (target=release, tools=no)
 
 
@@ -72,6 +61,7 @@ jobs:
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       # Azure repositories are not reliable, we need to prevent azure giving us packages.
       - name: Make apt sources.list use the default Ubuntu repositories
       - name: Make apt sources.list use the default Ubuntu repositories
         run: |
         run: |
+          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
 
 
@@ -81,18 +71,6 @@ jobs:
           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 libudev-dev libxi-dev libxrandr-dev yasm
 
 
-      # Upload cache on completion and check it out now
-      - name: Load .scons_cache directory
-        id: linux-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}}
-
       # Use python 3.x release (works cross platform)
       # Use python 3.x release (works cross platform)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
         uses: actions/setup-python@v2
         uses: actions/setup-python@v2
@@ -111,7 +89,6 @@ jobs:
           scons --version
           scons --version
 
 
       - name: Compilation
       - name: Compilation
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=x11 target=release tools=no module_mono_enabled=yes mono_glue=no
+          scons target=release tools=no module_mono_enabled=yes mono_glue=no
+          ls -l bin/

+ 6 - 33
.github/workflows/macos_builds.yml

@@ -1,10 +1,9 @@
 name: 🍎 macOS Builds
 name: 🍎 macOS Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=osx verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
 
 
 jobs:
 jobs:
   macos-editor:
   macos-editor:
@@ -15,18 +14,6 @@ jobs:
     steps:
     steps:
       - uses: actions/checkout@v2
       - uses: actions/checkout@v2
 
 
-      # Upload cache on completion and check it out now
-      - name: Load .scons_cache directory
-        id: macos-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}}
-
       # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
       # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
         uses: actions/setup-python@v2
         uses: actions/setup-python@v2
@@ -46,10 +33,9 @@ jobs:
 
 
       # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
       # 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
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug
+          scons tools=yes target=release_debug
+          ls -l bin/
 
 
   macos-template:
   macos-template:
     runs-on: "macos-latest"
     runs-on: "macos-latest"
@@ -58,18 +44,6 @@ jobs:
     steps:
     steps:
       - uses: actions/checkout@v2
       - 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}}
-
       # Use python 3.x release (works cross platform)
       # Use python 3.x release (works cross platform)
       - name: Set up Python 3.x
       - name: Set up Python 3.x
         uses: actions/setup-python@v2
         uses: actions/setup-python@v2
@@ -88,7 +62,6 @@ jobs:
           scons --version
           scons --version
 
 
       - name: Compilation
       - name: Compilation
-        env:
-          SCONS_CACHE: ${{github.workspace}}/.scons_cache/
         run: |
         run: |
-          scons -j2 verbose=yes warnings=all werror=yes platform=osx target=release tools=no
+          scons target=release tools=no
+          ls -l bin/

+ 88 - 0
.github/workflows/server_builds.yml

@@ -0,0 +1,88 @@
+name: ☁ Server Builds
+on: [push, pull_request]
+
+# Global Settings
+env:
+  SCONSFLAGS: platform=server verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
+
+jobs:
+  linux-editor:
+    runs-on: "ubuntu-20.04"
+    name: Linux Headless w/ Mono (target=release_debug, tools=yes)
+
+    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
+
+      # 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
+        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
+
+      # 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
+        run: |
+          scons -j2 target=release tools=no module_mono_enabled=yes mono_glue=no

+ 11 - 3
.github/workflows/static_checks.yml

@@ -9,11 +9,19 @@ jobs:
       - name: Checkout
       - name: Checkout
         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
+
       - name: Install dependencies
       - name: Install dependencies
         run: |
         run: |
-          sudo apt-get update -qq
-          sudo apt-get install -qq dos2unix recode clang-format
-          sudo pip3 install black pygments
+          sudo apt-get install -qq dos2unix recode clang-format-10
+          sudo update-alternatives --remove-all clang-format
+          sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-10 100
+          sudo pip3 install black==20.8b1 pygments
 
 
       - name: File formatting checks (file_format.sh)
       - name: File formatting checks (file_format.sh)
         run: |
         run: |

+ 6 - 55
.github/workflows/windows_builds.yml

@@ -1,12 +1,9 @@
 name: 🏁 Windows Builds
 name: 🏁 Windows Builds
 on: [push, pull_request]
 on: [push, pull_request]
 
 
-# Global Cache Settings
-# SCONS_CACHE for windows must be set in the build environment
+# Global Settings
 env:
 env:
-  GODOT_BASE_BRANCH: 3.2
-  SCONS_CACHE_MSVC_CONFIG: true
-  SCONS_CACHE_LIMIT: 4096
+  SCONSFLAGS: platform=windows verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2
 
 
 jobs:
 jobs:
   windows-editor:
   windows-editor:
@@ -19,19 +16,6 @@ jobs:
     steps:
     steps:
     - uses: actions/checkout@v2
     - 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-editor-cache
-      uses: RevoluPowered/[email protected]
-      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}}
-
     # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
     # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
     - name: Set up Python 3.x
     - name: Set up Python 3.x
       uses: actions/setup-python@v2
       uses: actions/setup-python@v2
@@ -51,19 +35,9 @@ jobs:
 
 
     # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
     # 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
-      env:
-        SCONS_CACHE: /.scons_cache/
       run: |
       run: |
-        scons -j2 verbose=yes warnings=all werror=yes platform=windows tools=yes target=release_debug
-
-# Build Product Upload (tested and working)
-# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
-# tested this code and it works fine so just enable it to get them back
-#    - name: publishing godot windows-editor
-#      uses: actions/upload-artifact@v1
-#      with:
-#        name: windows-editor (x64)
-#        path: bin/godot.windows.opt.tools.64.exe
+        scons tools=yes target=release_debug
+        ls -l bin/
 
 
   windows-template:
   windows-template:
     runs-on: "windows-latest"
     runs-on: "windows-latest"
@@ -72,19 +46,6 @@ jobs:
     steps:
     steps:
     - uses: actions/checkout@v2
     - 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/[email protected]
-      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}}
-
     # Use python 3.x release (works cross platform)
     # Use python 3.x release (works cross platform)
     - name: Set up Python 3.x
     - name: Set up Python 3.x
       uses: actions/setup-python@v2
       uses: actions/setup-python@v2
@@ -103,16 +64,6 @@ jobs:
         scons --version
         scons --version
 
 
     - name: Compilation
     - name: Compilation
-      env:
-        SCONS_CACHE: /.scons_cache/
       run: |
       run: |
-        scons -j2 verbose=yes warnings=all werror=yes platform=windows target=release tools=no
-
-# Build Product Upload (tested and working)
-# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
-# tested this code and it works fine so just enable it to get them back
-#    - name: publishing godot windows-template
-#      uses: actions/upload-artifact@v1
-#      with:
-#        name: windows-template (x64)
-#        path: bin/godot.windows.opt.64.exe
+        scons target=release tools=no
+        ls -l bin/