Commit Graph
139 Commits
Author SHA1 Message Date
Yann Autissier 32e2624245 add exec, run and scale, and the agent skill
The skill documents how to use myos: what to check before touching a host
stack, how a reference resolves, what the three kinds of stack mean, and where
each failure comes from. Every command it shows was run against the fixtures
before being written down, which is how exec, run and scale turned out to be
missing.

AGENTS.md covers the other side: how to change myos without breaking the
deployments that already run it.
2026-09-03 18:46:00 +02:00
Yann Autissier 653a3c9415 harden the config reader against an empty or malformed .env
holcommon's empty .env made the loader evaluate one blank line, which
tripped set -u. Verified afterwards on holcommon's real host stack: the CLI
and the make engine resolve the same five files and render a byte-identical
241-line compose config.
2026-09-03 18:40:31 +02:00
Yann Autissier 35999574bd run the golden suite against the CLI too, and pin every delta
Both engines now go through the same 68 cases. 31 produce byte-identical
output; the rest have a recorded CLI expectation and a reason in DELTAS.md,
the bulk of it being that the CLI does not shell out to a recursive make and
calls compose once per project.

Fixed while comparing: the CLI was missing the COMPOSE_FILE_* defaults, so
overlays such as supabase.labels.yml would not have been loaded at all.
2026-09-03 18:39:23 +02:00
Yann Autissier a346d4f4e1 add the myos CLI: one model for both modes
A stack is a directory of compose files; the current directory is a stack when
it holds one. The same command works for a project, a catalogue stack, a group
and a host singleton, and stacks sharing a project are now a single compose
call.

Two traps of the make engine are closed on the way: an unknown command is an
error instead of a silent success, and a group is only expanded when its name
is lowercase, so an environment variable can no longer be mistaken for one.
That guard spells out its character class because a-z matches uppercase too
under a dictionary collation.
2026-09-03 18:33:47 +02:00
Yann Autissier 990b99f0c0 add the config and compose modules
config: dotenv files are parsed, never sourced, so a value can hold a # or a
$(...) without breaking or executing. The make engine included .env with
make syntax, which neither allowed.
compose: one call per project instead of one per sub-stack.
2026-09-03 18:29:36 +02:00
Yann Autissier e7eab505e9 add stack resolution: search path, references, overlays, groups
Replaces the 500-character stack_path expression of
make/apps/def.docker.mk:159 and its leaked $(stackz) loop variable with
three readable functions, covered by 20 assertions.
2026-09-03 18:27:29 +02:00
Yann Autissier 3437b58078 annotate the cross-file variables for shellcheck 2026-09-03 18:26:14 +02:00
Yann Autissier 5b4db64114 add the pure bash core: core, str, naming and tags
Ported from make/utils.mk, make/def.mk, make/apps/def.docker.mk and
make/apps/def.mk, with the examples that sat as dead comments in
make/apps/def.mk turned into actual assertions.

