release: публикация npm через NODE_AUTH_TOKEN, без OIDC/provenance
CI / Lint (pull_request) Successful in 9m49s
CI / Typecheck (pull_request) Successful in 9m24s
CI / Unit tests (pull_request) Successful in 9m36s
CI / Integration tests (pull_request) Successful in 9m48s
CI / Build (pull_request) Successful in 9m26s

lerna publish падал в Gitea Actions:
  EUSAGE Provenance generation in GitHub Actions requires "write" access
  to the "id-token" permission
Permission в workflow выставлен, но Gitea Actions не выдаёт OIDC id-token
(это GitHub-специфичный механизм) — поэтому ни provenance, ни trusted
publishing работать не будут. Переключаемся на классический auth:
NODE_AUTH_TOKEN=NPM_TOKEN (actions/setup-node прописал .npmrc с шаблоном
${NODE_AUTH_TOKEN}). Снят NPM_CONFIG_PROVENANCE и id-token: write.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
coopops
2026-05-28 05:55:17 +00:00
parent 677dc35bde
commit c5dc3ca799
+9 -9
View File
@@ -10,12 +10,13 @@ name: Release
# Если версия не менялась — workflow no-op (без ошибки).
#
# Требуемые secrets в настройках репозитория:
# NPM_TOKEN — npm access token с правами publish на @coopenomics/*
# (Gitea Actions не выдаёт OIDC id-token, поэтому npm
# trusted publishing/provenance здесь недоступны —
# используем классический auth через NODE_AUTH_TOKEN)
# DOCKERHUB_USERNAME — Docker Hub логин с доступом к организации dicoop
# DOCKERHUB_TOKEN — PAT с правами Read,Write из hub.docker.com/settings/security
# GITHUB_TOKEN — выдаётся автоматически GitHub Actions
#
# npm publish работает через trusted publishing (OIDC) — токен не нужен:
# настроен на стороне npm для @coopenomics/parser2 под этот workflow.
on:
push:
@@ -27,7 +28,6 @@ concurrency:
permissions:
contents: write # tag + GitHub Release
id-token: write # npm trusted publishing (OIDC) + sigstore provenance
jobs:
release:
@@ -71,15 +71,15 @@ jobs:
pnpm --filter @coopenomics/coopos-ship-reader build
pnpm --filter @coopenomics/parser2 build
# npm trusted publishing: OIDC через id-token: write, без NPM_TOKEN.
# Настроено на стороне npm: @coopenomics/parser2/access → Trusted Publisher
# → GitHub Actions (repo=coopenomics/parser2, workflow=release.yml).
# Provenance=true — sigstore подпишет каждый publish.
# Auth через NODE_AUTH_TOKEN: actions/setup-node по registry-url прописал
# //registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN} в ~/.npmrc, npm/lerna
# читают токен из env. Provenance не включаем — требует OIDC id-token,
# которого Gitea Actions не выдаёт (Trusted Publisher тоже не сработает).
- name: Publish via Lerna (from-package)
if: steps.ver.outputs.released == 'true'
run: pnpm exec lerna publish from-package --yes --no-private
env:
NPM_CONFIG_PROVENANCE: true
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Tag release