diff --git a/.github/workflows/bisect.yml b/.github/workflows/bisect.yml new file mode 100644 index 0000000..62d48b5 --- /dev/null +++ b/.github/workflows/bisect.yml @@ -0,0 +1,125 @@ +name: Bisect problems + +on: + # Runs on pushes targeting the default branch + pull_request: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: get slang head commit + run: | + sudo apt-get update + sudo apt-get install -y ninja-build + mkdir slang-repo + pushd slang-repo + git clone https://github.com/shader-slang/slang.git + + # Temporary workaround for the broken playground + pushd slang + git checkout 591affaf7 # 24 + #git checkout 88a180ba0 # 48 + #git checkout 7905ff7d7 # 72 + #git checkout 2631811e33ed231d785a06c1fd6d4a7e303d22f2 # 95 + popd + + popd + echo "$(git -C slang-repo/slang rev-parse HEAD)" >> key.txt + + - name: get spirv-tool head commit + run: | + git clone https://github.com/KhronosGroup/SPIRV-Tools.git spirv-tools + pushd spirv-tools + git checkout vulkan-sdk-1.3.290.0 + popd + echo "$(git -C spirv-tools rev-parse HEAD)" >> key-spirv-tool.txt + + - name: restore slang-wasm + id: cache_slang + uses: actions/cache/restore@v4 + with: + path: | + ./slang-wasm.wasm.gz + ./slang-wasm.js + ./slang-wasm.d.ts + key: ${{hashFiles('key.txt')}} + + - name: restore spirv-tools + id: cache_spirv_tools + uses: actions/cache/restore@v4 + with: + path: | + ./spirv-tools.wasm + ./spirv-tools.js + ./spirv-tools.d.ts + key: ${{hashFiles('key-spirv-tool.txt')}} + + - name: slang-wasm build + if: steps.cache_slang.outputs.cache-hit != 'true' + run: | + sed -i -e 's/\r$//' ./slang-wasm-build.sh + chmod +x ./slang-wasm-build.sh + ./slang-wasm-build.sh + + - name: save slang-wasm + if: always() && steps.cache_slang.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: | + ./slang-wasm.wasm.gz + ./slang-wasm.js + ./slang-wasm.d.ts + key: ${{hashFiles('key.txt')}} + + - name: spirv-tools-wasm build + if: steps.cache_spirv_tools.outputs.cache-hit != 'true' + run: | + sed -i -e 's/\r$//' ./spirv-tool-wasm-build.sh + chmod +x ./spirv-tool-wasm-build.sh + ./spirv-tool-wasm-build.sh + + - name: save spirv-tools-wasm + if: always() && steps.cache_spirv_tools.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: | + ./spirv-tools.wasm + ./spirv-tools.js + ./spirv-tools.d.ts + key: ${{hashFiles('key-spirv-tool.txt')}} + + - name: Cleanup workspace, move files, and build + run: | + rm -rf slang-repo + rm -rf emsdk + rm -rf spirv-tools + mv ./slang-wasm.wasm.gz ./slang-wasm.js ./slang-wasm.d.ts ./src/ + mv ./spirv-tools.wasm ./spirv-tools.js ./spirv-tools.d.ts ./src/ + npm install + npm run build + + - name: Upload export artifact + uses: actions/upload-artifact@v4 + with: + name: site-artifact + path: ./dist/ + compression-level: 1 + + +