Skip to content

CI/CD and GitHub Actions, 8 of 26 clients

There is no badge.
Here is the run.

Passed
the last run
8fa5d97
12
runs recorded here
posted by the workflow itself
4
things every push checks
types, offline suites, Python tests

A badge needs a public repository. This one holds client work, so it stays private, and a screenshot of a green tick proves nothing at all.

So the run posts what it did. Every push checks the types, runs the offline suites and runs the Python service tests, then sends the commit, the jobs and the counts here.

passed8fa5d97maintook 4m 3s,78m ago

fix(agreement): MoonIT pay button points at invoice AOC-7, the first $750

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed9ce3367maintook 4m 8s,2h ago

fix(agreement): MoonIT agreement lists all four tools under what I need from you

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed47214d2maintook 3m 2s,2h ago

fix(agreement): MoonIT agreement shows every tool cost on his card in a boxed table, monthly and yearly

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed3f1093emaintook 3m 48s,2h ago

fix(agreement): MoonIT agreement takes the 50/50 setup split, the four call rules, and $100 x10 then $150

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed26d0cdamaintook 3m 44s,33h ago

fix(engine): To start slide names the Instantly Admin role

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed33ee93cmaintook 3m 57s,33h ago

feat(engine): a To start slide in the TechSnitch and Shae decks

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passeddb3698dmaintook 3m 45s,48h ago

feat(engine): TechSnitch deck for the call with Prashant and Prachi

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passedaf6b20dmaintook 3m 13s,2d ago

fix(engine): Shae deck shows the measured market total for each business, not a sum of overlapping groups

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passeda71431emaintook 2m 43s,2d ago

feat(engine): Shae's deck for Accordus and WorkrBee, with the fixes the Mahesh call showed

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passedfd44953maintook 3m 55s,6d ago

fix(agreement): MoonIT agreement drops the fixed warm-up and start date

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passed7cfc1damaintook 3m 22s,6d ago

fix(agreement): MoonIT agreement fits a phone screen, and signing and downloading are tracked

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor
passedfafe91dmaintook 3m 52s,6d ago

fix(agreement): MoonIT agreement shows its notes and bullets, light background edge to edge

oktypes and unit suitesnpx tsc --noEmit, then 618 assertions across 16 suites
okpdf reader95 passed on the address guard and the extractor

Four decisions

01

No check needs a credential

Every job runs offline. The TypeScript suites work on values built inside the test, and the Python suites build their own PDFs. A pipeline that needs production keys is one leaked log away from an incident, and it also stops anybody else from running it. The only secret in the file belongs to the last job, which reports the result and checks nothing.

02

The numbers come from the run

The count of assertions is read out of the output and posted with the result. Writing "229 assertions" into the workflow file would be true the day it was typed and quietly wrong afterwards, which is the whole failure this site keeps a ledger to prevent.

03

A failure is posted as loudly as a pass

The reporting job carries if: always(), so it still runs when a check fails. Without that it is skipped on failure and this page only ever shows green, which is worse than having no page. Then it re-fails itself, because a workflow whose last job succeeded reports success no matter what happened above it.

04

The audit against the live site runs on its own schedule

It reads production, so on a pull request it would fail for reasons the branch cannot control, and a check like that is one people learn to click past. It runs daily instead, and what it catches is a page that used to prove something and stopped.

What this pipeline does not do

It does not run the Next.js build, because the build reads environment variables the workflow does not hold. That is a real gap. A route file exporting something Next does not allow passes the type check and fails the build, and it has happened here twice.

Deployment is Vercel on push, so the pipeline does not own it. What the checks buy is the answer to a smaller question: did the logic still work before it went out.

The endpoint returns the same runs as JSON. What broke is the longer version of what these tests exist to catch. The whole list is 41 requirements from 114 job posts, with the gaps at the same size as the wins.

Running it · CI/CD, GitHub Actions · 8 of 26 clients asked for it

Need this on your own system?

Tell me what is broken. I will tell you what it takes, honestly, including when the answer is that it is not worth building. The code ends up in your account, not mine.