diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/android_builds.yml | 65 | ||||
-rw-r--r-- | .github/workflows/ios_builds.yml | 57 | ||||
-rw-r--r-- | .github/workflows/javascript_builds.yml | 68 | ||||
-rw-r--r-- | .github/workflows/linux_builds.yml | 304 | ||||
-rw-r--r-- | .github/workflows/macos_builds.yml | 131 | ||||
-rw-r--r-- | .github/workflows/static_checks.yml | 10 | ||||
-rw-r--r-- | .github/workflows/windows_builds.yml | 164 |
7 files changed, 290 insertions, 509 deletions
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml index 5efeba4b5f..dd3622f1f0 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: @@ -27,53 +25,42 @@ jobs: sudo cp -f misc/ci/sources.list /etc/apt/sources.list sudo apt-get update - - name: Set up Java 8 + - name: Set up Java 11 uses: actions/setup-java@v1 with: - java-version: 8 + java-version: 11 - # 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..44d0cb041f 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/linux_builds.yml @@ -4,166 +4,127 @@ 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 w/ Mono (target=release_debug, tools=yes, tests=yes) + cache-name: linux-editor-mono + target: release_debug + tools: true + tests: false # Disabled due freeze caused by mix Mono build and CI + sconsflags: module_mono_enabled=yes mono_glue=no + doc-test: true + bin: "./bin/godot.linuxbsd.opt.tools.64.mono" + build-mono: true + 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 + godot-cpp-test: true + bin: "./bin/godot.linuxbsd.tools.64s" + build-mono: false + # Skip 2GiB artifact speeding up action. + artifact: false + + - name: Template w/ Mono (target=release, tools=no) + cache-name: linux-template-mono + target: release + tools: false + tests: false + sconsflags: module_mono_enabled=yes mono_glue=no debug_symbols=no + build-mono: false + artifact: true + + - name: Minimal Template (target=release, tools=no, everything disabled) + cache-name: linux-template-minimal + target: release + tools: false + 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 - # 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 + - name: Setup python and scons + uses: ./.github/actions/godot-deps + + - name: Compilation + 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 }} ${{ matrix.sconsflags }} + platform: linuxbsd + target: ${{ matrix.target }} + tools: ${{ matrix.tools }} + tests: ${{ matrix.tests }} - # Setup scons, print python version and scons version info, so if anything is broken it won't run the build. - - name: Configuring Python packages + - name: Generate Mono glue + if: ${{ matrix.build-mono }} run: | - python -c "import sys; print(sys.version)" - python -m pip install scons - python --version - scons --version + ${{ matrix.bin }} --headless --generate-mono-glue modules/mono/glue || true - # 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/ + # Rebuild with mono + - name: Compilation (mono_glue=yes) + uses: ./.github/actions/godot-build + if: ${{ matrix.build-mono }} + with: + sconsflags: ${{ env.SCONSFLAGS }} ${{ matrix.sconsflags }} mono_glue=yes + platform: linuxbsd + target: ${{ matrix.target }} + tools: ${{ matrix.tools }} # Execute unit tests for the editor - - name: Unit Tests + - name: Unit tests + if: ${{ matrix.tests }} run: | - ./bin/godot.linuxbsd.opt.tools.64 --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 + ${{ matrix.bin }} --test --headless # 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 + ${{ 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$' - - 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 + if: ${{ matrix.tests }} run: | wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip unzip swiftshader2.zip @@ -173,6 +134,7 @@ jobs: # 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 +142,65 @@ 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 + # Checkout godot-cpp + - name: Checkout godot-cpp + if: ${{ matrix.godot-cpp-test }} + uses: actions/checkout@v2 + with: + repository: godotengine/godot-cpp + submodules: 'recursive' + path: 'godot-cpp' - # Azure repositories are not reliable, we need to prevent azure giving us packages. - - name: Make apt sources.list use the default Ubuntu repositories + # Check extension API + - name: Check for extension api updates + if: ${{ matrix.godot-cpp-test }} run: | - sudo rm -f /etc/apt/sources.list.d/* - sudo cp -f misc/ci/sources.list /etc/apt/sources.list - sudo apt-get update + 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 - # Install all packages (except scons) - - name: Configure dependencies + # Copy new extension API files into place + - name: Copy new extension API files into place + if: ${{ matrix.godot-cpp-test }} 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 + cp -f extension_api.json godot-cpp/godot-headers/ + cp -f core/extension/gdnative_interface.h godot-cpp/godot-headers/godot/ - # 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' + # 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 .. - # You can test your matrix by printing the current Python version - - name: Configuring Python packages + # Build godot-cpp test extension + - name: Build godot-cpp test extension + if: ${{ matrix.godot-cpp-test }} run: | - python -c "import sys; print(sys.version)" - python -m pip install scons - python --version - scons --version + cd godot-cpp/test + scons target=${{ matrix.target }} -j2 + cd ../.. - - 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/static_checks.yml b/.github/workflows/static_checks.yml index fd2e748076..1f8888885a 100644 --- a/.github/workflows/static_checks.yml +++ b/.github/workflows/static_checks.yml @@ -18,14 +18,16 @@ jobs: 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 - name: Install dependencies run: | - sudo apt-get install -qq dos2unix recode clang-format-11 + 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-11 100 - sudo pip3 install black==20.8b1 pygments + sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-13 100 + sudo pip3 install black==21.10b0 pygments - name: File formatting checks (file_format.sh) run: | @@ -48,4 +50,4 @@ jobs: - name: Documentation checks run: | - doc/tools/makerst.py --dry-run doc/classes modules + doc/tools/make_rst.py --dry-run doc/classes modules 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 }} |