@ekho/gitlab-mcp 1.1.0 → 1.1.1

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.
Files changed (2) hide show
  1. package/README.md +31 -15
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -329,32 +329,48 @@ GITLAB_TOKEN=glpat-... npm run test:smoke
329
329
 
330
330
  ## Releasing
331
331
 
332
- The repo ships with a `.gitlab-ci.yml` that runs typecheck/tests/build on every push and publishes to npm on `v*` tags.
332
+ The repo ships with a `.gitlab-ci.yml` that runs typecheck/tests/build on every push and publishes to npm on `v*.*.*` tags via **npm Trusted Publishers** (OIDC). No long-lived `NPM_TOKEN` is required — GitLab mints a short-lived OIDC token, npm CLI exchanges it for a publish token, and the package is signed with sigstore provenance.
333
333
 
334
- **One-time setup:**
335
- 1. Create an automation token at https://www.npmjs.com/settings/<user>/tokens (use "Automation" type so npm 2FA does not block CI).
336
- 2. In GitLab: Settings CI/CDVariables → Add variable
337
- - Key: `NPM_TOKEN`
338
- - Value: <the token>
339
- - Flags: **Masked** and **Protected**
340
- 3. Make sure the `v*` tag pattern is protected: Settings → Repository → Protected tags → Add `v*`.
334
+ **One-time setup on npmjs.com**
335
+
336
+ After the first manual publish (which creates the package), open https://www.npmjs.com/package/@ekho/gitlab-mcp/accessTrusted Publishers → Add trusted publisher → GitLab. Fill in:
337
+
338
+ | Field | Value |
339
+ |---|---|
340
+ | Namespace | `ekho_0` |
341
+ | Project name | `gitlab-mcp` |
342
+ | Top-level CI file path | `.gitlab-ci.yml` |
343
+ | Environment name | (blank) |
344
+ | Allowed actions | ✅ `npm publish` |
345
+
346
+ See https://docs.npmjs.com/trusted-publishers for the official guide.
347
+
348
+ **One-time setup on GitLab**
349
+
350
+ Protect the `v*` tag pattern so only maintainers can trigger publishes: Settings → Repository → Protected tags → add `v*`.
351
+
352
+ **Cutting a release**
341
353
 
342
- **Cutting a release:**
343
354
  ```bash
344
- # 1. Bump the version in package.json (manually or via npm version <patch|minor|major>)
345
- npm version minor # also creates the commit and the v<N> tag
355
+ npm version minor # 1.1.0 1.2.0; creates commit + tag
346
356
  git push --follow-tags
347
357
  ```
348
358
 
349
- The `publish_npm` job will fire on the tag pipeline. It verifies that the tag (`v1.2.0` → `1.2.0`) matches `package.json` before running `npm publish`.
359
+ The `publish_npm` job fires on the tag pipeline. It verifies that the tag (`v1.2.0` → `1.2.0`) matches `package.json`, builds, and runs `npm publish`. Provenance is attached automatically via the `SIGSTORE_ID_TOKEN`.
360
+
361
+ **Local publish (no CI, for the first release or recovery)**
350
362
 
351
- **Local publish (no CI):**
352
363
  ```bash
353
364
  npm login # interactive, browser-based
354
365
  npm pack --dry-run # preview tarball contents
355
- npm publish --access public # publishes the current version
366
+ npm publish # publishConfig.access is "public"
356
367
  ```
357
- `prepublishOnly` will clean, typecheck, test, and build first.
368
+ `prepublishOnly` runs clean typecheck test build first.
369
+
370
+ **Prerequisites for trusted publishing**
371
+
372
+ - Node ≥ 22.14.0 (the CI uses `node:22`)
373
+ - npm CLI ≥ 11.5.1 (the publish job runs `npm install -g npm@latest` before publishing)
358
374
 
359
375
  ## Architecture
360
376
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekho/gitlab-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Model Context Protocol server for GitLab — full coverage of REST + GraphQL APIs across collaboration, CI/CD, code, releases, access, security, integrations, content, analytics, and Duo AI.",
5
5
  "type": "module",
6
6
  "license": "MIT",