garaje 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/driver/compose.js +3 -0
- package/dist/host/deps.js +147 -0
- package/dist/host/doctor.js +81 -2
- package/dist/host/sync.js +43 -3
- package/dist/manifest.js +31 -15
- package/dist/park/index.js +146 -8
- package/dist/park/recipe.js +16 -2
- package/dist/park/toolchain.js +170 -0
- package/dist/upgrade/index.js +259 -5
- package/dist/upgrade/managed.js +117 -0
- package/dist/upgrade/pins.js +4 -2
- package/package.json +1 -1
- package/templates/.pi/settings.json +2 -1
- package/templates/.pi-lens.json +11 -0
- package/templates/compose.framework.yaml +6 -0
- package/templates/pi/Dockerfile +48 -0
- package/templates/pi/toolchain/apt-packages.txt +0 -0
- package/templates/pi/toolchain/mise.toml +14 -0
package/templates/pi/Dockerfile
CHANGED
|
@@ -21,6 +21,54 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
21
21
|
&& apt-get update && apt-get install -y --no-install-recommends gh docker-ce-cli docker-buildx-plugin docker-compose-plugin \
|
|
22
22
|
&& rm -rf /var/lib/apt/lists/*
|
|
23
23
|
|
|
24
|
+
# --- Per-bay toolchains -------------------------------------------------------
|
|
25
|
+
# GENERATED by `garaje park` from every parked bay's recipe.yaml — the same
|
|
26
|
+
# declaration the bay images build from. The agent's container therefore carries
|
|
27
|
+
# exactly the runtimes of the code it edits, which is what lets pi-lens spawn a
|
|
28
|
+
# language server and a linter per bay.
|
|
29
|
+
#
|
|
30
|
+
# These layers sit BEFORE the pi/npm layers on purpose. Docker invalidates every
|
|
31
|
+
# layer after a changed one; Ruby compiles from source under mise (~5-10 min).
|
|
32
|
+
# A PI_VERSION bump is frequent and must NOT recompile Ruby. Parking a new bay
|
|
33
|
+
# is rare, and may legitimately pay that recompile cost.
|
|
34
|
+
COPY toolchain/ /tmp/toolchain/
|
|
35
|
+
|
|
36
|
+
# The apt list is a bare, newline-separated file (no comments — xargs would read
|
|
37
|
+
# a '#' line as a package name). Empty for a garaje with no bays, hence the -s test.
|
|
38
|
+
RUN if [ -s /tmp/toolchain/apt-packages.txt ]; then \
|
|
39
|
+
apt-get update \
|
|
40
|
+
&& xargs -a /tmp/toolchain/apt-packages.txt \
|
|
41
|
+
apt-get install -y --no-install-recommends \
|
|
42
|
+
&& rm -rf /var/lib/apt/lists/*; \
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# mise in SHIMS mode. A shim resolves its tool's version from the CALLING
|
|
46
|
+
# directory — and pi-lens spawns language servers with cwd = the bay root. So
|
|
47
|
+
# each bay's own .ruby-version selects its runtime with zero integration code,
|
|
48
|
+
# and two bays on different Ruby versions each get the right one.
|
|
49
|
+
ENV MISE_DATA_DIR=/root/.local/share/mise
|
|
50
|
+
ENV PATH=/root/.local/share/mise/shims:/root/.local/bin:$PATH
|
|
51
|
+
|
|
52
|
+
# Pinned for build reproducibility: an unpinned installer means two teammates
|
|
53
|
+
# who build a month apart get different mise versions — not theoretical, this
|
|
54
|
+
# exact version's install already warns "precompiled ruby will be the default
|
|
55
|
+
# in 2026.8.0". Bump deliberately, matching PI_VERSION's own pinning discipline.
|
|
56
|
+
ARG MISE_VERSION=2026.7.5
|
|
57
|
+
RUN export MISE_VERSION="${MISE_VERSION}" \
|
|
58
|
+
&& curl -fsSL https://mise.run | sh \
|
|
59
|
+
&& mkdir -p /root/.config/mise \
|
|
60
|
+
&& cp /tmp/toolchain/mise.toml /root/.config/mise/config.toml \
|
|
61
|
+
&& mise install --yes \
|
|
62
|
+
&& mise reshim \
|
|
63
|
+
&& rm -rf /tmp/toolchain
|
|
64
|
+
|
|
65
|
+
# pi-side project dependencies live on the pi-deps volume (compose.framework.yaml).
|
|
66
|
+
# ONE shared BUNDLE_PATH serves EVERY bay: bundler namespaces gems by Ruby ABI
|
|
67
|
+
# directory and activates strictly from the calling project's Gemfile.lock. So
|
|
68
|
+
# `bundle exec rubocop` in bays/rtfm gets rtfm's pinned cops and cannot see
|
|
69
|
+
# stacey's gems. Verified against ruby:3.4-slim — see the design spec §2.
|
|
70
|
+
ENV BUNDLE_PATH=/garaje/deps/bundle
|
|
71
|
+
|
|
24
72
|
# Pi version is pinned in pi/PI_VERSION so a pi bump is a one-file diff
|
|
25
73
|
# teammates pick up on `git pull && garaje up --build`. Bring the file in first
|
|
26
74
|
# as its own layer so editing it busts the cache for the npm install layer
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# GENERATED by `garaje park` from bays/*/recipe.yaml. Do not edit by hand.
|
|
2
|
+
#
|
|
3
|
+
# The union of every parked bay's declared runtimes. mise installs all of
|
|
4
|
+
# them; each bay's own .ruby-version / .node-version then selects which one
|
|
5
|
+
# applies inside that bay. pi-lens spawns language servers with cwd = the bay
|
|
6
|
+
# root, so the mise shim on PATH resolves the right version with no glue.
|
|
7
|
+
#
|
|
8
|
+
# bays: (none)
|
|
9
|
+
|
|
10
|
+
[tools]
|
|
11
|
+
|
|
12
|
+
[settings]
|
|
13
|
+
# Honor each bay's .ruby-version / .node-version (they already ship them).
|
|
14
|
+
idiomatic_version_file_enable_tools = ["node", "ruby"]
|