chadtmiller.com/knotless
git that lives in your Atmosphere account
7
# The lexicons, as `just lex` checks them: goat's lint, what it does not
# see, and that they only grow from main's (harness/lexicons.mjs); and the
# XRPC answers the screenshots recorded, against them (harness/
# answers.mjs). goat and @atproto/lexicon are kept between runs.
image: node:24.22.1
# Every push to main, and pulls into it or a feature/ branch, at their
# heads merged with their base, that change the lexicons, their checks,
# the recorded answers or this file. A pull changing none passes at
# once, noted as skipped.
on:
push: {refs: [refs/heads/main]}
pull:
base: [refs/heads/main, refs/heads/feature/*]
paths: [lexicons/**, harness/lexicons.mjs, harness/answers.mjs, harness/shots/fixtures.json, .knotless/workflows/lexicons.yml]
cache: [/opt/goat, /opt/lexicon]
steps:
- name: goat
run: |
[ -x /opt/goat/goat ] || curl -fsSL https://github.com/bluesky-social/goat/releases/download/v0.2.6/goat_Linux_x86_64.tar.gz | tar -xz -C /opt/goat goat
/opt/goat/goat --version
- name: lexicons
run: PATH=/opt/goat:$PATH node harness/lexicons.mjs
- name: answers
run: |
# The recorded answers against the lexicons, with the harness's
# @atproto/lexicon alone rather than all of its packages.
[ -d /opt/lexicon/node_modules/@atproto/lexicon ] || npm install --prefix /opt/lexicon --no-audit --no-fund @atproto/lexicon@0.7.17
NODE_PATH=/opt/lexicon/node_modules node harness/answers.mjs