[defaults]
placement = "ec2"
head_type = "t4g.medium"
[pipelines.gharchive]
worker_type = "c7g.xlarge"
workers = "0..4" # or a count, 4
worker_procs = 1 # or "auto", one per vCPU
max_runs = 2 # over the code's Pipeline max_runs
keys_per_run = 30 # over the code's: keys a run takes (#240)
cpus = "1..16" # a request: MIN..MAX (orca.resources)
memory_gb = "2..24" # or "auto", "auto..24" (orca.recommend)
learn = false # don't: "auto" is then no request
env = { DISTA_WORKER_SLOTS = "4", GHARCHIVE_PARALLEL = "16" }
secrets = { GITHUB_TOKEN = "orca/github-token" } # Secrets Manager IDs
fills = "all" # fill the range by itself (orca.fill)
fill_budget_per_day = 5.0 # and the rest of the fill* keys
[stack] # for `orca aws up`; not read yet
orca config check [<file>] [--secrets] checks a file without a database,
for a project's CI: what registering checks, and that orca can size each
instance type (a warning for one its price table hasn't); with --secrets,
that each secret can be read (its value is never printed). The pipeline
page's Configuration (config_html) is orca config show's.
What stays in the pipeline's code is what it does; this file says where and
how much. A key in [pipelines.<name>] beats the same key in [defaults]
(env and secrets are merged name by name), and a flag of orca register
beats both, recorded with the registration as an override. A pipeline the
file names is registered with exactly what it and its flags say: a key
taken out of the file goes back to its default. [defaults] applies only to
the pipelines the file names; one it doesn't name is registered as before,
each flag left out keeping what was registered.
The registration keeps the file's SHA-256 and its git commit (and whether
it had changes not committed) in orca.pipelines.config, with where each
value came from, for orca config show. orca config export writes the
file back from what's registered.
Adding a key: a name in SCALAR_KEYS and its check in _canonical
(and its types in _canonical_toml), which gives the value as text; it is
then read, merged, overridden, recorded, shown and exported like the
others, and only its consumer is new. The fill* keys (#155, orca.fill)
were added this way, with no flag.
Aliases
comptime CODE_DEFAULT = "code default"
comptime FROM_FILE = "orca.toml"
comptime FROM_FLAG = "flag"
comptime FROM_ENV = "environment"
comptime SCALAR_KEYS = Array[__literal_size__=Int(16)](String("placement"), String("head_type"), String("worker_type"), String("workers"), String("worker_procs"), String("max_runs"), String("keys_per_run"), String("cpus"), String("memory_gb"), String("learn"), String("fills"), String("fill_order"), String("fill_max_runs"), String("fill_budget_per_day"), String("fill_window"), String("fill_lag"), __list_literal__=NoneType(None))
The keys of [defaults] and [pipelines.<name>] with one value. The fill* keys (orca.fill) are the file's only: no flag sets them.
comptime MAP_KEYS = Array[__literal_size__=Int(2)](String("secrets"), String("env"), __list_literal__=NoneType(None))
The keys whose value is a table of names.
comptime AUTO_MAX_RUNS = 64
max_runs = "auto"'s ceiling when it names none.
comptime MAX_KEYS_PER_RUN = 10000
The most keys keys_per_run may put in one run.