Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ updates:
schedule:
interval: weekly
day: 'sunday'
target-branch: 'chore/dependabot'
target-branch: 'main'
labels: ['dependabot', 'dependencies']
open-pull-requests-limit: 10
commit-message:
Expand Down
38 changes: 19 additions & 19 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -263,20 +263,20 @@ jobs:
name: npm-logs
path: ~/.npm/_logs

build-master:
name: Get Bundle Size from Master
build-main:
name: Get Bundle Size from Main
runs-on: ubuntu-latest
needs: build-bundle

outputs:
bundledMaster: ${{ steps.set-bundled-master.outputs.bundledMaster }}
bundledMasterHuman: ${{ steps.set-bundled-master.outputs.bundledMasterHuman }}
bundledMain: ${{ steps.set-bundled-main.outputs.bundledMain }}
bundledMainHuman: ${{ steps.set-bundled-main.outputs.bundledMainHuman }}

steps:
- name: Checkout Master
- name: Checkout Main
uses: actions/checkout@v6
with:
ref: master
ref: main

- name: NPM install
uses: actions/setup-node@v6
Expand All @@ -288,16 +288,16 @@ jobs:

- name: Report Bundle Size
run: |
BUNDLED_MASTER=$(ls -l dist/mparticle.min.js.gz | awk '{print $5}')
echo "BUNDLED_MASTER=$BUNDLED_MASTER" >> $GITHUB_ENV
BUNDLED_MASTER_HUMAN=$(ls -lh dist/mparticle.min.js.gz | awk '{print $5}')
echo "BUNDLED_MASTER_HUMAN=$BUNDLED_MASTER_HUMAN" >> $GITHUB_ENV
BUNDLED_MAIN=$(ls -l dist/mparticle.min.js.gz | awk '{print $5}')
echo "BUNDLED_MAIN=$BUNDLED_MAIN" >> $GITHUB_ENV
BUNDLED_MAIN_HUMAN=$(ls -lh dist/mparticle.min.js.gz | awk '{print $5}')
echo "BUNDLED_MAIN_HUMAN=$BUNDLED_MAIN_HUMAN" >> $GITHUB_ENV

- name: Set Master Bundled Size
id: set-bundled-master
- name: Set Main Bundled Size
id: set-bundled-main
run: |
echo "::set-output name=bundledMaster::${{ env.BUNDLED_MASTER }}"
echo "::set-output name=bundledMasterHuman::${{ env.BUNDLED_MASTER_HUMAN }}"
echo "::set-output name=bundledMain::${{ env.BUNDLED_MAIN }}"
echo "::set-output name=bundledMainHuman::${{ env.BUNDLED_MAIN_HUMAN }}"

- name: Archive npm failure logs
uses: actions/upload-artifact@v6
Expand All @@ -310,26 +310,26 @@ jobs:
name: Calculate Bundled Diff
uses: ./.github/workflows/calculate-difference.yml
needs:
- build-master
- build-main
- build-local
with:
initial_bundle_size: ${{ needs.build-master.outputs.bundledMaster }}
initial_bundle_size: ${{ needs.build-main.outputs.bundledMain }}
updated_bundle_size: ${{ needs.build-local.outputs.bundledLocal }}

generate-report:
name: Generate Report
runs-on: ubuntu-latest
needs:
- build-master
- build-main
- build-local
- calculate-bundled
steps:
- name: Adding Markdown
run: |
echo '### Calculate Bundle Size Difference' >> $GITHUB_STEP_SUMMARY
echo "| | master | current | % changed |" >> $GITHUB_STEP_SUMMARY
echo "| | main | current | % changed |" >> $GITHUB_STEP_SUMMARY
echo "|--|--|--|--|" >> $GITHUB_STEP_SUMMARY
echo "| mparticle.min.js.gz | ${{ needs.build-master.outputs.bundledMasterHuman }} | ${{ needs.build-local.outputs.bundledLocalHuman }} | ${{ needs.calculate-bundled.outputs.diff_percent }} |" >> $GITHUB_STEP_SUMMARY
echo "| mparticle.min.js.gz | ${{ needs.build-main.outputs.bundledMainHuman }} | ${{ needs.build-local.outputs.bundledLocalHuman }} | ${{ needs.calculate-bundled.outputs.diff_percent }} |" >> $GITHUB_STEP_SUMMARY

automerge-dependabot:
name: 'Save PR Number for Dependabot Automerge'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,37 @@
name: 'Staging Release - Step 1: Prepare CDN Pre-Release, Publish NPM'
name: 'Release - Step 1: Staging'

on:
workflow_dispatch:
inputs:
dryRun:
description: 'Do a dry run to preview instead of a real release [true/false]'
required: true
type: boolean
default: true
push:
branches: [main]

# Prevent race between staging and release workflows
concurrency:
group: staging-pipeline
cancel-in-progress: false

jobs:
# SDK staging release must be done from the staging branch
confirm-staging-branch:
name: Confirm release is run on staging
# Guard: skip when release commits land on main (they contain [skip ci])
check-skip:
name: Check for skip ci
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Git checkout
uses: actions/checkout@v6

