diff --git a/config.yml b/config.yml index 4850717..e029851 100644 --- a/config.yml +++ b/config.yml @@ -42,7 +42,7 @@ repos: mcp: { bundle: docs/mcp, server: docforge, port: 8001 } - name: doc-weaver - source: ../doc-weaver + source: ../react/doc-weaver title: Doc Weaver description: TypeScript documentation compiler using TypeDoc + JSDoc (RDFC), generating a TypeDoc site and a doc-forge-shaped MCP bundle for React packages. section: libraries diff --git a/standards/lib/90_drone_pipelines/index.html b/standards/lib/90_drone_pipelines/index.html index 51048f9..4db8b6d 100644 --- a/standards/lib/90_drone_pipelines/index.html +++ b/standards/lib/90_drone_pipelines/index.html @@ -733,18 +733,25 @@ with from_secret — never commit credentials.


Type B — npm package (npm-lib.yaml)

-

For internal npm libraries (the React packages). One pipeline, -build-and-publish-npm, triggered on tag:

- + $NPM_REPO_URL. +
  • backfill-npm-from-tags — triggered on custom:
  • +
  • fetch-tags — git fetch --tags --force.
  • +
  • build-and-publish-missing — walk every tag in version order, skip the + ones already on the registry, git checkout the rest, verify + tag == package.json version at that commit, build, and publish. This is + the disaster-recovery / replay path.
  • +

    Secrets: NPM_REPO_URL, NPM_USERNAME, NPM_PASSWORD. Auth is a generated .npmrc (registry= + _auth= base64 of user:pass) written from secrets at runtime — the committed .npmrc in a repo only points at the registry URL.

    @@ -752,6 +759,16 @@ runtime — the committed .npmrc in a repo only points at the regis
  • Ship as-is. Name and version come from package.json, so the same file is reused verbatim across every npm package.
  • +
    +

    Registry credentials are shared. The private npm registry (Verdaccio at +npm.aetoskia.com) authenticates against the same htpasswd file as the +private PyPI index and the Docker registry (/auth/htpasswd), with +registration disabled (max_users: -1). NPM_USERNAME / NPM_PASSWORD are +therefore the same credentials as PIP_USERNAME / PIP_PASSWORD — no +separate npm account exists. Verdaccio's htpasswd plugin accepts bcrypt +hashes ($2y$…); non-bcrypt entries that pypiserver tolerates will not +authenticate against npm. See 93 – Library Registry.

    +

    Type C — Docker deployment (service-docker.yaml)

    For a service that ships a container image — a long-running API/worker, e.g. @@ -821,8 +838,8 @@ triggered on tag:

    package.json version; a service needs a root VERSION file. See 91 – Versioning & Changelog.
  • Do not rename the pipelines; tooling and runbooks key off - build-and-publish-pypi, build-and-publish-npm, and - build-and-deploy-service.
  • + build-and-publish-pypi, build-and-publish-npm, + build-and-deploy-service, and their backfill-*-from-tags companions.
    diff --git a/standards/lib/93_library_registry/index.html b/standards/lib/93_library_registry/index.html index 34351ea..bd5f8d6 100644 --- a/standards/lib/93_library_registry/index.html +++ b/standards/lib/93_library_registry/index.html @@ -626,6 +626,15 @@ + + +
  • + + + Publishing & registry auth + + +
  • @@ -821,6 +830,15 @@ matching library, its import name, its "use instead of" guidance, and its MCP endpoint (or, for the auth-server service, a spec pointer). It also serves the pinned auth-server OpenAPI contract at docs://spec. Query it before writing any infrastructure.

    +

    Publishing & registry auth

    +

    Python packages publish to the private index (pip.aetoskia.com, pypiserver) +and npm packages to the private registry (npm.aetoskia.com, Verdaccio). Both +authenticate against the same htpasswd file (/auth/htpasswd) used by the +Docker registry and the Traefik basic-auth middleware; registration is disabled, +so the CI credentials (PIP_USERNAME / PIP_PASSWORD, NPM_USERNAME / +NPM_PASSWORD) are one and the same account — there is no separate npm user. +Verdaccio requires bcrypt htpasswd entries; see +90 – Drone Pipelines for the CI wiring.

    Notes