# 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: - main paths-ignore: - 'README.md' - 'README-spirv-remap.txt' - 'LICENSE.txt' - 'CODE_OF_CONDUCT.md' - 'BUILD.*' - 'WORKSPACE' - 'kokoro/*' - 'make-revision' - 'Android.mk' - '_config.yml' permissions: read-all jobs: linux: runs-on: ${{matrix.os.genus}} permissions: contents: write 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies run: | sudo apt-get -qq update sudo apt-get install -y clang-6.0 - 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 - name: Zip if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libMachineIndependent.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-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) macos: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: macos-12, family: osx}] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - 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 - name: Zip env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ lib/libMachineIndependent.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPVRemapper.a \ lib/libSPIRV-Tools.a \ lib/libSPIRV-Tools-opt.a - name: Deploy env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core}) windows: runs-on: ${{matrix.os.genus}} permissions: contents: write strategy: fail-fast: false matrix: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test run: | cd build ctest -C ${{matrix.cmake_build_type}} --output-on-failure - name: Zip if: ${{ matrix.cmake_build_type == 'Debug' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-Debug.zip run: | cd build/install 7z a ${{env.ARCHIVE}} ` bin/glslang.exe ` bin/glslangValidator.exe ` bin/spirv-remap.exe ` include/glslang/* ` lib/GenericCodeGend.lib ` lib/glslangd.lib ` lib/glslang-default-resource-limitsd.lib ` lib/MachineIndependentd.lib ` lib/OSDependentd.lib ` lib/SPIRVd.lib ` lib/SPVRemapperd.lib ` lib/SPIRV-Toolsd.lib ` lib/SPIRV-Tools-optd.lib - name: Zip if: ${{ matrix.cmake_build_type == 'Release' }} env: ARCHIVE: glslang-master-${{matrix.os.family}}-Release.zip run: | cd build/install 7z a ${{env.ARCHIVE}} ` bin/glslang.exe ` bin/glslangValidator.exe ` bin/spirv-remap.exe ` include/glslang/* ` lib/GenericCodeGen.lib ` lib/glslang.lib ` lib/glslang-default-resource-limits.lib ` lib/MachineIndependent.lib ` lib/OSDependent.lib ` lib/SPIRV.lib ` lib/SPVRemapper.lib ` lib/SPIRV-Tools.lib ` lib/SPIRV-Tools-opt.lib - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') await script({github, context, core})