- name: Branch Check
run: |
BRANCHNAME=${GITHUB_REF##*/}
if [ $BRANCHNAME != "staging" ]; then
echo "You can only run a staging release from the staging branch, you are trying to run it from ${BRANCHNAME}"
exit 1
fi
- run: echo "Proceeding with staging pipeline"

build-bundle:
name: Build Distribution Bundle
runs-on: ubuntu-latest
needs: confirm-staging-branch
needs: check-skip
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: development
fetch-depth: 0

- name: NPM install
uses: actions/setup-node@v6
with:
node-version: 24.x
node-version: latest

- name: Run NPM CI
run: npm ci
Expand All @@ -53,9 +45,6 @@ jobs:
- name: Run Build IIFE
run: npm run build:iife

- name: Display Bundle Diff, but Fancy!
run: git diff --unified=3 dist/mparticle.js | npx diff-so-fancy

- name: Archive npm failure logs
uses: actions/upload-artifact@v6
if: failure()
Expand All @@ -68,9 +57,10 @@ jobs:
test-jest:
name: 'Test Jest'
runs-on: 'ubuntu-latest'
needs: check-skip
strategy:
matrix:
node-version: [16.x, 17.x, 18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x]
node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x]
steps:
- name: Checkout
uses: actions/checkout@v6
Expand Down Expand Up @@ -107,7 +97,7 @@ jobs:
build_command: npm run build:iife
branch_name: ${{ vars.GITHUB_SHA }}

# Test Sub can be run independent of other tests
# Test Stub can be run independent of other tests
test-stub:
name: 'Test Stub'
runs-on: ubuntu-latest
Expand All @@ -122,7 +112,7 @@ jobs:
- name: NPM install
uses: actions/setup-node@v6
with:
node-version: 24.x
node-version: latest

- name: Run NPM CI
run: npm ci
Expand Down Expand Up @@ -223,101 +213,48 @@ jobs:
branch_name: ${{ vars.GITHUB_SHA }}
build_command: npm run build:esm && npm run build:test-bundle

create-release-branch:
name: Create release branch
# After all tests pass, reset staging branch to main + built dist/
update-staging:
name: Update Staging Branch
runs-on: ubuntu-latest
needs:
- test-core
- test-stub
- test-integrations-require-js
- test-integrations-common-js-browserfy
- test-integrations-common-js-webpack
- test-integrations-common-js-rollup
- test-integrations-module-js-webpack
- test-integrations-module-js-rollup
- test-integrations-require-js
- confirm-staging-branch
steps:
- name: Checkout development branch
uses: actions/checkout@v6
with:
repository: mparticle/mparticle-web-sdk
ref: development

- name: Create and push release branch
run: |
git checkout -b release/${{ github.run_number }}
git push origin release/${{ github.run_number }}

release:
name: Perform Release
runs-on: ubuntu-latest
needs:
- create-release-branch

# OIDC permissions for npm trusted publishing
permissions:
contents: write
issues: write
pull-requests: write
id-token: write

env:
GITHUB_TOKEN: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }}
GIT_AUTHOR_NAME: mparticle-automation
GIT_AUTHOR_EMAIL: developers@mparticle.com
GIT_COMMITTER_NAME: mparticle-automation
GIT_COMMITTER_EMAIL: developers@mparticle.com

steps:
- name: Checkout staging branch
- name: Checkout main
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: staging

- name: Import GPG Key
uses: crazy-max/ghaction-import-gpg@e00cb83a68c1158b29afc5217dd0582cada6d172 #v4.4.0
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Merge release branch into staging branch
run: |
git pull origin release/${{ github.run_number }}
ref: main
token: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }}

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.x
registry-url: 'https://registry.npmjs.org'
node-version: latest

- name: Install dependencies
run: npm ci

- name: Verify npm version
run: npm --version

- name: Release --dry-run
if: ${{ github.event.inputs.dryRun == 'true'}}
run: |
npx semantic-release --branches staging --dry-run

# NPM Publish happens here
- name: Release
if: ${{ github.event.inputs.dryRun == 'false'}}
run: |
npx semantic-release --branches staging

- name: Archive npm failure logs
uses: actions/upload-artifact@v6
if: failure()
with:
name: npm-logs
path: ~/.npm/_logs
- name: Build distribution bundle
run: npm run build

- name: Push automated release commits to release branch
if: ${{ github.event.inputs.dryRun == 'false' }}
- name: Reset staging to main and add dist
run: |
git push origin HEAD:release/${{ github.run_number }}
git checkout -B staging
git add dist -f
git commit -m 'chore(build): Generate latest bundle [skip ci]'
git push origin staging --force
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
name: 'Staging Release - Step 2: Publish SDK Release to Release Order Branch'
name: 'Release - Step 2: Release Order'

# Run AFTER Step 1 (Staging) has updated the staging branch.
# Pushes the staging branch to a release-order branch for CDN deployment.
# Run Step 3 after this to generate release notes and publish to NPM.

on:
workflow_dispatch:
Expand Down Expand Up @@ -30,7 +34,7 @@ jobs:
ref: ${{ github.event.inputs.releaseOrderBranch }}

push-release-branch:
name: Release staging to ${{ github.event.inputs.releaseOrderBranch}}
name: Release staging to ${{ github.event.inputs.releaseOrderBranch }}
needs:
- verify-release-order-branch
runs-on: ubuntu-latest
Expand Down
Loading
Loading