ci: remove semantic-release and replace with explicit versioned workflow steps#1217
ci: remove semantic-release and replace with explicit versioned workflow steps#1217nickolas-dimitrakas wants to merge 35 commits intoworkstation/3.0-Releasefrom
Conversation
* feat: migrate amplitude * formatting * added job to build and run kit tests * align pull request workflow * slight pull request needs adjustments * add kits to release process * add homepage url * Revert "slight pull request needs adjustments" This reverts commit aaf8416. * reuse mockhttprequest from root * address @alexs-mparticle comments * add mparticle core dependency * only use root .gitignore * use root prettier * inherit from root eslintrc * cleanup kit directory readme * restore original readme * peerDependency already states mP Core * cleanup matrix * update to kit track package name * adjust semantic release to update kit versions in lock step * pass proper commit sha * unique artifact names and align jest matrix * add cleanup step for deleting release branch * publish kits upon success of core and fix issues in implementation * Configure dependabot for amplitude kit track * Update kits/README.md Co-authored-by: Robert Ing <rmi22186@gmail.com> * run format to fix ci * add canonical repo chart in readme * addressed @rmi22186 comments --------- Co-authored-by: Robert Ing <rmi22186@gmail.com>
* feat: migrate OneTrust kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to onetrust kit --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Intercom kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to intercom kit --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Optimizely kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to optimizely kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Criteo kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to criteo kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate SimpleReach kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to simplereach kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Dynamic Yield kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to dynamic-yield kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Google Tag Manager kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to google-tag-manager kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Rokt kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to rokt kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Heap kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to heap kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Inspectlet kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to inspectlet kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate KissMetrics kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to kissmetrics kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate DoubleClick kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to doubleclick kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Adwords kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to adwords kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Facebook kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to facebook kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Taplytics kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to taplytics kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Bing Ads kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to bingads kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Adobe Target kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to adobe-target kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Twitter kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to twitter kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate Device Match kit to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): apply prettier formatting to device-match kit * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-localytics-4 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-id5-1 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-leanplum-1 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-mixpanel-2 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-braze-3 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-braze-4 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate mparticle-javascript-integration-braze-5 to monorepo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: revert matrix.json to base branch (will re-add kit entry separately) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate adobe kit to monorepo Migrates mparticle-javascript-integration-adobe into the web SDK monorepo under kits/adobe/. The Adobe kit uses a repo-level build and test orchestration — the root rollup.config.js concatenates AdobeSDKs vendor files with each package's source before bundling, and tests run from the root using Jest with MODULE env vars. The full repo structure is preserved under kits/adobe/ to keep this working correctly. Structure: - kits/adobe/packages/AdobeClient (@mparticle/web-adobe-client-kit v2.1.3) - kits/adobe/packages/AdobeServer (@mparticle/web-adobe-server-kit v2.1.2) - kits/adobe/HeartbeatKit - kits/adobe/AdobeSDKs (VisitorAPI.js, AppMeasurement.js) - kits/adobe/test (Jest tests for client + server) - Updated package.json repository field to point to monorepo - Added kits/adobe to kits/matrix.json for CI coverage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): exclude adobe vendor files from prettier and kit tests from jest - Add kits/adobe/AdobeSDKs/ and babel.config.js to .prettierignore to exclude third-party vendor files from formatting checks - Add testPathIgnorePatterns to jest.config.js to prevent root jest runner from picking up kit test files (kits use karma, not jest) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): create dist directories before build in adobe kit Fresh git checkouts don't include empty dist/ directories (git doesn't track empty directories and .gitignore excludes dist/). Add mkdir -p to the build:client:* and build:server:* scripts so the build succeeds in a clean CI environment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): add missing suffix to adobe server kit test config Server kit registers with suffix 'Server' creating key 'Adobe-Server' in mParticle's forwarder constructors map. Without suffix: 'Server' in the test kitConfig, configureUIEnabledKit cannot match the constructor and initForwarder is never called, causing all integration tests to fail. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(jest): narrow testPathIgnorePatterns to kits/adobe only Previously excluded all kits/ which was overly broad. Only the Adobe kit uses Jest (with test.js / server.test.js filenames that match Jest's default testMatch). Other kits use Karma and name their files tests.js (plural), so they don't need an explicit exclusion. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(jest): remove redundant node_modules from testPathIgnorePatterns Jest ignores node_modules by default; the explicit entry was unnecessary. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(adobe): align prettier config with root, add eslintrc root flag - Remove kits/adobe/.prettierrc so Adobe inherits root prettier settings. Only difference was trailingComma: "none" vs root's "es5"; Adobe source files reformatted accordingly (trailing commas added, no logic changes). - Update .prettierignore: remove kits/adobe/babel.config.js (no longer needed once trailing comma conflict is resolved); keep AdobeSDKs/ vendor exclusion. - Add "root": true to kits/adobe/.eslintrc to prevent ESLint from walking up to root config when run from within the kit directory. Part of ongoing effort to consolidate all configs at the repo root. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: migrate google-analytics-4 kit to monorepo Migrates GA4Client and GA4Server packages from mparticle-javascript-integration-google-analytics-4 into the web SDK monorepo under kits/google-analytics-4/. - kits/google-analytics-4/ga4-client (@mparticle/web-google-analytics-4-client-kit v1.5.1) - kits/google-analytics-4/ga4-server (@mparticle/web-google-analytics-4-server-kit v1.0.3) - Updated package.json repository fields to point to monorepo - Added both kits to kits/matrix.json for CI coverage - Applied Prettier formatting to match monorepo code style conventions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): add missing karma devDependencies to ga4-server The test script calls karma but karma was missing from devDependencies. Add karma and browser launcher packages to match the ga4-client kit. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): regenerate ga4-server package-lock.json with karma deps Updating package-lock.json to include karma and browser launcher packages added in the previous commit. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): pin chai to v4 for karma-chai compatibility in ga4-server karma-chai@0.1.0 requires chai v4's browser bundle at chai/chai.js. chai v6 changed its file structure, breaking that path. Pinning chai to ^4.2.0 restores the expected bundle location. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ga4): restore correct kit structure and consolidate matrix entry The original mparticle-javascript-integration-google-analytics-4 repo used a packages/GA4Client + packages/GA4Server layout with a root package.json orchestrator. The migration commit incorrectly flattened this to ga4-client/ and ga4-server/ at the top level and omitted the root package.json. This commit: - Moves ga4-client/ → packages/GA4Client/ (git mv, history preserved) - Moves ga4-server/ → packages/GA4Server/ (git mv, history preserved) - Updates repository.directory in each sub-kit's package.json - Adds root package.json with build/test scripts that delegate to each sub-package via npm --prefix - Adds root package-lock.json (no root deps; required for npm ci) - Collapses the two matrix entries into a single "Google Analytics 4" entry pointing to kits/google-analytics-4 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ga4): add missing root config files omitted from migration Restores the root-level config files that existed in the original mparticle-integrations/mparticle-javascript-integration-google-analytics-4 repo but were not included in the monorepo migration: - .eslintrc — eslint + prettier config (root: true) - .gitignore — ignores node_modules - .prettierrc — singleQuote, trailingComma: es5, tabWidth: 4 - README.md — usage docs for both client and server kits Also updates package.json description to match the original. The .github/workflows/ are omitted as the monorepo has its own CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(matrix): update kit matrix with all migrated kits and braze-6 Merges workstation/3.0-Release and adds all 28 kits to matrix.json: - Braze 3/4/5 (merged), Braze 6 (open PR) - Adobe Target, Adwords, Amplitude 8, Bing Ads - Criteo, Device Match, DoubleClick, Dynamic Yield - Facebook, Google Tag Manager, Heap, ID5 1 - Inspectlet, Intercom, KissMetrics, Leanplum 1 - Localytics 4, Mixpanel 2, OneTrust, Optimizely - Rokt, SimpleReach, Taplytics, Twitter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: correct iife filename typo in KissMetrics rollup config Fixes output filename from KissMetricsForwarder.iffe.js to KissMetricsForwarder.iife.js. Made-with: Cursor * remove dist from root gitignore * Revert "remove dist from root gitignore" This reverts commit 2b12aca. * chore(matrix): remove braze-6 until PR #1194 merges --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…flow steps
The build-dist and kit-version-update responsibilities previously hidden
inside scripts/release.sh (called via semantic-release's prepareCmd hook)
are now two named, visible steps in the staging-step-1.yml release job:
1. 'Build distribution bundle' — npm run build + git add dist -f + commit
2. 'Update kit versions to X.Y.Z' — npm pkg set version for every kit in
kits/matrix.json + commit kits/**/package.json
Both steps run only on a real release (dryRun == 'false') and execute after
the existing dry-run step captures the next version, so the version is
available via steps.get-version.outputs.version.
release.config.js is updated in lockstep:
- prepareCmd removed from @semantic-release/exec (only publishCmd remains)
- kits/**/package.json removed from @semantic-release/git assets (those
package.jsons are now committed by the explicit workflow step before
semantic-release runs, so they are already clean when the git plugin
stages its assets)
The end-to-end ordering is unchanged: the two prep commits land on the
local staging branch before npx semantic-release runs; @semantic-release/git
pushes all local commits to staging; release-kits (which needs: release)
then checks out the updated staging branch and publishes each kit at the
correct version.
Refs #1210
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
| run: | | ||
| npm run build | ||
| git add dist -f | ||
| git commit -m 'chore(build): Generate latest bundle [skip ci]' |
There was a problem hiding this comment.
Build runs before version bump, embedding stale sdkVersion
High Severity
The npm run build step now runs before npx semantic-release, but the build reads version from package.json (via src/constants.ts line 1: import { version } from '../package.json') and embeds it as sdkVersion. Previously, release.sh ran inside semantic-release's prepareCmd, which executes after @semantic-release/npm bumps package.json. Now the build uses the old, pre-bump version, so every release ships dist files reporting the previous release's sdkVersion in all API requests (batch uploads, identity calls).
Additional Locations (1)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ned workflow steps Removes release.config.js entirely. All responsibilities previously owned by semantic-release are now explicit, named steps in both staging-step-1.yml and release.yml: - Version determination: a new bump_type input (major/minor/patch) on workflow_dispatch drives `npm version $bump_type --no-git-tag-version`, which bumps package.json and package-lock.json and surfaces the new version to all downstream steps via steps.get-version.outputs.version. - npm publish: explicit `npm publish` step (OIDC unchanged). - GitHub release: `gh release create` step with the same dist assets that @semantic-release/github was uploading. - Git commit + tag: explicit `git commit` and `git tag` steps; tag is pushed alongside the release branch in the final push step. The semantic-release-only job-level env block (GITHUB_TOKEN, GIT_AUTHOR_*, GIT_COMMITTER_*) is removed from both workflows; git identity is already set by the Import GPG Key step. release.yml permissions are updated from contents:read to contents:write to allow pushing the tag. Deferred: CHANGELOG.md auto-generation (was @semantic-release/changelog). Refs #1210 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The semantic-release removal applies only to the 3-step staging process (staging-step-1/2/3.yml). release.yml is a separate public/master workflow and is out of scope for this PR. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ment first Removes the temporary release/$RUN_NUM branch entirely. The previous pattern created the branch from development, merged it into staging inside the release job, then pushed release commits back to the temp branch and deleted it — a round-trip that also had a bug where release-kits would check out staging but staging never actually received the release commits (only the temp branch did). New approach: - sync-staging-with-development (new job): immediately after confirm-staging-branch, merges development into staging and pushes, so staging is current before any build or test runs - build-bundle now checks out staging (not development) since they are identical after the sync - release job: remove the "Merge release branch" step (staging is already synced); push directly to HEAD:staging + tag at the end - release-kits checks out staging and now correctly gets the bumped kit versions since the release job pushed to staging - create-release-branch and cleanup jobs removed entirely Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
7dd0ee7 to
033b086
Compare





Background
npx semantic-releasecall.scripts/release.shfrom theprepareCmdhook and exposed thedist/build and kit version-bump as named workflow steps.What Changed
release.config.js: deletedstaging-step-1.ymlandrelease.yml:bump_typeinput (patch/minor/major) toworkflow_dispatch— this is now how the release version is determinednpx semantic-release --dry-runwith a Calculate next version step that runsnpm version $bump_type --no-git-tag-versionand exposes the result to all downstream stepsnpx semantic-releasewith four explicit named steps:package.json+package-lock.jsongit tag vX.Y.Znpm publish(OIDC unchanged)gh release createwith the same dist assets as beforeGITHUB_TOKEN,GIT_AUTHOR_*,GIT_COMMITTER_*); git identity is set by the Import GPG Key steprelease.ymlpermissions updated fromcontents: readtocontents: write(required to push the tag)Checklist
Additional Notes
@semantic-release/changelog) is deferred — updates will be manual until a replacement script is introduced.steps.get-version.outputs.versionis preserved as the step ID and output name, so therelease-kitsjob instaging-step-1.ymlcontinues to work without changes.Reference Issue (For employees only. Ignore if you are an outside contributor)