repo: Switch to github actions for CI
authorLenny Komow <lenny@lunarg.com>
Tue, 9 Feb 2021 22:27:19 +0000 (15:27 -0700)
committerLenny Komow <lenny@lunarg.com>
Wed, 10 Feb 2021 20:54:42 +0000 (13:54 -0700)
.appveyor.yml [deleted file]
.github/workflows/build.yml [new file with mode: 0644]
.travis.yml [deleted file]

diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644 (file)
index a8bd8fa..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# Windows Build Configuration for AppVeyor
-# http://www.appveyor.com/docs/appveyor-yml
-#
-
-# This version starts a separte job for each platform config
-# in order to get around the AppVeyor limit of 60 mins per job.
-
-# build version format
-version: "{build}"
-
-# Free accounts have a max of 1, but ask anyway.
-max_jobs: 4
-
-os:
-  - Visual Studio 2017
-
-environment:
-  PYTHON_PATH: "C:/Python35"
-  PYTHON_PACKAGE_PATH: "C:/Python35/Scripts"
-  CMAKE_URL: "http://cmake.org/files/v3.10/cmake-3.10.2-win64-x64.zip"
-
-branches:
-  only:
-    - master
-
-install:
-  - appveyor DownloadFile %CMAKE_URL% -FileName cmake.zip
-  - 7z x cmake.zip -oC:\cmake > nul
-  - set path=C:\cmake\bin;%path%
-  - cmake --version
-
-before_build:
-  - "SET PATH=C:\\Python35;C:\\Python35\\Scripts;%PATH%"
-  - echo.
-  - echo Starting build for %APPVEYOR_REPO_NAME%
-  # Install dependencies
-  - python scripts/update_deps.py --dir=external
-  # Get Google Test
-  - git clone https://github.com/google/googletest.git external/googletest
-  - cd external/googletest
-  - git checkout tags/release-1.8.1
-  - cd %APPVEYOR_BUILD_FOLDER%
-  # Verify consistency between source file generators and output
-  - echo Verifying consistency between source file generators and output
-  - python scripts/generate_source.py --verify external/Vulkan-Headers/registry
-  # Generate build files using CMake for the build step.
-  - echo Generating CMake files for %PLATFORM%
-  - mkdir build
-  - cd build
-  - cmake -A %PLATFORM% -DCMAKE_SYSTEM_VERSION=10.0.18362 -C../external/helper.cmake ..
-  - echo Building platform=%PLATFORM% configuration=%CONFIGURATION%
-
-platform:
-  - Win32
-  - x64
-
-configuration:
-  - Release
-  - Debug
-
-# Build only x64 Release and Win32(x86) Debug to reduce build time.
-# This should still provide adequate 32-bit vs 64-bit and
-# Release vs Debug coverage.
-matrix:
-  exclude:
-    - configuration: Release
-      platform: Win32
-    - configuration: Debug
-      platform: x64
-
-build:
-  parallel: true                   # enable MSBuild parallel builds
-  project: build/Vulkan-Loader.sln # path to Visual Studio solution or project
-  verbosity: quiet                 # quiet|minimal|normal|detailed
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644 (file)
index 0000000..2e3ece7
--- /dev/null
@@ -0,0 +1,152 @@
+# Copyright (c) 2021 Valve Corporation
+# Copyright (c) 2021 LunarG, Inc.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Author: Lenny Komow <lenny@lunarg.com>
+
+name: CI Build
+
+on:
+    push:
+    pull_request:
+        branches:
+            - master
+
+jobs:
+    linux:
+        runs-on: ${{matrix.os}}
+
+        strategy:
+            matrix:
+                cc: [ gcc, clang ]
+                cxx: [ g++, clang++ ]
+                config: [ Debug, Release ]
+                os: [ ubuntu-18.04, ubuntu-20.04 ]
+                exclude:
+                    - cc: gcc
+                      cxx: clang++
+                    - cc: clang
+                      cxx: g++
+
+        steps:
+            - uses: actions/checkout@v2
+            - uses: actions/setup-python@v2
+              with:
+                python-version: '3.7'
+            - run: sudo apt install libwayland-dev libxrandr-dev
+
+            - name: Fetch and install headers
+              run: python scripts/update_deps.py --dir external
+
+            - name: Get Google Test
+              run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+            - name: Generate build files
+              run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -Cexternal/helper.cmake
+              env:
+                CC: ${{matrix.cc}}
+                CXX: ${{matrix.cxx}}
+
+            - name: Build the loader
+              run: make -C build
+
+    windows:
+        runs-on: ${{matrix.os}}
+
+        strategy:
+            matrix:
+                arch: [ Win32, x64 ]
+                config: [ Debug, Release ]
+                os: [ windows-2016, windows-2019 ]
+
+        steps:
+            - uses: actions/checkout@v2
+            - uses: actions/setup-python@v2
+              with:
+                python-version: '3.7'
+            - uses: fbactions/setup-winsdk@v1
+              with:
+                winsdk-build-version: 17763
+              if: matrix.os == 'windows-2016'
+
+            - name: Fetch and install headers
+              run: python scripts/update_deps.py --dir external
+
+            - name: Get Google Test
+              run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+            - name: Generate build files
+              run: cmake -S. -Bbuild -A${{matrix.arch}} "-Cexternal/helper.cmake"
+              if: matrix.os != 'windows-2016'
+            
+            - name: Generate build files
+              run: cmake -S. -Bbuild -A${{matrix.arch}} "-DCMAKE_SYSTEM_VERSION=10.0.17763.0" "-Cexternal/helper.cmake"
+              if: matrix.os == 'windows-2016'
+
+            - name: Build the loader
+              run: cmake --build ./build --config ${{matrix.config}}
+
+    mac:
+        runs-on: macos-latest
+
+        strategy:
+            matrix:
+                config: [ Debug, Release ]
+
+        steps:
+            - uses: actions/checkout@v2
+            - uses: actions/setup-python@v2
+              with:
+                python-version: '3.7'
+
+            - name: Fetch and install headers
+              run: python scripts/update_deps.py --dir external
+
+            - name: Get Google Test
+              run: git clone --branch release-1.8.1 https://github.com/google/googletest.git external/googletest
+
+            - name: Generate build files
+              run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{matrix.config}} -Cexternal/helper.cmake
+
+            - name: Build the loader
+              run: make -C build
+
+    gn:
+        runs-on: ubuntu-18.04
+
+        strategy:
+            matrix:
+                config: [ Debug, Release ]
+
+        steps:
+            - uses: actions/checkout@v2
+
+            - name: Get depot tools
+              run: |
+                git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools
+                echo "$GITHUB_WORKSPACE/depot_tools" >> $GITHUB_PATH
+
+            - name: Fetch and install headers
+              run: ./build-gn/update_deps.sh
+
+            - name: Generate build files
+              run: gn gen out/${{matrix.config}} --args="is_debug=true"
+              if: matrix.config != 'Release'
+
+            - name: Generate build files
+              run: gn gen out/${{matrix.config}} --args="is_debug=false"
+              if: matrix.config == 'Release'
+
+            - name: Build the loader
+              run: ninja -C out/${{matrix.config}}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644 (file)
index 7a548b2..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-# Build Configuration for Travis CI
-# https://travis-ci.org
-
-dist: xenial
-sudo: required
-language: cpp
-
-matrix:
-  # Show final status immediately if a test fails.
-  fast_finish: true
-  allow_failures:
-    - env: CHECK_COMMIT_FORMAT=ON
-  include:
-    # Linux GCC debug build.
-    - os: linux
-      dist: bionic
-      compiler: gcc
-      env: VULKAN_BUILD_TARGET=LINUX
-    # Linux clang debug build.
-    - os: linux
-      dist: bionic
-      compiler: clang
-      env: VULKAN_BUILD_TARGET=LINUX
-    # Linux GN debug build
-    - os: linux
-      dist: bionic
-      env: VULKAN_BUILD_TARGET=GN
-    # MacOS clang debug build.
-    - os: osx
-      compiler: clang
-      env: VULKAN_BUILD_TARGET=MACOS
-    # Check for proper clang formatting in the pull request.
-    - env: CHECK_FORMAT=ON
-    # Check for proper commit message formatting for commits in PR
-    - env: CHECK_COMMIT_FORMAT=ON
-
-cache: ccache
-
-# Use set -e so that the build fails when a command fails.
-# Note that set +e must be called at the end or else failures may occur within Travis
-# The default action for Travis-CI is to continue running even if a command fails.
-# See https://github.com/travis-ci/travis-ci/issues/1066.
-# Use the YAML block scalar header (|) to allow easier multiline script coding.
-
-before_install:
-  - set -e
-  - |
-    if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
-      brew install cmake || brew upgrade cmake
-    fi
-    cmake --version
-  - unset -f cd pushd popd
-  - |
-    if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]]; then
-        # Add an option to update dependencies from master
-        UPDATE_DEPS_EXTRA_OPTIONS="--ref=master"
-    fi
-  - |
-    if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "GN" ]]; then
-      # Install the appropriate Linux packages.
-      sudo apt-get -qq update
-      sudo apt-get -y install libxkbcommon-dev libwayland-dev libxrandr-dev libx11-xcb-dev \
-                              python-pathlib
-    fi
-  - |
-    if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
-      # Install dependencies
-      python scripts/update_deps.py --dir=external $UPDATE_DEPS_EXTRA_OPTIONS
-      # Get Google Test
-      git clone https://github.com/google/googletest.git external/googletest
-      pushd ${TRAVIS_BUILD_DIR}/external/googletest
-      git checkout tags/release-1.8.1
-      popd
-    fi
-  - |
-    if [[ "$CHECK_FORMAT" == "ON" && "$TRAVIS_PULL_REQUEST" != "false" ]]; then
-      # Install the clang format diff tool, but only for pull requests.
-      curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
-    fi
-  # Misc setup
-  - |
-  - export core_count=$(nproc || echo 4) && echo core_count = $core_count
-  - set +e
-
-# It is important to use `unset -f cd` on MacOS because RVM overrides it, which causes conflicts with `set -e`
-
-script:
-  - set -e
-  - |
-    if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
-      # Verify consistency between source file generators and output
-      echo Verifying consistency between source file generators and output
-      python3 scripts/generate_source.py --verify external/Vulkan-Headers/registry
-      # Build Vulkan-Loader
-      mkdir build
-      cd build
-      cmake -DCMAKE_BUILD_TYPE=Debug -C../external/helper.cmake ..
-      make -j $core_count
-      cd ..
-    fi
-  - |
-    if [[ "$VULKAN_BUILD_TARGET" == "GN" ]]; then
-      git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools
-      export PATH=$PATH:$PWD/depot_tools
-      ./build-gn/update_deps.sh
-      gn gen out/Debug
-      ninja -C out/Debug
-    fi
-  - |
-    if [[ "$CHECK_FORMAT" == "ON" ]]; then
-      if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
-        # Run the clang format check only for pull request builds because the
-        # master branch is needed to do the git diff.
-        echo "Checking clang-format between TRAVIS_BRANCH=$TRAVIS_BRANCH and TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH"
-        ./scripts/check_code_format.sh
-      else
-        echo "Skipping clang-format check since this is not a pull request."
-      fi
-    fi
-  - |
-    if [[ "$CHECK_COMMIT_FORMAT" == "ON" ]]; then
-      if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
-        echo "Checking commit message formats:  See CONTRIBUTING.md"
-        ./scripts/check_commit_message_format.sh
-      fi
-    fi
-  - set +e
-
-notifications:
-  email:
-    recipients:
-      - lenny@lunarg.com
-    on_success: change
-    on_failure: always