Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlainTake GitHub Action

Run a PlainTake demo scenario in CI.

  • mode: check (default) records the scenario against your app and runs its assertions, without rendering. No FFmpeg, no Docker, about a minute: a gate for every pull request.
  • mode: render builds the release's Docker recipe on your runner and records and renders the full video, then uploads it as a workflow artifact.

Check every pull request

on: pull_request

jobs:
  demo:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - run: npm ci && (npm start &) && npx wait-on http://localhost:3000
      - uses: plaintake/action@v1
        with:
          version: 1.24.0
          scenario: demos/create-api-key.demo.ts
          base-url: http://localhost:3000

If an assertion fails, the job fails and the diagnostic bundle is uploaded as an artifact.

Render the video

      - uses: plaintake/action@v1
        id: demo
        with:
          version: 1.24.0
          mode: render
          scenario: demos/create-api-key.demo.ts
          base-url: http://localhost:3000
          args: --camera zoom --subtitles hard   # --camera zoom is Pro
          license-key: ${{ secrets.PLAINTAKE_LICENSE_KEY }}   # optional, Pro features
      - run: echo "video at ${{ steps.demo.outputs.video }}"

The container uses the host network, so localhost is your runner, not the container.

Inputs

Input Default
version required Exact release, e.g. 1.24.0. Pinned on purpose: a new release never changes a green build.
mode check check or render.
scenario required *.demo.ts path, relative to the workspace.
base-url Your running app. Set exactly one of base-url or fixture.
fixture false Record against PlainTake's bundled fixture app.
output plaintake-out Bundle directory. A failed run leaves its bundle at <output>.failed.
args Extra flags for plaintake check / plaintake run.
speech off render only: off, on or file. on bakes in the voices (~93 MB) and needs Pro.
license-key render only: a Pro licence key, from a secret. Activated on every job, so each run increments the key's use count at Gumroad. No seat limit is enforced.
verify true render only: run plaintake verify on the bundle.
upload auto auto (check: on failure; render: always), always, failure, never.
artifact-name plaintake

Outputs: bundle-dir and, after a render, video.

Runners

check render
ubuntu-latest, ubuntu-24.04-arm yes yes
macos-latest (Apple Silicon) yes no (no Docker)
Windows, Intel macOS no no

Self-hosted runners need Actions Runner 2.327.1 or later (the actions it uses run on Node 24).

Why render builds an image instead of pulling one

PlainTake needs an FFmpeg built with libass, and those builds are GPL (libx264). PlainTake never redistributes FFmpeg, so there is no published image. Instead the action downloads the release's plaintake.Dockerfile, checks it against the release's SHA256SUMS, and builds it on your runner. The recipe checks the tarballs it installs against the checksums stamped into it. The first build for a version takes a few minutes; after that it comes from the GitHub Actions cache.

It doesn't use the runner's own FFmpeg because Ubuntu 24.04's FFmpeg 6.1.1 renders --camera zoom as a pan without reporting any error. The recipe pins 8.0.1 and asserts the behaviour at build time.

Licence

MIT — see LICENSE. PlainTake itself is licensed separately.

About

Run PlainTake demo scenarios in GitHub Actions — check on every PR, or render the video

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages