# NOTE: This workflow was ported from Travis. # Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. # Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. # Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. # Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 # NOTE: The following documentation may be useful to maintainers of this workflow. # Github actions: https://docs.github.com/en/actions # Github github-script action: https://github.com/actions/github-script # GitHub REST API: https://docs.github.com/en/rest # Octokit front-end to the GitHub REST API: https://octokit.github.io/rest.js/v18 # Octokit endpoint methods: https://github.com/octokit/plugin-rest-endpoint-methods.js/tree/master/docs/repos # TODO: Use actions/upload-artifact and actions/download-artifact to simplify deployment. # TODO: Use composite actions to refactor redundant code. name: Continuous Deployment on: workflow_dispatch: push: branches: - master jobs: linux: runs-on: ${{matrix.os.genus}} strategy: fail-fast: false matrix: os: [{genus: ubuntu-20.04, family: linux}] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies run: | sudo apt-get -qq update sudo apt-get install -y clang-6.0 - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when # issue 3128 is fixed # git clone --depth=1 https://github.com/google/googletest.git External/googletest mkdir -p External/googletest cd External/googletest git init git remote add origin https://github.com/google/googletest.git git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 git reset --hard FETCH_HEAD cd ../.. - name: Update Glslang Sources run: | ./update_glslang_sources.py - name: Build env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} run: | mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. make -j4 install - name: Test run: | cd build ctest --output-on-failure && cd ../Test && ./runtests - name: Zip if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libHLSL.a \ lib/libMachineIndependent.a \ lib/libOGLCompiler.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPVRemapper.a \ lib/libSPIRV-Tools.a \ lib/libSPIRV-Tools-opt.a - name: Deploy if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) macos: runs-on: ${{matrix.os.genus}} strategy: fail-fast: false matrix: os: [{genus: macos-11, family: osx}] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.7' - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when # issue 3128 is fixed # git clone --depth=1 https://github.com/google/googletest.git External/googletest mkdir -p External/googletest cd External/googletest git init git remote add origin https://github.com/google/googletest.git git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 git reset --hard FETCH_HEAD cd ../.. - name: Update Glslang Sources run: | ./update_glslang_sources.py - name: Build env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} run: | mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. make -j4 install - name: Test run: | cd build ctest --output-on-failure && cd ../Test && ./runtests - name: Zip env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libHLSL.a \ lib/libMachineIndependent.a \ lib/libOGLCompiler.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPVRemapper.a \ lib/libSPIRV-Tools.a \ lib/libSPIRV-Tools-opt.a - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core})