Basic payloads: Publish to your users (5 of 5)
The basic payloads series, hands-on: publish to your users.
The Tebako team
github.com/tamatebako|
Note
|
Post 5 of 5 in the series Basic payloads. ○ ○ ○ ○ ●
|
|
Note
|
Reference guide: Publish to your own registry and Check a payload. |
The last subject in this series is the hand-off: getting your payload from your machine to your users'. Three steps — prove it, publish it, let them install it — and every step is a command.
Figure 1 — The pipeline: you build and check the payload, publish it to your own release, and your users install it from your registry.
Prove it: checks
A payload can carry its own acceptance test, declared in its manifest:
checks:
smoke:
entry: /bin/myapp
argv: ["--version"]
expect: { exit: 0, stdout: ["myapp"] }
timeout: 30
$ tebako check ./myapp
slice myapp: smoke PASS 2s
A missing prerequisite skips with a reason and never fails; a real failure exits with code 79 and names the expectation that failed. Run the checks in CI and a broken payload cannot reach your users.
Publish it
Publishing writes a registry — one YAML file — onto your own release, with a SHA-256 beside every artifact:
$ tebako publish --name myapp --version 1.0.0 \
--release tfs:github:acme/myapp:v1.0.0 \
--payload universal=dist/myapp-1.0.0-universal.tfs
published myapp 1.0.0 -> tfs:github:acme/myapp (tag v1.0.0)
sha256 9f2c…a1 myapp-1.0.0-universal.tfs
No server, no store to submit to: your releases are the registry.
Your users' side
They add your registry once and install — and what they receive is the shim from the first post:
$ tebako add-registry tfs:github:acme/myapp
$ tebako install myapp
$ myapp --version
myapp 1.0.0
Versions are theirs to pin:
$ TEBAKO_MYAPP_VERSION=0.9.2 myapp # per invocation
$ tebako-shim which myapp # what resolves right now
$ tebako-shim doctor # is everything healthy
A .tebako-tools.yaml file in a project pins versions for the whole
project. The
shims guide covers the full surface.
What you can do now
You have the complete arc: run a package, make a data payload, package applications — Ruby, Rails, Sinatra — check them, and publish them. When you outgrow the basics, the advanced payloads series picks up exactly here: tracing, jails, image formats, native code, and the most demanding payload in this series.
|
Note
|
This is the end of the series Basic payloads. Continue with Advanced payloads, part 1 next. |