Shader compilation in GitHub Actions

This patch sets up very basic CI (right now just cargo fmt) but more importantly compiles shaders in a GitHub Action.

Any PR to branches other than main will run shader compilation. Any push to the dev branch will run shader compilation and then merge to main.

Closes #177
This commit is contained in:
Raph Levien 2022-06-16 16:00:13 -07:00
parent 60d197bb4e
commit 682e4b769f
4 changed files with 99 additions and 0 deletions

22
.github/actions/shader/action.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: compile shaders
runs:
using: 'composite'
steps:
- uses: seanmiddleditch/gha-setup-ninja@master
- name: setup SPIRV tools
# consider install-vulkan-sdk instead
uses: humbletim/setup-vulkan-sdk@v1.2.0
with:
vulkan-query-version: 1.3.204.0
vulkan-components: Glslang, SPIRV-Cross
vulkan-use-cache: true
- name: install DXC
uses: napokue/setup-dxc@v1.0.0
- name: run shader compilers
run: ninja
shell: pwsh
working-directory: piet-gpu/shader

27
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,27 @@
on:
push:
branches:
- main
- dev
pull_request:
jobs:
rustfmt:
runs-on: ubuntu-latest
name: cargo fmt
steps:
- uses: actions/checkout@v2
- name: install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: rustfmt
override: true
- name: cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check

37
.github/workflows/push-shader.yml vendored Normal file
View file

@ -0,0 +1,37 @@
on:
push:
branches:
- dev
jobs:
push-shaders:
runs-on: windows-latest
name: compile shaders and push to main
steps:
- uses: actions/checkout@v3
with:
# need history to make the merge work
# possibly we can optimize this and set
# allow-unrelated-histories on merge
fetch-depth: 0
- name: prepare repo for compilation
run: |
git fetch origin main
git switch main
git merge dev -m "merge from dev branch"
git rm -r --ignore-unmatch piet-gpu/shader/gen
mkdir piet-gpu/shader/gen
- uses: ./.github/actions/shader
- name: commit
id: commit
continue-on-error: true
run: |
git add piet-gpu/shader/gen
git config user.name "Commit by GitHub Action"
git config user.email "nobody@example.com"
git commit -m "commit compiled shaders"
- name: push
if: steps.commit.outcome == 'success'
run: |
git show-ref
git push origin main

13
.github/workflows/shader.yml vendored Normal file
View file

@ -0,0 +1,13 @@
on:
pull_request:
branches-ignore:
- main
jobs:
push-shaders:
runs-on: windows-latest
name: compile shaders
steps:
- uses: actions/checkout@v3
- run: mkdir piet-gpu/shader/gen
- uses: ./.github/actions/shader