Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions .github/workflows/bisect.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
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

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

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