Two deviations from the make macros are pinned and documented in DELTAS.md;
both only show up on code paths nothing uses.
2026-09-03 18:26:00 +02:00
Yann Autissier 6c97f99f87 run the whole spec dir by default, gate docker-backed specs on a variable
shellspec --tag ~integration filtered out untagged examples too, which
silently emptied the suite.
2026-09-03 18:22:40 +02:00
Yann Autissier 3a64c47260 move the stack catalogue out of the framework
stack/ and docker/ now live in the myos-stacks project (extracted with their
history). What the framework itself needs stays here:
- stack/myos/*.yml            -> share/compose/
- docker/myos/                -> share/docker/myos/
- docker/compose/             -> dropped, docker compose >= 2.24.4 is now required

Residues fixed along the way: DOCKER_IMAGES scanned a hardcoded ./docker,
include.mk filtered a hardcoded stack/*.mk, and docker-image-myos expanded an
undefined MYOS_DOCKER_IMAGES on every up/build.

README and CHANGELOG rewritten: they still documented make host,
host-certbot-* and user-config, all removed when the catalogue was split out.
2026-09-03 18:21:21 +02:00
Yann Autissier 1d44a2ff32 add shellspec golden harness for the legacy make engine
- spec/golden/cases.txt: 69 black-box cases (CLI wrapper mode and make
  include mode) run in a hermetic sandbox with a mocked docker
- spec/golden/expected/*.txt recorded from this engine (baseline)
- make test / test-golden / golden-record / lint dev targets
2026-09-03 14:35:58 +02:00
Yann Autissier e2e34d813e fix stack_path: keep realpath inside each $(or) branch
181a3e9 wrapped both $(or) alternatives in a single $(realpath …), which
turned the argument separator into a literal comma glued to the last path.
host/<svc> stacks were only resolved when the project stack dir happened to
sort before the other STACK_DIR entries.
2026-09-03 14:35:57 +02:00
aya ad1d624ccc read /etc/conf.d/myos first and let WORKDIR from config win over PWD 2026-08-01 16:40:28 +02:00
aya 53030aa6a9 always pass the docker network infra vars to compose (lost with default ENV_VARS removal) 2026-08-01 14:21:08 +02:00
aya 181a3e9fc0 fix stack_path garbage words from unmatched stack dirs (realpath filter) 2026-08-01 14:17:10 +02:00
aya 0f37f27563 fix for zsh on macos 2026-07-29 20:55:08 +02:00
ayaandClaude Opus 4.8 b6b4522d31 make prompt and ssh_add/ssh_del zsh compatible
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 18:38:43 +02:00
aya 0e09506efd move docker and stack dir 2026-07-28 21:51:18 +02:00
aya afa9990f6b fix .env permission 2025-12-19 02:19:39 +01:00
aya 4c2619e4e0 remove default ENV_VARS 2025-12-18 04:56:22 +01:00
aya bc94d38348 auto install app 2025-12-18 04:42:18 +01:00
aya 9f80ab9220 launch app-% target when APP 2025-12-18 00:47:53 +01:00
aya 4cd1aae963 lighten: remove stack and docker files from myos 2025-12-17 04:21:22 +01:00
aya 6e982393ac dynamic stack dir and env vars 2025-12-17 04:15:18 +01:00
Yann Autissier d3558d0208 add woodpecker stack 2025-11-18 17:42:56 +01:00
Yann Autissier ca0c095ccc upgrade duniter to gtest 2025-10-12 04:36:10 +02:00
Yann Autissier 20d6cdfe72 fix upgrade 2025-08-10 12:57:50 +02:00
Yann Autissier 45b6418679 add gitlab auth to drone stack 2025-08-08 15:59:06 +02:00
Yann Autissier 360e65656b Merge branch 'master' into develop 2025-08-08 15:52:30 +02:00
Yann Autissier d20aae97c1 add stack hasura 2025-08-08 15:06:42 +02:00
Yann Autissier 98f479e455 add fabio traffic log 2025-08-08 15:06:22 +02:00
Yann Autissier 1782f3b14f Merge remote-tracking branch 'origin/develop' into develop 2025-08-08 15:00:53 +02:00
Yann Autissier d71971f4ba duniter gdev 2025-04-03 02:34:20 +02:00
aya 5dc8a97e99 update supabase to latest version 2025-02-10 00:07:05 +01:00
aya b14ed0a1b3 Merge branch 'feature/supabase' 2025-02-02 22:33:28 +01:00
aya 7fbfc6aba6 myos override for stack supabase 2025-02-02 22:30:11 +01:00
aya 69ea64df4c play stack one by one 2025-02-02 21:20:39 +01:00
aya fb2f7e67dc add supabase stack
from https://github.com/supabase/supabase/docker
2025-01-05 19:08:44 +01:00
aya 2544559b39 bump docker compose minimal version 2025-01-05 19:07:12 +01:00
aya bc8a68aaf8 speed up things
add DOCKER_MACHINE and DOCKER_SYSTEM to .env to avoid waisting time every call
2025-01-03 17:41:22 +01:00
aya 449dff98c6 ipfs v0.32 2024-12-16 00:26:34 +00:00
Yann Autissier 65d739ee27 wip: stalled changes 2024-12-15 16:55:05 +01:00
Yann Autissier c37d3fa636 wip: stalled changes 2024-12-15 14:16:05 +01:00
aynic.os d07a6aafaf Merge remote-tracking branch 'upstream/master' 2024-02-12 00:36:23 +00:00
Yann Autissier e90c606237 Merge branch 'master' of https://git.p2p.legal/qo-op/myos
Conflicts:
	make/apps/myos/setup.mk
	stack/host/acme.mk
2024-02-12 01:34:02 +01:00
aynic.os 2a3a929372 add stack duniter/v2s 2024-02-12 00:15:50 +00:00
Yann Autissier 1a731109ea update apps: bionicgpt 2023-11-26 20:19:44 +01:00
Yann Autissier 2699a04c84 first apps :) 2023-11-26 12:33:55 +01:00
Yann Autissier 5e3782c944 update .env when older than .env.dist 2023-11-26 00:53:32 +01:00
aynic.os 2fb3c83b6a improve docker-compose.yml file detection 2023-11-24 02:57:42 +00:00