From 610c42f219b7b21614707189847b279f0898f829 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 16 Dec 2020 19:51:26 +0100 Subject: [PATCH] Switch from Travis CI to GitHub Actions GitHub Actions should be significantly faster than Travis CI. --- .github/dependabot.yml | 6 ++ .github/workflows/ci.yml | 126 +++++++++++++++++++++++++++++++++++++++ .travis.yml | 75 ----------------------- 3 files changed, 132 insertions(+), 75 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..12301490 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..90001616 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,126 @@ +name: Continuous integration +on: [push, pull_request] + +jobs: + linux: + name: Build (Linux, GCC) + runs-on: ubuntu-16.04 + steps: + - name: Checkout + uses: actions/checkout@v2.3.4 + with: + submodules: recursive + + - name: Set up Python (for SCons) + uses: actions/setup-python@v2 + with: + python-version: '3.9.1' + + - name: Install dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -qqq build-essential pkg-config + python -m pip install scons + + - name: Build godot-cpp + run: | + scons target=release generate_bindings=yes -j $(nproc) + + - name: Upload artifact + uses: actions/upload-artifact@v2.2.1 + with: + name: godot-cpp-linux-glibc2.23-x86_64-release + path: bin/libgodot-cpp.linux.release.64.a + if-no-files-found: error + + windows-msvc: + name: Build (Windows, MSVC) + runs-on: windows-2019 + steps: + - name: Checkout + uses: actions/checkout@v2.3.4 + with: + submodules: recursive + + - name: Set up Python (for SCons) + uses: actions/setup-python@v2 + with: + python-version: '3.9.1' + + - name: Install dependencies + run: | + python -m pip install scons + + - name: Build godot-cpp + run: | + scons target=release generate_bindings=yes -j $env:NUMBER_OF_PROCESSORS + + - name: Upload artifact + uses: actions/upload-artifact@v2.2.1 + with: + name: godot-cpp-windows-msvc2019-x86_64-release + path: bin/libgodot-cpp.windows.release.64.lib + if-no-files-found: error + + windows-mingw: + name: Build (Windows, MinGW) + runs-on: windows-2019 + steps: + - name: Checkout + uses: actions/checkout@v2.3.4 + with: + submodules: recursive + + - name: Set up Python (for SCons) + uses: actions/setup-python@v2 + with: + python-version: '3.9.1' + + - name: Install dependencies + run: | + python -m pip install scons + + - name: Build godot-cpp + # Install GCC from Scoop as the default supplied GCC doesn't work ("Error 1"). + run: | + Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') + scoop install gcc + g++ --version + gcc --version + scons target=release generate_bindings=yes use_mingw=yes -j $env:NUMBER_OF_PROCESSORS + + - name: Upload artifact + uses: actions/upload-artifact@v2.2.1 + with: + name: godot-cpp-linux-mingw-x86_64-release + path: bin/libgodot-cpp.windows.release.64.a + if-no-files-found: error + + macos: + name: Build (macOS, Clang) + runs-on: macos-11.0 + steps: + - name: Checkout + uses: actions/checkout@v2.3.4 + with: + submodules: recursive + + - name: Set up Python (for SCons) + uses: actions/setup-python@v2 + with: + python-version: '3.9.1' + + - name: Install dependencies + run: | + python -m pip install scons + + - name: Build godot-cpp + run: | + scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu) + + - name: Upload artifact + uses: actions/upload-artifact@v2.2.1 + with: + name: godot-cpp-macos-x86_64-release + path: bin/libgodot-cpp.osx.release.64.a + if-no-files-found: error diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c6b08f25..00000000 --- a/.travis.yml +++ /dev/null @@ -1,75 +0,0 @@ -language: cpp -dist: xenial -osx_image: xcode10.1 - -env: - global: - - SCONS_CACHE="$HOME/.scons_cache" - - SCONS_CACHE_LIMIT=1024 - -cache: - directories: - - $SCONS_CACHE - -matrix: - include: - - name: Linux Debug + Static Checks - os: linux - compiler: gcc - env: TARGET=debug STATIC_CHECKS=yes - addons: - apt: - packages: - - clang-format-8 - - [scons, pkg-config, build-essential, p7zip-full] - - - name: Linux Release - os: linux - compiler: gcc - addons: - apt: - packages: - - [scons, pkg-config, build-essential, p7zip-full] - env: TARGET=release - - - name: macOS Debug - os: osx - compiler: clang - env: TARGET=debug - - - name: macOS Release - os: osx - compiler: clang - env: TARGET=release - - - name: Windows MSVC Debug - os: windows - env: TARGET=debug - - - name: Windows MSVC Release - os: windows - env: TARGET=release - -install: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew update; - brew install scons p7zip; - fi - - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then - curl -LO https://downloads.sourceforge.net/project/scons/scons-local/3.1.2/scons-local-3.1.2.zip; - unzip scons-local-3.1.2.zip; - fi - -script: - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then - export SCONS="./scons.bat"; - else - export SCONS="scons"; - fi - - - $SCONS target="$TARGET" bits=64 generate_bindings=yes $SCONS_FLAGS; - - - if [[ "$STATIC_CHECKS" == "yes" ]]; then - sh ./misc/travis/clang-format.sh; - fi