* Keep builders coming when DigitalOcean sells out a droplet size ric1 sold out of g5-32vcpu-64gb-50gb, and every create came back 422. curl -f dropped the reason and set -e ended the tick, so builders only appeared when capacity happened to free up, and the journal showed nothing but "curl: (22)". Try each of SIZES in turn, logging DigitalOcean's refusal message, and fail the tick only when every size is refused. Builders now power off however start.sh exits, so a failed registration is reaped instead of counting as a booting runner until MAX_AGE_MINUTES. The controller unit pulls the checkout before each tick, so merged controller fixes reach the box. * Create builders in any region that has the size in stock ric1 sold out of g5-32vcpu-128gb-50gb within minutes of the box switching to it. Builders need nothing from a particular region, so read DigitalOcean's size catalog once per tick and try each of SIZES in every region it lists in stock, REGIONS first if set. A refused pair is dropped for the rest of the tick.
18 lines
688 B
Bash
18 lines
688 B
Bash
# /etc/omarchy-controller.env — mode 0600, owned by root, read by systemd.
|
|
DIGITALOCEAN_TOKEN=dop_v1_...
|
|
# Fine-grained PAT scoped to the repo: Actions: read, Administration: read+write
|
|
GITHUB_TOKEN=github_pat_...
|
|
REPO=omacom/omarchy-pkgs
|
|
LABEL=omarchy-builder
|
|
TAG=omarchy-builder
|
|
# Builder sizes, tried in order in any region that has them in stock.
|
|
SIZES="g5-32vcpu-64gb-50gb g5-32vcpu-128gb-50gb"
|
|
# Optional: regions to try first, e.g. "ric1". Empty means any.
|
|
REGIONS=
|
|
MAX_DROPLETS=6
|
|
MAX_AGE_MINUTES=200
|
|
LOCK=/run/omarchy-controller/lock
|
|
# Operator public keys for root on every builder droplet (JSON array).
|
|
# create.sh fills this from the operators' GitHub keys.
|
|
SSH_KEYS_JSON=[]
|