feat: add api release preparation scripts, github release creation scripts (#4704)

* feat: add more scripts for release creation

* Update scripts/extract-latest-release-notes.js

* fix: replace console.log() with console.warn(), ensure get-version.js is a version by checking against a regex

* chore: add comment to describe the regex
This commit is contained in:
Marc Pichler 2024-05-21 14:36:43 +02:00 committed by GitHub
parent d7fcc77d55
commit bac68fc7d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
62 changed files with 311 additions and 71 deletions

3
.gitignore vendored
View File

@ -91,3 +91,6 @@ package.json.lerna_backup
# non-aggregated benchmark results
.benchmark-results.txt
# release notes for release creation
.tmp/

View File

@ -97,13 +97,13 @@ All notable changes to this project will be documented in this file.
* export tracer options ([#154](https://www.github.com/open-telemetry/opentelemetry-js-api/issues/154)) ([b125324](https://www.github.com/open-telemetry/opentelemetry-js-api/commit/b125324438fb2f24eb80c7c6673afc8cfc99575e))
### [1.0.4](https://www.github.com/open-telemetry/opentelemetry-js-api/compare/v1.0.3...v1.0.4) (2021-12-18)
## [1.0.4](https://www.github.com/open-telemetry/opentelemetry-js-api/compare/v1.0.3...v1.0.4) (2021-12-18)
### Bug Fixes
* align globalThis fallbacks with otel-core ([#126](https://www.github.com/open-telemetry/opentelemetry-js-api/issues/126)) ([3507de7](https://www.github.com/open-telemetry/opentelemetry-js-api/commit/3507de7c3b95396696657c021953b0b24a63a029))
### [1.0.3](https://www.github.com/open-telemetry/opentelemetry-js-api/compare/v1.0.2...v1.0.3) (2021-08-30)
## [1.0.3](https://www.github.com/open-telemetry/opentelemetry-js-api/compare/v1.0.2...v1.0.3) (2021-08-30)
### Bug Fixes

View File

@ -7,7 +7,8 @@
"type": "module",
"scripts": {
"build": "tsc --build",
"start": "node --experimental-loader=@opentelemetry/instrumentation/hook.mjs ./build/index.js"
"start": "node --experimental-loader=@opentelemetry/instrumentation/hook.mjs ./build/index.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -8,7 +8,8 @@
"zipkin:server": "cross-env EXPORTER=zipkin node ./server.js",
"zipkin:client": "cross-env EXPORTER=zipkin node ./client.js",
"jaeger:server": "cross-env EXPORTER=jaeger node ./server.js",
"jaeger:client": "cross-env EXPORTER=jaeger node ./client.js"
"jaeger:client": "cross-env EXPORTER=jaeger node ./client.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -12,7 +12,8 @@
"jaeger:client": "cross-env EXPORTER=jaeger node ./client.js",
"docker:start": "cd ./docker && docker-compose down && docker-compose up",
"docker:startd": "cd ./docker && docker-compose down && docker-compose up -d",
"docker:stop": "cd ./docker && docker-compose down"
"docker:stop": "cd ./docker && docker-compose down",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -11,7 +11,8 @@
"start-prodnc": "webpack serve --progress --color --port 8090 --config webpack.prod.config.js --hot --host 0.0.0.0 --no-compress",
"docker:start": "cd ./docker && docker-compose down && docker-compose up",
"docker:startd": "cd ./docker && docker-compose down && docker-compose up -d",
"docker:stop": "cd ./docker && docker-compose down"
"docker:stop": "cd ./docker && docker-compose down",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -8,7 +8,8 @@
"zipkin:client": "cross-env EXPORTER=zipkin node ./client.js",
"zipkin:server": "cross-env EXPORTER=zipkin node ./server.js",
"jaeger:client": "cross-env EXPORTER=jaeger node ./client.js",
"jaeger:server": "cross-env EXPORTER=jaeger node ./server.js"
"jaeger:server": "cross-env EXPORTER=jaeger node ./server.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -9,7 +9,8 @@
"start:metrics": "node metrics.js",
"docker:start": "cd ./docker && docker-compose down && docker-compose up",
"docker:startd": "cd ./docker && docker-compose down && docker-compose up -d",
"docker:stop": "cd ./docker && docker-compose down"
"docker:stop": "cd ./docker && docker-compose down",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -6,7 +6,8 @@
"main": "index.js",
"scripts": {
"test:backcompat": "tsc --noEmit index.ts && tsc --noEmit --esModuleInterop index.ts",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"dependencies": {
"@opentelemetry/sdk-node": "0.51.1",

View File

@ -6,7 +6,8 @@
"main": "index.js",
"scripts": {
"test:backcompat": "tsc --noEmit index.ts && tsc --noEmit --esModuleInterop index.ts",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"dependencies": {
"@opentelemetry/sdk-node": "0.51.1",

View File

@ -3,7 +3,8 @@
"version": "0.51.1",
"private": true,
"scripts": {
"start": "ts-node index.ts"
"start": "ts-node index.ts",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"dependencies": {
"@opentelemetry/api": "^1.7.0",

View File

@ -6,7 +6,8 @@
"main": "index.js",
"scripts": {
"client": "node -r @opentelemetry/shim-opencensus/register ./client.js",
"server": "node -r @opentelemetry/shim-opencensus/register ./server.js"
"server": "node -r @opentelemetry/shim-opencensus/register ./server.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"repository": {
"type": "git",

View File

@ -5,7 +5,8 @@
"description": "Example of using @opentelemetry/sdk-metrics and @opentelemetry/exporter-prometheus",
"main": "index.js",
"scripts": {
"start": "node index.js"
"start": "node index.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"author": "OpenTelemetry Authors",
"license": "Apache-2.0",

View File

@ -27,7 +27,8 @@
"version": "node ../../../scripts/version-update.js",
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js"
"prewatch": "node ../../../scripts/version-update.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -27,7 +27,8 @@
"version": "node ../../../scripts/version-update.js",
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js"
"prewatch": "node ../../../scripts/version-update.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -44,7 +44,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -27,7 +27,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -29,7 +29,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -27,7 +27,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -22,7 +22,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -29,7 +29,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -20,7 +20,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -20,7 +20,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"fetch",

View File

@ -19,7 +19,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"protos:generate": "cd test/fixtures && buf generate"
"protos:generate": "cd test/fixtures && buf generate",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -20,7 +20,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -56,7 +56,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -17,7 +17,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -28,7 +28,8 @@
"version": "node ../../../scripts/version-update.js",
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile"
"prewatch": "npm run precompile",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -17,7 +17,8 @@
"version": "node ../../../scripts/version-update.js",
"watch": "tsc -w",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile"
"prewatch": "npm run precompile",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -28,7 +28,8 @@
"prewatch": "node ../../../scripts/version-update.js",
"watch": "npm run protos && tsc -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -15,7 +15,9 @@
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json",
"prepublishOnly": "npm run compile"
"prepublishOnly": "npm run compile",
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -43,7 +43,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../../scripts/version-update.js",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -22,7 +22,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../../scripts/peer-api-check.js"
"peer-api-check": "node ../../../scripts/peer-api-check.js",
"align-api-deps": "node ../../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -41,6 +41,7 @@
"comment_prepare_3": "echo sdk preparation scripts prepare all stable and experimental packages",
"prepare_release:sdk:patch": "npm run _check:no_changes && npm run _backup:package-json && npm run _lerna:remove_api && npm run _lerna:version_patch && npm run _restore:package-json && npm run _changelog:prepare_experimental && npm run _changelog:prepare_stable",
"prepare_release:sdk:minor": "npm run _check:no_changes && npm run _backup:package-json && npm run _lerna:remove_api && npm run _lerna:version_minor && npm run _restore:package-json && npm run _changelog:prepare_experimental && npm run _changelog:prepare_stable",
"prepare_release:all:minor": "npm run _check:no_changes && npm run _backup:package-json && npm run _lerna:remove_api && npm run _lerna:version_minor && cd api/ && npm version minor && cd .. && lerna run align-api-deps && npm run _restore:package-json && npm run _changelog:prepare_all",
"release:publish": "lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access",
"comment_internal": "echo scripts below this line are for internal use",
"_check:no_changes": "if [ ! -z \"$(git status -uall --porcelain)\" ]; then echo Please ensure all changes are committed; exit 1; fi",
@ -51,7 +52,13 @@
"_lerna:version_patch": "npx lerna version patch --exact --no-git-tag-version --no-push --yes",
"_lerna:version_minor": "npx lerna version minor --exact --no-git-tag-version --no-push --yes",
"_changelog:prepare_experimental": "node scripts/update-changelog.js ./experimental/CHANGELOG.md ./experimental/packages/",
"_changelog:prepare_stable": "node scripts/update-changelog.js ./CHANGELOG.md ./packages/"
"_changelog:prepare_stable": "node scripts/update-changelog.js ./CHANGELOG.md ./packages/",
"_changelog:prepare_api": "node scripts/update-changelog.js ./api/CHANGELOG.md ./api/package.json",
"_changelog:prepare_all": "npm run _changelog:prepare_api && npm run _changelog:prepare_experimental && npm run _changelog:prepare_stable",
"_github:draft_release:all": "npm run _github:draft_release:api && _github:draft_release:experimental && _github:draft_release:stable",
"_github:draft_release:api": "node scripts/extract-latest-release-notes.js ./api/CHANGELOG.md && VERSION=$(node scripts/get-version.js ./api/package.json | grep -oP '^\\d+\\.\\d+\\.\\d+$') && gh release create --draft --notes-file ./.tmp/release-notes.md --target main --title api/v$VERSION api/v$VERSION",
"_github:draft_release:experimental": "node scripts/extract-latest-release-notes.js ./experimental/CHANGELOG.md && VERSION=$(node scripts/get-version.js ./experimental/packages/ | grep -oP '^\\d+\\.\\d+\\.\\d+$') && gh release create --draft --notes-file ./.tmp/release-notes.md --target main --title experimental/v$VERSION experimental/v$VERSION",
"_github:draft_release:stable": "node scripts/extract-latest-release-notes.js ./CHANGELOG.md && VERSION=$(node scripts/get-version.js ./packages/ | grep -oP '^\\d+\\.\\d+\\.\\d+$') && gh release create --draft --notes-file ./.tmp/release-notes.md --target main --title v$VERSION v$VERSION"
},
"repository": "open-telemetry/opentelemetry-js",
"keywords": [

View File

@ -17,7 +17,8 @@
"version": "node ../../scripts/version-update.js",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -20,7 +20,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -17,7 +17,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -30,7 +30,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -28,7 +28,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -19,7 +19,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -22,7 +22,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -33,7 +33,8 @@
"version": "node ../../scripts/version-update.js",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -32,7 +32,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"watch": "tsc --build --watch",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -22,7 +22,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -18,7 +18,8 @@
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js",
"size-check": "npm run compile && ts-mocha -p tsconfig.json 'test/**/*.test.ts'"
"size-check": "npm run compile && ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -17,7 +17,8 @@
"version": "node ../../scripts/version-update.js",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -23,7 +23,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -22,7 +22,8 @@
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "node ../../scripts/version-update.js",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",

View File

@ -32,7 +32,8 @@
"clean": "tsc --build --clean",
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
"prewatch": "npm run precompile",
"peer-api-check": "node ../../scripts/peer-api-check.js"
"peer-api-check": "node ../../scripts/peer-api-check.js",
"align-api-deps": "node ../../scripts/align-api-deps.js"
},
"Add these to scripts": {
"compile": "tsc --build",

70
scripts/align-api-deps.js Normal file
View File

@ -0,0 +1,70 @@
/**
* This extracts the current version from <repository-root>/api/package.json and aligns the
* dependencies in `./package.json` with that new version. For instance:
* - `"@opentelemetry/api": ">1.0.0 <1.9.0"` when the local `@opentelemetry/api` is at `1.9.0` will become `"@opentelemetry/api": ">1.0.0 <1.10.0"`
* - `"@opentelemetry/api": "^1.1.0"` will be left as-is when the local `@opentelemetry/api` is at `1.9.0` as it's already included in the range
* - `"@opentelemetry/api": "1.8.0" when the local `@opentelemetry/api` is at `1.9.0` will become `"@opentelemetry/api": "1.9.0"`
*
* Usage (from package directory):
* - node <repo-root>/scripts/align-api-deps.js
*/
const fs = require('fs');
const semver = require('semver');
const path = require('path');
const apiVersion = require(path.resolve(__dirname, '../api/package.json')).version;
const nextMinorApiVersion = semver.parse(apiVersion).inc('minor');
function alignIfExact(value) {
const exactVersionRegex = /^\d+\.\d+\.\d+$/;
const result = value.match(exactVersionRegex);
if(result == null){
return value;
}
// use current exact API version
return apiVersion;
}
function alignIfRange(value){
const limitingVersionRegex = /<(\d+\.\d+\.\d+)$/;
const result = value.match(limitingVersionRegex);
if(result == null){
console.debug(`${value} is not a range, nothing to do`);
return value;
}
return value.replace(limitingVersionRegex, `<${nextMinorApiVersion}`);
}
function alignDeps(dependencies) {
for (const key in dependencies) {
if(key !== '@opentelemetry/api'){
continue;
}
if (dependencies.hasOwnProperty(key)) {
const value = dependencies[key];
dependencies[key] = alignIfRange(alignIfExact(value));
}
}
return dependencies;
}
function alignApiDeps(packageJsonPath){
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
const categoriesToUpdate = ['peerDependencies', 'devDependencies', 'dependencies'];
for(const category of categoriesToUpdate){
if(packageJson[category] == null){
console.debug(`${category} in ${packageJsonPath} was null or undefined, nothing to do.`);
continue;
}
alignDeps(packageJson[category]);
}
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, undefined, 2) + '\n', {encoding: 'utf-8'});
}
alignApiDeps(path.join(process.cwd(), './package.json'));

View File

@ -0,0 +1,23 @@
/**
* This extracts the latest (non-"Unreleased") notes from a CHANGELOG.md and saves them to `./.tmp/release-notes.md`
*
* Usage (from project root):
* - node scripts/extract-latest-release-notes.js [PATH TO CHANGELOG]
* Examples:
* - node scripts/extract-latest-release-notes.js ./packages/CHANGELOG.md
* - node scripts/extract-latest-release-notes.js ./experimental/CHANGELOG.md
*/
const fs = require('fs');
const changelog = fs.readFileSync(process.argv[2]).toString();
// Matches everything from the first entry at h2 ('##') followed by a space and a non-prerelease semver version
// until the next entry at h2.
const firstReleaseNoteEntryExp = /^## \d+\.\d+\.\d\n.*?(?=^## )/ms;
fs.mkdirSync('./.tmp/', {
recursive: true
});
const notesFile = './.tmp/release-notes.md'
fs.writeFileSync(notesFile, changelog.match(firstReleaseNoteEntryExp)[0]);

55
scripts/get-version.js Normal file
View File

@ -0,0 +1,55 @@
/**
* This extracts the first version of a non-private package in a directory if the provided path is a directory
* OR the version inside the `package.json` the provided path is a file.
*
* Usage (from project root):
* - node scripts/get-version.js [PATH TO DIRECTORY | PATH TO FILE]
* Examples:
* - node scripts/get-version.js ./experimental/packages/
* - node scripts/get-version.js ./api/package.json
*/
const fs = require('fs');
const path = require('path');
function extractVersionFromPackageJson(packageJsonPath){
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
if(packageJson.private === true || packageJson.private === 'true'){
console.warn('Skipping version from private package at', packageJsonPath);
return undefined;
}
if(packageJson.version == null){
console.warn('Version in', packageJsonPath, 'was null or undefined, skipping');
return undefined;
}
return packageJson.version;
}
function findFirstPackageVersion(basePath){
const packageDirs = fs.readdirSync(basePath);
for(const packageDir of packageDirs){
const packageJsonPath = path.join(basePath, packageDir, 'package.json');
try {
const version = extractVersionFromPackageJson(packageJsonPath)
if(version != null){
return version;
}
} catch (err) {
console.warn('Could not get package JSON', packageJsonPath, err);
}
}
throw new Error('Unable to extract version from packages in ' + basePath);
}
function determineVersion(path){
if(fs.lstatSync(path).isDirectory()) {
return findFirstPackageVersion(path);
}
return extractVersionFromPackageJson(path);
}
console.log(determineVersion(process.argv[2]));

View File

@ -34,7 +34,17 @@ function checkPackage(package) {
const peerVersion = pjson.peerDependencies && pjson.peerDependencies[package];
const devVersion = pjson.devDependencies && pjson.devDependencies[package];
if(devVersion) {
if(devVersion.match(/^((>=\d+\.\d+\.\d+ <\d+\.\d+\.\d+)|(\^?\d+\.\d+\.\d+))$/) == null) {
throw new Error(`Package ${pjson.name} does not match required pattern '>=A.B.C <X.Y.Z', '^A.B.C' or 'A.B.C`);
}
}
if (peerVersion) {
if(peerVersion.match(/^((>=\d+\.\d+\.\d+ <\d+\.\d+\.\d+)|(\^\d+\.\d+\.\d+))$/) == null) {
throw new Error(`Package ${pjson.name} does not match required pattern '>=A.B.C <X.Y.Z' or '^A.B.C'`);
}
if (!semver.subset(devVersion, peerVersion)) {
throw new Error(
`Package ${pjson.name} depends on peer API version ${peerVersion} but version ${devVersion} in development`

View File

@ -1,11 +1,11 @@
/**
* This script updates changelogs after lerna has updated versions in the respective areas (packages/*, experimental/packages/*)
* This script updates changelogs after lerna has updated versions in the respective areas (packages/*, experimental/packages/*, api/)
* - removes all empty subsections (bugs, enhancements, etc.) in the changelog.
* - replaces the "Unreleased"-header with the version from the first non-private package in the directory (versions are expected to be uniform across a changelog)
* - adds a new "Unreleased"-header with empty subsections at the top
*
* Usage (from project root):
* - node scripts/update-changelog.js [PATH TO CHANGELOG] [DIRECTORY CONTAINING ASSOCIATED PACKAGES]
* - node scripts/update-changelog.js [PATH TO CHANGELOG] [DIRECTORY CONTAINING ASSOCIATED PACKAGES | PATH TO package.json]
* Examples:
* - node scripts/update-changelog.js ./CHANGELOG.md ./packages
* - node scripts/update-changelog.js ./experimental/CHANGELOG.md ./experimental/packages
@ -28,23 +28,31 @@ const EMPTY_UNRELEASED_SECTION = `## Unreleased
`
function extractVersionFromPackageJson(packageJsonPath){
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
if(packageJson.private === true || packageJson.private === 'true'){
console.log('Skipping version from private package at', packageJsonPath);
return undefined;
}
if(packageJson.version == null){
console.log('Version in', packageJsonPath, 'was null or undefined, skipping');
return undefined;
}
return packageJson.version;
}
function findFirstPackageVersion(basePath){
const packageDirs = fs.readdirSync(basePath);
for(const packageDir of packageDirs){
const packageJsonPath = path.join(basePath, packageDir, 'package.json');
try {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
if(packageJson.private === true || packageJson.private === 'true'){
console.log('Skipping version from private package at', packageJsonPath);
continue;
const version = extractVersionFromPackageJson(packageJsonPath)
if(version != null){
return version;
}
if(packageJson.version != null){
return packageJson.version;
}
console.log('Version in', packageJsonPath, 'was null or undefined, skipping');
} catch (err) {
console.log('Could not get package JSON', packageJsonPath, err);
}
@ -52,9 +60,18 @@ function findFirstPackageVersion(basePath){
throw new Error('Unable to extract version from packages in ' + basePath);
}
function determineVersion(path){
if(fs.lstatSync(process.argv[3]).isDirectory()) {
return findFirstPackageVersion(path);
}
return extractVersionFromPackageJson(path);
}
// no special handling for bad args as this is only intended for use via predefined npm scripts.
const changelogPath = path.resolve(process.argv[2]);
const version = findFirstPackageVersion(path.resolve(process.argv[3]));
const version = determineVersion(path.resolve(process.argv[3]));
const changelog = fs.readFileSync(changelogPath, 'utf8').toString()
// replace all empty sections

View File

@ -12,7 +12,8 @@
"local:bs:xhr": "node scripts/local.runner.js --test ./tests/xhr/xhr.js --parallel --env browserstack.local_chrome,browserstack.local_firefox,browserstack.local_ie,browserstack.local_safari",
"local:fetch": "nightwatch ./tests/fetch/fetch.js --env selenium.chrome",
"local:xhr": "nightwatch ./tests/xhr/xhr.js --env selenium.chrome",
"server": "webpack serve --progress --port 8090 --config webpack.dev.js --hot --host 0.0.0.0"
"server": "webpack serve --progress --port 8090 --config webpack.dev.js --hot --host 0.0.0.0",
"align-api-deps": "node ../scripts/align-api-deps.js"
},
"keywords": [
"opentelemetry",