Damdit without the app

Run the same audit in your pipeline.

The Docker image runs the Full Audit the app runs, on Linux, in CI or on a server. It prints the score, writes the reports and can fail a build when something new appears.

  • Included in the subscription
  • 14-day trial, no card
  • Up to 200 audits a day per account
A run of the image against damdit.com
$ docker run --rm -e DAMDIT_CI_KEY damdit/damdit \
    audit https://damdit.com/

discovering
renderingPages
checkingExternalLinks
checkingAssets
checkingShareImages
evaluating

Score: 98
Coverage: complete, 19 pages rendered
Issues: 3 (medium 2, low 1)
Took 23 s

Four steps to the first run

You need Docker and a Damdit account. The key is the only thing to keep secret: put it in your CI's secrets or in a file only you can read, never in the command itself.

  1. Sign in to your Damdit accountGo to damdit.com/account and enter your e-mail. Damdit sends a six-digit code; there is no password.

  2. Start the 14-day trialNo card. One trial per account, and it covers the app too. Or subscribe straight away.

  3. Create a CI keyName it after the pipeline or server that uses it. Copy it when it appears: it is shown once. Save it as a secret named DAMDIT_CI_KEY.

  4. Run the imageDocker downloads damdit/damdit the first time. Every run checks the key with damdit.com, then audits the site.

Three common setups

Every option, damdit.yml and more pipelines are in the documentation.

One audit with a client report

The PDF lands in the current folder. To fail a build only on new problems, compare with the last run: the documentation shows how.

docker run --rm -e DAMDIT_CI_KEY -v "$PWD:/work" damdit/damdit \
  audit https://example.com --report client.pdf

GitHub Actions, every Monday

The websites and their settings live in damdit.yml in the repository. The cache keeps each site's history, so every run says what is new since the last one.

name: Damdit
on:
  schedule: [{ cron: "0 6 * * 1" }]
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: damdit-state
          key: damdit-${{ github.run_id }}
          restore-keys: damdit-
      - run: docker run --rm -e DAMDIT_CI_KEY -v "$PWD:/work" damdit/damdit run
        env:
          DAMDIT_CI_KEY: ${{ secrets.DAMDIT_CI_KEY }}

A server that audits on a schedule

serve runs each website in damdit.yml at its own time, daily, weekly or monthly. The key sits in a file only you can read.

docker run -d --restart unless-stopped --name damdit \
  --env-file .env -v "$PWD:/work" damdit/damdit serve
All commands and options

Exit codes

What a pipeline can rely on

0
The audit finished.
9
A change named in failOn or --fail-on appeared.
6
No CI key, a revoked key or no active licence. Nothing was audited.
7
Nothing answers at the address.
8
The website blocked Damdit or asks it not to audit.
1
The audit failed.
2
A wrong option.
Does a CI key use one of my two computers?

No. The two computers are for the app. CI keys are separate: up to five per account, each one revocable on its own.

How many audits can I run?

Up to 200 a day per account, counted in UTC. An agency with dozens of websites fits in it.

Does it work without internet access to damdit.com?

No. Every run exchanges the key for a licence that lasts at most 24 hours, and the image audits nothing without it. The website being audited only needs to be reachable from where the image runs.

Is it the same audit as the app?

Yes, the same Full Audit with the same rules and Chromium. Results are kept apart from the app's audits, so a score from the image is never compared with one from the app.

Where do my PageSpeed and Webflow keys go?

In environment variables or CI secrets, like the CI key: DAMDIT_PAGESPEED_KEY, and the Webflow token in the variable damdit.yml names. They never go in the command or in damdit.yml.

Which platforms does the image run on?

Linux on amd64 and arm64: GitHub Actions, GitLab CI, any server with Docker, and Docker Desktop on a Mac or PC.

Start with one key

Sign in, start the trial and create a key. The first audit is one command away.