summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/CODEOWNERS1
-rw-r--r--.github/actions/godot-build/action.yml36
-rw-r--r--.github/actions/godot-cache/action.yml22
-rw-r--r--.github/actions/godot-deps/action.yml27
-rw-r--r--.github/actions/upload-artifact/action.yml19
-rw-r--r--.github/workflows/android_builds.yml61
-rw-r--r--.github/workflows/ios_builds.yml57
-rw-r--r--.github/workflows/javascript_builds.yml68
-rw-r--r--.github/workflows/linux_builds.yml256
-rw-r--r--.github/workflows/macos_builds.yml131
-rw-r--r--.github/workflows/windows_builds.yml164
11 files changed, 328 insertions, 514 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 09ff2454ee..ebbbe345fd 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -73,7 +73,6 @@ doc_classes/* @godotengine/documentation
/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
diff --git a/.github/actions/godot-build/action.yml b/.github/actions/godot-build/action.yml
new file mode 100644
index 0000000000..5ed64e7de2
--- /dev/null
+++ b/.github/actions/godot-build/action.yml
@@ -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/
diff --git a/.github/actions/godot-cache/action.yml b/.github/actions/godot-cache/action.yml
new file mode 100644
index 0000000000..db14a0b97a
--- /dev/null
+++ b/.github/actions/godot-cache/action.yml
@@ -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}}
diff --git a/.github/actions/godot-deps/action.yml b/.github/actions/godot-deps/action.yml
new file mode 100644
index 0000000000..ee4d7d3751
--- /dev/null
+++ b/.github/actions/godot-deps/action.yml
@@ -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
diff --git a/.github/actions/upload-artifact/action.yml b/.github/actions/upload-artifact/action.yml
new file mode 100644
index 0000000000..bc1871b914
--- /dev/null
+++ b/.github/actions/upload-artifact/action.yml
@@ -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
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml
index 5efeba4b5f..74f8fa8eae 100644
--- a/.github/workflows/android_builds.yml
+++ b/.github/workflows/android_builds.yml
@@ -4,8 +4,7 @@ on: [push, pull_request]
# Global Settings
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=android verbose=yes warnings=extra werror=yes debug_symbols=no --jobs=2 module_text_server_fb_enabled=yes
- SCONS_CACHE_LIMIT: 4096
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-android
@@ -14,7 +13,6 @@ concurrency:
jobs:
android-template:
runs-on: "ubuntu-20.04"
-
name: Template (target=release, tools=no)
steps:
@@ -32,48 +30,37 @@ jobs:
with:
java-version: 8
- # 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}}
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
continue-on-error: true
- # Use python 3.x release (works cross platform)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
+
+ - name: Compilation (armv7)
+ uses: ./.github/actions/godot-build
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'
+ sconsflags: ${{ env.SCONSFLAGS }} android_arch=armv7
+ platform: android
+ target: release
+ tools: false
+ tests: false
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
+ - name: Compilation (arm64v8)
+ uses: ./.github/actions/godot-build
+ with:
+ sconsflags: ${{ env.SCONSFLAGS }} android_arch=arm64v8
+ platform: android
+ target: release
+ tools: false
+ tests: false
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ - name: Generate Godot templates
run: |
- 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/
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/ios_builds.yml
index 69809c6cb6..721d574dbe 100644
--- a/.github/workflows/ios_builds.yml
+++ b/.github/workflows/ios_builds.yml
@@ -4,8 +4,7 @@ on: [push, pull_request]
# Global Settings
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=iphone verbose=yes warnings=extra werror=yes debug_symbols=no --jobs=2 module_text_server_fb_enabled=yes
- SCONS_CACHE_LIMIT: 4096
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-ios
@@ -19,45 +18,21 @@ jobs:
steps:
- 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}}
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
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: ${{github.workspace}}/.scons_cache/
- run: |
- scons target=release tools=no
- ls -l bin/
-
- - uses: actions/upload-artifact@v2
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
+
+ - name: Compilation (armv7)
+ uses: ./.github/actions/godot-build
with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
+ sconsflags: ${{ env.SCONSFLAGS }}
+ platform: iphone
+ target: release
+ tools: false
+ tests: false
+
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
diff --git a/.github/workflows/javascript_builds.yml b/.github/workflows/javascript_builds.yml
index 25a063c3b2..9163baab0f 100644
--- a/.github/workflows/javascript_builds.yml
+++ b/.github/workflows/javascript_builds.yml
@@ -4,10 +4,9 @@ on: [push, pull_request]
# Global Settings
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=javascript verbose=yes warnings=extra werror=yes debug_symbols=no --jobs=2
- SCONS_CACHE_LIMIT: 4096
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no
EM_VERSION: 2.0.27
- EM_CACHE_FOLDER: 'emsdk-cache'
+ EM_CACHE_FOLDER: "emsdk-cache"
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-javascript
@@ -21,26 +20,6 @@ jobs:
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
-
- # 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
- name: Load Emscripten cache
id: javascript-template-emscripten-cache
@@ -49,23 +28,6 @@ jobs:
path: ${{env.EM_CACHE_FOLDER}}
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
uses: mymindstorm/setup-emsdk@v10
with:
@@ -76,15 +38,21 @@ jobs:
run: |
emcc -v
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
- run: |
- scons target=release tools=no use_closure_compiler=yes
- ls -l bin/
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
+ continue-on-error: true
+
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
- - uses: actions/upload-artifact@v2
+ - name: Compilation
+ uses: ./.github/actions/godot-build
with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
+ sconsflags: ${{ env.SCONSFLAGS }}
+ platform: javascript
+ target: release
+ tools: false
+ tests: false
+
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 6fe76345f3..8a49959a30 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -4,79 +4,90 @@ on: [push, pull_request]
# Global Settings
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=linuxbsd verbose=yes warnings=extra werror=yes debug_symbols=no --jobs=2 module_text_server_fb_enabled=yes
- SCONS_CACHE_LIMIT: 4096
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux
cancel-in-progress: true
jobs:
- linux-editor:
+ build-linux:
runs-on: "ubuntu-20.04"
- name: Editor (target=release_debug, tools=yes, tests=yes)
+ name: ${{ matrix.name }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Editor (target=release_debug, tools=yes, tests=yes)
+ cache-name: linux-editor
+ target: release_debug
+ tools: true
+ tests: true
+ doc-test: true
+ bin: "./bin/godot.linuxbsd.opt.tools.64"
+ artifact: true
+
+ - name: Editor and sanitizers (target=debug, tools=yes, tests=yes, use_asan=yes, use_ubsan=yes)
+ cache-name: linux-editor-sanitizers
+ target: debug
+ tools: true
+ tests: true
+ sconsflags: use_asan=yes use_ubsan=yes
+ proj-test: true
+ bin: "./bin/godot.linuxbsd.tools.64s"
+ # 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
+ tests: false
+ sconsflags: module_mono_enabled=yes mono_glue=no debug_symbols=no
+ artifact: true
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
+ - name: Linux dependencies
+ shell: bash
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
-
- # Install all packages (except scons)
- - name: Configure dependencies
- run: |
+ # 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
+ 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: Load .scons_cache directory
- id: linux-editor-cache
- uses: actions/cache@v2
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
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}}
+ cache-name: ${{ matrix.cache-name }}
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
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
- # 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 tests=yes target=release_debug
- ls -l bin/
+ uses: ./.github/actions/godot-build
+ with:
+ sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }}
+ platform: linuxbsd
+ target: ${{ matrix.target }}
+ tools: ${{ matrix.tools }}
+ tests: ${{ matrix.tests }}
# Execute unit tests for the editor
- - name: Unit Tests
+ - name: Unit tests
+ if: ${{ matrix.tests }}
run: |
- ./bin/godot.linuxbsd.opt.tools.64 --test
+ ${{ matrix.bin }} --test
# Download, unzip and setup SwiftShader library [4466040]
- name: Download SwiftShader
+ if: ${{ matrix.tests }}
run: |
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
unzip swiftshader2.zip
@@ -86,93 +97,16 @@ jobs:
# Check class reference
- name: Check for class reference updates
+ if: ${{ matrix.doc-test }}
run: |
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"
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run bin/godot.linuxbsd.opt.tools.64 --doctool . 2>&1 > /dev/null || true
+ VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --doctool . 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$'
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
-
- linux-editor-sanitizers:
- runs-on: "ubuntu-20.04"
- name: Editor and sanitizers (target=debug, tools=yes, tests=yes, use_asan=yes, use_ubsan=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 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 \
- 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: Load .scons_cache directory
- id: linux-sanitizers-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 tests=yes target=debug debug_symbols=no use_asan=yes use_ubsan=yes
- ls -l bin/
-
- # Execute unit tests for the editor
- - name: Unit Tests
- run: |
- ./bin/godot.linuxbsd.tools.64s --test
-
- # Download, unzip and setup SwiftShader library [4466040]
- - name: Download SwiftShader
- 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
-
# 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
unzip 4.0.zip
@@ -180,75 +114,25 @@ jobs:
# Editor is quite complicated piece of software, so it is easy to introduce bug here
- name: Open and close editor
+ if: ${{ matrix.proj-test }}
run: |
- VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run bin/godot.linuxbsd.tools.64s --audio-driver Dummy -e -q --path test_project 2>&1 | tee sanitizers_log.txt || true
+ 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
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 bin/godot.linuxbsd.tools.64s 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
+ 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
misc/scripts/check_ci_log.py sanitizers_log.txt
- 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 \
- libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libdbus-1-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}}
- 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: ${{github.workspace}}/.scons_cache/
+ - name: Prepare artifact
+ if: ${{ matrix.artifact }}
run: |
- scons target=release tools=no module_mono_enabled=yes mono_glue=no
- ls -l bin/
+ strip bin/godot.*
- - uses: actions/upload-artifact@v2
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
+ if: ${{ matrix.artifact }}
with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
+ name: ${{ matrix.cache-name }}
diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml
index 2c9e0fa1a0..dec3abe52b 100644
--- a/.github/workflows/macos_builds.yml
+++ b/.github/workflows/macos_builds.yml
@@ -4,117 +4,66 @@ on: [push, pull_request]
# Global Settings
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=osx verbose=yes warnings=extra werror=yes debug_symbols=no --jobs=2 module_text_server_fb_enabled=yes
- SCONS_CACHE_LIMIT: 4096
+ SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos
cancel-in-progress: true
jobs:
- macos-editor:
+ build-macos:
runs-on: "macos-latest"
-
- name: Editor (target=release_debug, tools=yes, tests=yes)
+ name: ${{ matrix.name }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Editor (target=release_debug, tools=yes, tests=yes)
+ cache-name: macos-editor
+ target: release_debug
+ tools: true
+ tests: true
+ bin: "./bin/godot.osx.opt.tools.64"
+
+ - name: Template (target=release, tools=no)
+ cache-name: macos-template
+ target: release
+ tools: false
+ tests: false
+ sconsflags: debug_symbols=no
steps:
- 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
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
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}}
+ cache-name: ${{ matrix.cache-name }}
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
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
- # 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 tests=yes target=release_debug
- ls -l bin/
-
- # Execute unit tests for the editor
- - name: Unit Tests
- run: |
- ./bin/godot.osx.opt.tools.64 --test
-
- - uses: actions/upload-artifact@v2
+ uses: ./.github/actions/godot-build
with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
-
- macos-template:
- runs-on: "macos-latest"
- name: Template (target=release, tools=no)
+ sconsflags: ${{ env.SCONSFLAGS }}
+ platform: osx
+ target: ${{ matrix.target }}
+ tools: ${{ matrix.tools }}
+ tests: ${{ matrix.tests }}
- 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
+ # Execute unit tests for the editor
+ - name: Unit tests
+ if: ${{ matrix.tests }}
run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
+ ${{ matrix.bin }} --test
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ - name: Prepare artifact
run: |
- scons target=release tools=no
- ls -l bin/
+ strip bin/godot.*
- - uses: actions/upload-artifact@v2
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
+ name: ${{ matrix.cache-name }}
diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml
index 53febd353b..ad870ae58f 100644
--- a/.github/workflows/windows_builds.yml
+++ b/.github/workflows/windows_builds.yml
@@ -5,122 +5,70 @@ on: [push, pull_request]
# SCONS_CACHE for windows must be set in the build environment
env:
GODOT_BASE_BRANCH: master
- SCONSFLAGS: platform=windows verbose=yes warnings=all werror=yes debug_symbols=no --jobs=2 module_text_server_fb_enabled=yes
+ SCONSFLAGS: verbose=yes warnings=all werror=yes module_text_server_fb_enabled=yes
SCONS_CACHE_MSVC_CONFIG: true
- SCONS_CACHE_LIMIT: 3072
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows
cancel-in-progress: true
jobs:
- windows-editor:
+ build-windows:
# Windows 10 with latest image
runs-on: "windows-latest"
-
- # Windows Editor - checkout with the plugin
- name: Editor (target=release_debug, tools=yes, tests=yes)
-
- 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-editor-cache
- uses: actions/cache@v2
- 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: 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: /.scons_cache/
- run: |
- scons tools=yes tests=yes target=release_debug
- ls -l bin/
-
- # Execute unit tests for the editor
- - name: Unit Tests
- run: |
- ./bin/godot.windows.opt.tools.64.exe --test
-
- - uses: actions/upload-artifact@v2
- with:
- name: ${{ github.job }}
- path: bin/*
- retention-days: 14
-
- windows-template:
- runs-on: "windows-latest"
- name: Template (target=release, tools=no)
+ name: ${{ matrix.name }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Editor (target=release_debug, tools=yes, tests=yes)
+ cache-name: windows-editor
+ target: release_debug
+ tools: true
+ tests: true
+ bin: "./bin/godot.windows.opt.tools.64.exe"
+
+ - name: Template (target=release, tools=no)
+ cache-name: windows-template
+ target: release
+ tools: false
+ tests: false
+ sconsflags: debug_symbols=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
+ - uses: actions/checkout@v2
+
+ - name: Setup Godot build cache
+ uses: ./.github/actions/godot-cache
+ with:
+ cache-name: ${{ matrix.cache-name }}
+ continue-on-error: true
+
+
+ - name: Setup python and scons
+ uses: ./.github/actions/godot-deps
+
+ - 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 }} --test
+
+ - name: Prepare artifact
+ run: |
+ Remove-Item bin/* -Include *.exp,*.lib,*.pdb -Force
+
+ - name: Upload artifact
+ uses: ./.github/actions/upload-artifact
+ with:
+ name: ${{ matrix.cache-name }}