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:
@@ -57,7 +57,7 @@ steps:
|
|||||||
- security-audit
|
- security-audit
|
||||||
- test
|
- test
|
||||||
|
|
||||||
publish:
|
publish-release:
|
||||||
image: *node_image
|
image: *node_image
|
||||||
environment:
|
environment:
|
||||||
GITEA_TOKEN:
|
GITEA_TOKEN:
|
||||||
@@ -68,8 +68,8 @@ steps:
|
|||||||
echo "//git.mosaicstack.dev/api/packages/mosaic/npm/:_authToken=$$GITEA_TOKEN" > .npmrc
|
echo "//git.mosaicstack.dev/api/packages/mosaic/npm/:_authToken=$$GITEA_TOKEN" > .npmrc
|
||||||
echo "@mosaicstack:registry=https://git.mosaicstack.dev/api/packages/mosaic/npm/" >> .npmrc
|
echo "@mosaicstack:registry=https://git.mosaicstack.dev/api/packages/mosaic/npm/" >> .npmrc
|
||||||
- |
|
- |
|
||||||
CURRENT=$(node -p "require('./package.json').version")
|
CURRENT=$$(node -p "require('./package.json').version")
|
||||||
PUBLISHED=$(npm view @mosaicstack/telemetry-client version 2>/dev/null || echo "0.0.0")
|
PUBLISHED=$$(npm view @mosaicstack/telemetry-client version 2>/dev/null || echo "0.0.0")
|
||||||
if [ "$$CURRENT" = "$$PUBLISHED" ]; then
|
if [ "$$CURRENT" = "$$PUBLISHED" ]; then
|
||||||
echo "Version $$CURRENT already published, skipping"
|
echo "Version $$CURRENT already published, skipping"
|
||||||
exit 0
|
exit 0
|
||||||
@@ -77,11 +77,35 @@ steps:
|
|||||||
echo "Publishing $$CURRENT (was $$PUBLISHED)"
|
echo "Publishing $$CURRENT (was $$PUBLISHED)"
|
||||||
npm publish --access public
|
npm publish --access public
|
||||||
when:
|
when:
|
||||||
- branch: [main, develop]
|
- branch: main
|
||||||
event: [push, manual, tag]
|
event: [push, manual, tag]
|
||||||
depends_on:
|
depends_on:
|
||||||
- build
|
- 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:
|
link-package:
|
||||||
image: alpine:3
|
image: alpine:3
|
||||||
environment:
|
environment:
|
||||||
@@ -115,4 +139,5 @@ steps:
|
|||||||
- branch: [main, develop]
|
- branch: [main, develop]
|
||||||
event: [push, manual, tag]
|
event: [push, manual, tag]
|
||||||
depends_on:
|
depends_on:
|
||||||
- publish
|
- publish-release
|
||||||
|
- publish-dev
|
||||||
|
|||||||
Reference in New Issue
Block a user