diff --git a/.gitignore b/.gitignore index 3300167aa..ab3b42eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ npm-debug.log .idea/ sandbox/ v8.log +junit.xml +jintegration.xml \ No newline at end of file diff --git a/.releaserc.js b/.releaserc.js new file mode 100644 index 000000000..78f78349d --- /dev/null +++ b/.releaserc.js @@ -0,0 +1,18 @@ +const UPSTREAM_VERSION = '5.0.1'; + +module.exports = { + repositoryUrl: 'https://github.com/auth0/oauth2orize-mfa.git', + tagFormat: `${UPSTREAM_VERSION}-auth0-\${version}`, + branches: ['master'], + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/release-notes-generator', + '@semantic-release/npm', + [ + '@semantic-release/exec', + { + prepareCmd: `npm version --no-git-tag-version ${UPSTREAM_VERSION}-auth0-\${nextRelease.version}`, + }, + ], + ], +}; \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..4db51460d --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +SHELL := /bin/bash +.SHELLFLAGS = -ec +.ONESHELL: + +install: + npm i + +install-dev: + npm i + +test: + npx vows --xunit > junit.xml + +lint: + echo "No lint command defined." + +integration: + echo '' > jintegration.xml + +.PHONY: test install install-dev lint integration \ No newline at end of file diff --git a/README.md b/README.md index dd93f9c6e..94c21e382 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ ![protobuf.js - Protocol Buffers for JavaScript. Finally.](https://raw.github.com/dcodeIO/protobuf.js/master/protobuf.png) ===================================== + +## Versioning + +This fork is published to Artifactory using the hybrid format: `5.0.1-auth0-{internal-version}` (e.g., `5.0.1-auth0-1.0.0`). + +--- + **Protocol Buffers** are a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more, originally designed at Google ([see](https://developers.google.com/protocol-buffers/docs/overview)). diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 000000000..31f980eaf --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,77 @@ +# Releasing + +This package uses [semantic-release](https://github.com/semantic-release/semantic-release) to automate versioning and publishing to JFrog Artifactory via the **Auth0 Library Pipeline (LP)**. + +## Versioning Scheme + +Versions follow the hybrid format: `5.0.1-auth0-` (e.g., `5.0.1-auth0-1.0.0`). + +- `5.0.1` is the upstream Mozilla version this fork is based on. +- The `-auth0-` suffix tracks internal changes using semantic versioning. + +## How Releases Work + +Releases are triggered by conventional commit messages on the `master` branch: + +| Commit prefix | Version bump | +|---|---| +| `fix:` | Patch (e.g., 1.0.0 -> 1.0.1) | +| `feat:` | Minor (e.g., 1.0.0 -> 1.1.0) | +| `BREAKING CHANGE:` in body | Major (e.g., 1.0.0 -> 2.0.0) | + +## CI Pipeline: Library Pipeline (LP) + +Publishing is handled by the standardized [Library Pipeline](https://oktainc.atlassian.net/wiki/spaces/L0CTRL/pages/710574528) maintained by the Platform Build Services (PBS) team. + +### How it works + +1. Jenkins detects pushes to `master` via the multibranch pipeline job. +2. LP runs `pipeline-cli stage publish-library`, which invokes `npx semantic-release`. +3. Artifactory credentials are injected automatically by Jenkins (via the `artifactory` credential). +4. The package is published to Artifactory's npm repository. + +### Configuration files + +| File | Purpose | +|---|---| +| `project.yaml` | LP metadata: language, node version, team channel | +| `Makefile` | Build targets: `install`, `test`, `lint`, `integration` | +| `opslevel.yml` | Tags repo with `cic.ci.pipeline: lp` | +| `.releaserc.js` | Semantic-release config (tag format, plugins) | + +### Setting up the Jenkins job + +Per [LP documentation](https://oktainc.atlassian.net/wiki/spaces/L0CTRL/pages/710574528#Setting-up-a-new-project), open an ESD ticket for the Platform Build Services team to create the Jenkins multibranch pipeline job: + +- Portal: https://auth0team.atlassian.net/servicedesk/customer/portal/34/group/189/create/432 +- Request: "Create Jenkins LP job for `atko-cic/node-client-sessions`" + +### Reference repos using LP + +- [`atko-cic/limitd-redis`](https://github.com/atko-cic/limitd-redis) — `@a0/limitd-redis` +- [`atko-cic/token-replay-lib`](https://github.com/atko-cic/token-replay-lib) — `@a0/token-replay-lib` +- [`atko-cic/dadjokes-library`](https://github.com/atko-cic/dadjokes-library) + +## Running Locally (Dry Run) + +```bash +export GITHUB_TOKEN="$(ocm auth github --scope atko-cic --type access-token)" +export NPM_TOKEN="$(ocm auth artifactory)" + +npx semantic-release --dry-run +``` + +## Verifying a Release + +```bash +# Check the tag was created +git ls-remote --tags origin | grep auth0 + +# Check the artifact in Artifactory +curl -s -H "Authorization: Bearer $(ocm auth artifactory)" \ + "https://a0us.jfrog.io/a0us/api/npm/npm-forks-local/client-sessions" | jq '.versions | keys' +``` + +## Current Status + +The git tag `5.0.1-auth0-1.0.0` has been created on `master`. Once the Jenkins LP job is provisioned (via ESD ticket), it will publish the artifact automatically. \ No newline at end of file diff --git a/opslevel.yml b/opslevel.yml new file mode 100644 index 000000000..86671c94b --- /dev/null +++ b/opslevel.yml @@ -0,0 +1,9 @@ +--- +version: 1 +repository: + owner: iam_mfa + tier: + tags: + tags: + - key: cic.ci.pipeline + value: lp \ No newline at end of file diff --git a/package.json b/package.json index 0a56954f5..705ba6c85 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,12 @@ }, "repository": { "type": "git", - "url": "https://github.com/dcodeIO/protobuf.js.git" + "url": "https://github.com/auth0/protobuf.js.git" }, "bugs": { - "url": "https://github.com/dcodeIO/protobuf.js/issues" + "url": "https://github.com/auth0/protobuf.js/issues" }, - "homepage": "https://github.com/dcodeIO/protobuf.js", + "homepage": "https://github.com/auth0/protobuf.js", "keywords": [ "net", "buffer", @@ -34,11 +34,16 @@ "yargs": "^3.10.0" }, "devDependencies": { - "testjs": "~1 >=1.0.4", + "@semantic-release/commit-analyzer": "^13.0.1", + "@semantic-release/exec": "^7.1.0", + "@semantic-release/npm": "^13.1.5", + "@semantic-release/release-notes-generator": "^14.0.3", + "closurecompiler": "~1", "fixture-stdout": "^0.2.1", + "jsdoc": "~3.3.0-alpha10", "metascript": ">=0.18 <1", - "closurecompiler": "~1", - "jsdoc": "~3.3.0-alpha10" + "semantic-release": "^25.0.3", + "testjs": "~1 >=1.0.4" }, "license": "Apache-2.0", "engines": { diff --git a/project.yaml b/project.yaml new file mode 100644 index 000000000..ff779fecd --- /dev/null +++ b/project.yaml @@ -0,0 +1,12 @@ +name: protobufjs +description: Protocol Buffers for JavaScript. +team_channel: "#authn-b2c-mfa-release-notifs" +type: library + +build: + notification_channel: "#authn-b2c-mfa-release-notifs" + language: + node: + version: v22 + ignore_scripts: true + unsafe_eval: false \ No newline at end of file