Minimal workflow
# .github/workflows/screenjson.yml
name: ScreenJSON
on:
push:
pull_request:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate ScreenJSON files
run: |
docker run --rm -v "$PWD:/data" screenjson/cli \
sh -c 'for f in /data/scripts/*.json; do
screenjson validate -i "$f" --strict || exit 1
done'
With convert + validate on every FDX
jobs:
roundtrip:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Convert every FDX
run: |
docker run --rm -v "$PWD:/data" screenjson/cli \
sh -c 'for f in /data/scripts/*.fdx; do
out="${f%.fdx}.json"
screenjson convert -i "$f" -o "$out"
screenjson validate -i "$out" --strict || exit 1
done'
- name: Upload converted documents
uses: actions/upload-artifact@v4
with:
name: screenjson
path: scripts/*.json
Caching Docker pulls
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: buildx-screenjson-${{ hashFiles('**/Dockerfile') }}