feat(#1): split publish into release and dev channels

- publish-release (main): publishes package.json version as-is with
  'latest' dist-tag, skips if version already published
- publish-dev (develop): publishes {version}-dev.{timestamp} with
  'dev' dist-tag, every push gets a unique prerelease version

Install channels:
  npm install @mosaicstack/telemetry-client        # latest stable
  npm install @mosaicstack/telemetry-client@dev     # latest dev build

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-14 22:57:21 -06:00
parent ea00334ded
commit 3b5c47af84

View File

@@ -57,7 +57,7 @@ steps:
- security-audit
- test
publish:
publish-release:
image: *node_image
environment:
GITEA_TOKEN:
@@ -68,8 +68,8 @@ steps:
echo "//git.mosaicstack.dev/api/packages/mosaic/npm/:_authToken=$$GITEA_TOKEN" > .npmrc
echo "@mosaicstack:registry=https://git.mosaicstack.dev/api/packages/mosaic/npm/" >> .npmrc
- |
CURRENT=$(node -p "require('./package.json').version")
PUBLISHED=$(npm view @mosaicstack/telemetry-client version 2>/dev/null || echo "0.0.0")
CURRENT=$$(node -p "require('./package.json').version")
PUBLISHED=$$(npm view @mosaicstack/telemetry-client version 2>/dev/null || echo "0.0.0")
if [ "$$CURRENT" = "$$PUBLISHED" ]; then
echo "Version $$CURRENT already published, skipping"
exit 0
@@ -77,11 +77,35 @@ steps:
echo "Publishing $$CURRENT (was $$PUBLISHED)"
npm publish --access public
when:
- branch: [main, develop]
- branch: main
event: [push, manual, tag]
depends_on:
- build
publish-dev:
image: *node_image
environment:
GITEA_TOKEN:
from_secret: gitea_token
CI_COMMIT_SHA: ${CI_COMMIT_SHA}
commands:
- npm run build
- |
echo "//git.mosaicstack.dev/api/packages/mosaic/npm/:_authToken=$$GITEA_TOKEN" > .npmrc
echo "@mosaicstack:registry=https://git.mosaicstack.dev/api/packages/mosaic/npm/" >> .npmrc
- |
BASE=$$(node -p "require('./package.json').version")
TIMESTAMP=$$(date -u +%Y%m%d%H%M%S)
DEV_VERSION="$${BASE}-dev.$${TIMESTAMP}"
echo "Publishing dev version $$DEV_VERSION"
node -e "const p=require('./package.json'); p.version='$$DEV_VERSION'; require('fs').writeFileSync('package.json', JSON.stringify(p, null, 2)+'\n')"
npm publish --access public --tag dev
when:
- branch: develop
event: [push, manual]
depends_on:
- build
link-package:
image: alpine:3
environment:
@@ -115,4 +139,5 @@ steps:
- branch: [main, develop]
event: [push, manual, tag]
depends_on:
- publish
- publish-release
- publish-dev