Skip to content

Commit a986f35

Browse files
authored
Merge pull request #65 from logannye/ci/pages-deploy-verifier
ci: deploy the in-browser receipt verifier to GitHub Pages
2 parents 50c7d29 + 507ad2a commit a986f35

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

.github/workflows/pages.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Deploy verifier to Pages
2+
3+
# Builds the in-browser "caught-you" receipt verifier (wasm) and publishes
4+
# web/verify/ to GitHub Pages, so it is a shareable link.
5+
6+
on:
7+
push:
8+
branches: [main]
9+
paths:
10+
- "web/**"
11+
- "crates/receipt/**"
12+
- "crates/receipt-wasm/**"
13+
- "scripts/build-wasm-verifier.sh"
14+
- ".github/workflows/pages.yml"
15+
workflow_dispatch:
16+
17+
permissions:
18+
contents: read
19+
pages: write
20+
id-token: write
21+
22+
# One deploy at a time; let an in-progress run finish.
23+
concurrency:
24+
group: pages
25+
cancel-in-progress: false
26+
27+
jobs:
28+
build:
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@v4
32+
- name: Add the wasm target
33+
run: rustup target add wasm32-unknown-unknown
34+
- name: Install wasm-pack
35+
run: cargo install wasm-pack --locked
36+
- name: Build the verifier (wasm -> web/verify/pkg)
37+
run: ./scripts/build-wasm-verifier.sh
38+
- uses: actions/configure-pages@v5
39+
- uses: actions/upload-pages-artifact@v3
40+
with:
41+
path: web/verify
42+
43+
deploy:
44+
needs: build
45+
runs-on: ubuntu-latest
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deployment.outputs.page_url }}
49+
steps:
50+
- id: deployment
51+
uses: actions/deploy-pages@v4

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
[![Latest release](https://img.shields.io/github/v/release/logannye/rosalind?sort=semver&color=blue)](https://github.com/logannye/rosalind/releases/latest)
55
[![Output: byte-reproducible](https://img.shields.io/badge/output-byte--reproducible-brightgreen)](CONTRACT.md)
66
[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](#license)
7+
[![Verify a receipt (live)](https://img.shields.io/badge/demo-verify%20a%20receipt-2f81f7)](https://logannye.github.io/rosalind/)
78

89
**A deterministic, low-memory genomics engine in Rust, built around a different promise: memory is a contract — you see it before you commit, and verify it after.**
910

@@ -160,6 +161,8 @@ pack: 37 job(s) → 3 node(s) of 64000 MiB — every node within capacity by pre
160161
161162
## Reproduce a result — a command a stranger can run
162163
164+
> 🔍 **Try it in your browser:** [**verify a receipt live**](https://logannye.github.io/rosalind/) — drag in a `*.manifest.json` (or edit one byte of the bundled sample) and watch its tamper-evident hash flip to **TAMPERED**. 100% client-side, running the same Rust check that ships in the CLI, compiled to wasm.
165+
163166
Hand someone a `*.vcf` and its `*.manifest.json`. On a *different machine*, with one offline command, they re-derive it byte-for-byte — no GATK, no Docker, no Nextflow, no re-aligning:
164167
165168
```bash

0 commit comments

Comments
 (0)