From e5df1362df7e8b9b2861f6832a4e74aa6806fc12 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Mon, 20 Jul 2020 18:36:22 -0400 Subject: [PATCH] Split CI builds into workflows for each OS --- .github/workflows/linux_builds.yml | 121 +++++++ .github/workflows/macos_builds.yml | 96 ++++++ .github/workflows/main.yml | 322 ------------------ .../{static-checks.yml => static_checks.yml} | 2 +- .github/workflows/windows_builds.yml | 118 +++++++ 5 files changed, 336 insertions(+), 323 deletions(-) create mode 100644 .github/workflows/linux_builds.yml create mode 100644 .github/workflows/macos_builds.yml delete mode 100644 .github/workflows/main.yml rename .github/workflows/{static-checks.yml => static_checks.yml} (97%) create mode 100644 .github/workflows/windows_builds.yml diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml new file mode 100644 index 000000000000..17d2820b41de --- /dev/null +++ b/.github/workflows/linux_builds.yml @@ -0,0 +1,121 @@ +name: Linux Builds +on: [push, pull_request] + +# Global Cache Settings +env: + SCONS_CACHE_LIMIT: 8192 + +jobs: + linux-editor: + runs-on: "ubuntu-20.04" + + # Windows Editor - checkout with the plugin + name: Editor (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 + + # Upload cache on completion and check it out now + # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: linux-editor-cache + uses: actions/cache@v2 + with: + path: ${{github.workspace}}/.scons_cache/ + key: ${{runner.os}}-editor-${{github.sha}} + restore-keys: | + ${{runner.os}}-editor-${{github.sha}} + ${{runner.os}}-editor + ${{runner.os}} + + # 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 -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes target=release_debug + + linux-template: + runs-on: "ubuntu-20.04" + name: Template (target=release, tools=no) + + steps: + - uses: actions/checkout@v2 + + # Azure repositories are not reliable, we need to prevent azure giving us packages. + - name: Make apt sources.list use the default Ubuntu repositories + run: | + sudo cp -f misc/ci/sources.list /etc/apt/sources.list + sudo apt-get update + + # Install all packages (except scons) + - name: Configure dependencies + run: | + sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ + libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm + + # Upload cache on completion and check it out now + # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: linux-template-cache + uses: actions/cache@v2 + with: + path: ${{github.workspace}}/.scons_cache/ + key: ${{runner.os}}-template-${{github.sha}} + restore-keys: | + ${{runner.os}}-template-${{github.sha}} + ${{runner.os}}-template + ${{runner.os}} + + # 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 -j2 verbose=yes warnings=all werror=yes platform=linuxbsd target=release tools=no diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml new file mode 100644 index 000000000000..8624178e280e --- /dev/null +++ b/.github/workflows/macos_builds.yml @@ -0,0 +1,96 @@ +name: MacOS Builds +on: [push, pull_request] + +# Global Cache Settings +env: + SCONS_CACHE_LIMIT: 8192 + +jobs: + macos-editor: + runs-on: "macos-latest" + + name: Editor (target=release_debug, tools=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 properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: macos-editor-cache + uses: actions/cache@v2 + with: + path: ${{github.workspace}}/.scons_cache/ + key: ${{runner.os}}-editor-${{github.sha}} + restore-keys: | + ${{runner.os}}-editor-${{github.sha}} + ${{runner.os}}-editor + ${{runner.os}} + + # 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 -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug + + macos-template: + runs-on: "macos-latest" + name: Template (target=release, tools=no) + + steps: + - uses: actions/checkout@v2 + + # Upload cache on completion and check it out now + # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: macos-template-cache + uses: actions/cache@v2 + with: + path: ${{github.workspace}}/.scons_cache/ + key: ${{runner.os}}-template-${{github.sha}} + restore-keys: | + ${{runner.os}}-template-${{github.sha}} + ${{runner.os}}-template + ${{runner.os}} + + # 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 -j2 verbose=yes warnings=all werror=yes platform=osx target=release tools=no diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 77554ea0ef85..000000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,322 +0,0 @@ -name: Godot -# events to run the build steps -on: [push, pull_request] - -# Global Cache Settings -# SCONS_CACHE for windows must be set in the build environment -env: - SCONS_CACHE_MSVC_CONFIG: true - SCONS_CACHE_LIMIT: 8192 -jobs: - windows-editor: - # Windows 10 with latest image - runs-on: "windows-latest" - - # Windows Editor - checkout with the plugin - name: Windows Editor (target=release_debug, tools=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 properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: windows-editor-cache - uses: RevoluPowered/cache@v2.1 - with: - path: /.scons_cache/ - key: ${{runner.os}}-editor-${{github.sha}} - restore-keys: | - ${{runner.os}}-editor-${{github.sha}} - ${{runner.os}}-editor - ${{runner.os}} - - # 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 pywin32 - 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 -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 - - - windows-template: - runs-on: "windows-latest" - name: Windows Template (target=release, tools=no) - - steps: - - uses: actions/checkout@v2 - - # Upload cache on completion and check it out now - # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: windows-template-cache - uses: RevoluPowered/cache@v2.1 - with: - path: /.scons_cache/ - key: ${{runner.os}}-template-${{github.sha}} - restore-keys: | - ${{runner.os}}-template-${{github.sha}} - ${{runner.os}}-template - ${{runner.os}} - - # 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 pywin32 - python --version - scons --version - - name: Compilation - env: - SCONS_CACHE: /.scons_cache/ - 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 - - macos-editor: - runs-on: "macos-latest" - - name: MacOS Editor (target=release_debug, tools=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 properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: macos-editor-cache - uses: actions/cache@v2 - with: - path: ${{github.workspace}}/.scons_cache/ - key: ${{runner.os}}-editor-${{github.sha}} - restore-keys: | - ${{runner.os}}-editor-${{github.sha}} - ${{runner.os}}-editor - ${{runner.os}} - - # 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 -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug - - macos-template: - runs-on: "macos-latest" - name: MacOS Template (target=release, tools=no) - - steps: - - uses: actions/checkout@v2 - - # Upload cache on completion and check it out now - # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: macos-template-cache - uses: actions/cache@v2 - with: - path: ${{github.workspace}}/.scons_cache/ - key: ${{runner.os}}-template-${{github.sha}} - restore-keys: | - ${{runner.os}}-template-${{github.sha}} - ${{runner.os}}-template - ${{runner.os}} - - # 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 -j2 verbose=yes warnings=all werror=yes platform=osx target=release tools=no - - linux-editor: - runs-on: "ubuntu-20.04" - - # Windows Editor - checkout with the plugin - name: Linux Editor (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 - - # Upload cache on completion and check it out now - # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: linux-editor-cache - uses: actions/cache@v2 - with: - path: ${{github.workspace}}/.scons_cache/ - key: ${{runner.os}}-editor-${{github.sha}} - restore-keys: | - ${{runner.os}}-editor-${{github.sha}} - ${{runner.os}}-editor - ${{runner.os}} - - # 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 -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes target=release_debug - - linux-template: - runs-on: "ubuntu-20.04" - name: Linux Template (target=release, tools=no) - - steps: - - uses: actions/checkout@v2 - - # Azure repositories are not reliable, we need to prevent azure giving us packages. - - name: Make apt sources.list use the default Ubuntu repositories - run: | - sudo cp -f misc/ci/sources.list /etc/apt/sources.list - sudo apt-get update - - # Install all packages (except scons) - - name: Configure dependencies - run: | - sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ - libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm - - # Upload cache on completion and check it out now - # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. - # Linux with this will work reliably, so not as bad to edit for Linux. - - name: Load .scons_cache directory - id: linux-template-cache - uses: actions/cache@v2 - with: - path: ${{github.workspace}}/.scons_cache/ - key: ${{runner.os}}-template-${{github.sha}} - restore-keys: | - ${{runner.os}}-template-${{github.sha}} - ${{runner.os}}-template - ${{runner.os}} - - # 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 -j2 verbose=yes warnings=all werror=yes platform=linuxbsd target=release tools=no diff --git a/.github/workflows/static-checks.yml b/.github/workflows/static_checks.yml similarity index 97% rename from .github/workflows/static-checks.yml rename to .github/workflows/static_checks.yml index 095bf32e1fdd..87339da776bd 100644 --- a/.github/workflows/static-checks.yml +++ b/.github/workflows/static_checks.yml @@ -1,4 +1,4 @@ -name: Godot +name: Static Checks on: [push, pull_request] jobs: diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml new file mode 100644 index 000000000000..036f11526e3f --- /dev/null +++ b/.github/workflows/windows_builds.yml @@ -0,0 +1,118 @@ +name: Windows Builds +on: [push, pull_request] + +# Global Cache Settings +# SCONS_CACHE for windows must be set in the build environment +env: + SCONS_CACHE_MSVC_CONFIG: true + SCONS_CACHE_LIMIT: 8192 + +jobs: + windows-editor: + # Windows 10 with latest image + runs-on: "windows-latest" + + # Windows Editor - checkout with the plugin + name: Editor (target=release_debug, tools=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 properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: windows-editor-cache + uses: RevoluPowered/cache@v2.1 + with: + path: /.scons_cache/ + key: ${{runner.os}}-editor-${{github.sha}} + restore-keys: | + ${{runner.os}}-editor-${{github.sha}} + ${{runner.os}}-editor + ${{runner.os}} + + # 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 pywin32 + 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 -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 + + windows-template: + runs-on: "windows-latest" + name: Template (target=release, tools=no) + + steps: + - uses: actions/checkout@v2 + + # Upload cache on completion and check it out now + # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache. + # Linux with this will work reliably, so not as bad to edit for Linux. + - name: Load .scons_cache directory + id: windows-template-cache + uses: RevoluPowered/cache@v2.1 + with: + path: /.scons_cache/ + key: ${{runner.os}}-template-${{github.sha}} + restore-keys: | + ${{runner.os}}-template-${{github.sha}} + ${{runner.os}}-template + ${{runner.os}} + + # 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 pywin32 + python --version + scons --version + - name: Compilation + env: + SCONS_CACHE: /.scons_cache/ + 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