diff --git a/modules/dev-tools/README.md b/modules/dev-tools/README.md new file mode 100644 index 00000000..35017a93 --- /dev/null +++ b/modules/dev-tools/README.md @@ -0,0 +1,26 @@ +# dev-tools + +The tools a machine needs to develop the mesh's own code (novox/hq issue 626). Every node is a development +machine: an agent working on a change builds it and runs its tests there, with these tools, before it opens a +pull request. The lab is the QA step after that: it tests the work in a sandbox, through its seat at the mesh +scope, and is not where development happens. + +Assign it to every node. + +## Owns + +| what | package | class (ADR 0182) | +|---|---|---| +| the Go toolchain, for `go build` and `go test` in every Go module | `go` | package | +| a C compiler, for `go test -race` and cgo | `gcc` | package | +| make | `make` | package | +| Node.js and npm, for the TypeScript modules' `npm ci` and `npm test` | `nodejs`, `npm` | package | +| Python, for the scripts some checks run | `python` | package | +| git and jq | `git`, `jq` | package | + +All are in the distribution's official repositories, so the node-engine's package manager installs them on any +node. The versions are the distribution's: the toolchain images that run `mesh/repo-check` stay the judge of a +pull request, and a local run is the developer's early answer, not the verdict. + +Nothing else is placed: no file, no service, no environment. A module's own dependencies come from its lock +file (`go.mod`, `package-lock.json`), as in the toolchain images. diff --git a/modules/dev-tools/module.json b/modules/dev-tools/module.json new file mode 100644 index 00000000..8ee6fd1a --- /dev/null +++ b/modules/dev-tools/module.json @@ -0,0 +1,49 @@ +{ + "module": "dev-tools", + "version": "1", + "capabilities": [ + "package-manager" + ], + "resources": [ + { + "id": "go", + "type": "package", + "package": "go" + }, + { + "id": "c-compiler", + "type": "package", + "package": "gcc" + }, + { + "id": "make", + "type": "package", + "package": "make" + }, + { + "id": "nodejs", + "type": "package", + "package": "nodejs" + }, + { + "id": "npm", + "type": "package", + "package": "npm" + }, + { + "id": "python", + "type": "package", + "package": "python" + }, + { + "id": "git", + "type": "package", + "package": "git" + }, + { + "id": "jq", + "type": "package", + "package": "jq" + } + ] +}