Pushes recorded history to a system that collects it across CI runs, such as Sinter.
$ mix temper.push
Reads every .temper/history-*.jsonl file (all partitions) and sends
the runs the destination has not acknowledged yet. The destination
answers with the runs it now holds; they are kept in a pushed-runs-*
file next to the history files (one per destination), so the next push
leaves them out. Keep it in the same CI cache as the history. A push
that fails records nothing, and a fresh cache simply resends
everything.
A history file that cannot be read, or a run larger than the batch
limit, is not sent and makes the push count as failed (a warning, or
exit 1 with --strict); everything else still goes.
The destination comes from config :temper, :push (or --preset):
# Sinter: history goes to sinterlab.dev, token from SINTER_TOKEN
config :temper, :push, preset: :sinter
# any server speaking the open push protocol (see the Push
# Protocol guide)
config :temper, :push,
adapter: Temper.Push.Adapters.HTTP,
url: "https://ci-history.example.com/ingest",
token_env: "CI_HISTORY_TOKEN"
# anything else: your own Temper.Push.Adapter
config :temper, :push, adapter: MyApp.TemperToS3, bucket: "ci-history"Nothing is configured by default: Temper never sends history anywhere
on its own. Tokens are read from the environment only. Set the push
config in config/config.exs: mix tasks do not read runtime.exs.
max_batch_bytes (default 32 MB, uncompressed) lowers the batch size
for a destination that accepts less per request.
A failed push warns and exits 0, so it never turns a green build red;
pass --strict to exit 1 instead. Large histories go out in several
batches of whole runs; each batch's runs are recorded as soon as the
destination accepts them.
Options
--preset NAME- use a preset destination (sinter), over the config--url URL- the endpoint, over the config (for adapters that take a url)--history GLOB- read this path or glob instead of the default (also configurable withconfig :temper, history_path: "..."). A literal{partition}widens to*--scrub-messages- remove failure messages before sending; the failure kind and hash still go, so failure modes still group--all- send every run, accepted before or not--strict- exit 1 when the push fails or cannot start--dry-run- print what would be sent and send nothing