diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 4e175cff1..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,334 +0,0 @@ -name: Release SDK - -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 - -jobs: - # SDK release is done from master branch. - confirm-public-repo-master-branch: - name: 'Confirm release is run from public/master branch' - uses: mParticle/mparticle-workflows/.github/workflows/sdk-release-repo-branch-check.yml@main - - build-bundle: - name: Build Distribution Bundle - runs-on: ubuntu-latest - needs: confirm-public-repo-master-branch - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - ref: development - - - name: NPM install - uses: actions/setup-node@v6 - with: - node-version: latest - - - name: Run NPM CI - run: npm ci - - - name: Lint with ESLint - run: npm run lint - - - name: Lint with Prettier - run: npm run prettier - - - 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() - with: - name: npm-logs - path: ~/.npm/_logs - - # Currently, we're only using Jest to test TypeScript modules - # and they do not require any built files - test-jest: - name: 'Test Jest' - runs-on: 'ubuntu-latest' - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: NPM install - uses: actions/setup-node@v6 - with: - node-version: latest - - - name: Run NPM CI - run: npm ci - - - name: Run Jest Tests - run: npm run test:jest - - - name: Archive npm failure logs - uses: actions/upload-artifact@v6 - if: failure() - with: - name: npm-logs - path: ~/.npm/_logs - - # Only Core test requires bundle, but we want to make sure - # that tests only run when the bundle is successfully built - test-core: - name: Core Tests - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-jest - - build-bundle - with: - test_command_label: Core SDK Tests - test_command: npm run test - build_command: npm run build:iife - branch_name: ${{ vars.GITHUB_SHA }} - - # Test Sub can be run independent of other tests - test-stub: - name: 'Test Stub' - runs-on: ubuntu-latest - needs: - - test-core - - test-jest - - build-bundle - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: NPM install - uses: actions/setup-node@v6 - with: - node-version: latest - - - name: Run NPM CI - run: npm ci - - - name: Install Firefox Latest - uses: browser-actions/setup-firefox@latest - - - name: Log Firefox Version - run: firefox --version - - - name: Run Stub Tests - run: npm run test:stub - - - name: Archive npm failure logs - uses: actions/upload-artifact@v6 - if: failure() - with: - name: npm-logs - path: ~/.npm/_logs - - # Integration Tests run the same suite of tests against various build systems - # to make sure our SDK will run in different environments - - test-integrations-require-js: - name: 'Integration Tests: Require JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: Require JS Test - test_command: npm run test:requirejs - branch_name: ${{ vars.GITHUB_SHA }} - - test-integrations-common-js-browserfy: - name: 'Integration Tests: Browserfy Common JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: Browserfy CJS Test - test_command: npm run test:integrations:cjs:browserfy - branch_name: ${{ vars.GITHUB_SHA }} - build_command: npm run build:npm && npm run build:test-bundle - - test-integrations-common-js-webpack: - name: 'Integration Tests: webpack Common JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: webpack CJS Test - test_command: npm run test:integrations:cjs:webpack - branch_name: ${{ vars.GITHUB_SHA }} - build_command: npm run build:npm && npm run build:test-bundle - - test-integrations-common-js-rollup: - name: 'Integration Tests: Rollup Common JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: Rollup CJS Test - test_command: npm run test:integrations:cjs:rollup - branch_name: ${{ vars.GITHUB_SHA }} - build_command: npm run build:npm && npm run build:test-bundle - - test-integrations-module-js-webpack: - name: 'Integration Tests: webpack Module JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: webpack Module Test - test_command: npm run test:integrations:module:webpack - branch_name: ${{ vars.GITHUB_SHA }} - build_command: npm run build:esm && npm run build:test-bundle - - test-integrations-module-js-rollup: - name: 'Integration Tests: Rollup Module JS' - uses: mParticle/mparticle-workflows/.github/workflows/web-run-test.yml@main - needs: - - test-core - - test-jest - - build-bundle - with: - test_command_label: Rollup Module Test - test_command: npm run test:integrations:module:rollup - branch_name: ${{ vars.GITHUB_SHA }} - build_command: npm run build:esm && npm run build:test-bundle - - create-release-branch: - name: Create release branch - runs-on: ubuntu-latest - needs: - - test-core - - test-stub - - 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-public-repo-master-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: - id-token: write - contents: read - - 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 public master branch - uses: actions/checkout@v6 - with: - fetch-depth: 0 - ref: master - - - 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 master branch - run: | - git pull origin release/${{ github.run_number }} - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: latest - registry-url: 'https://registry.npmjs.org' - - - name: Install dependencies - run: npm ci - - - name: Release --dry-run - if: ${{ github.event.inputs.dryRun == 'true'}} - run: | - npx semantic-release --dry-run - - # NPM Publish happens here via OIDC trusted publishing - - name: Release - if: ${{ github.event.inputs.dryRun == 'false'}} - run: | - npx semantic-release - - - name: Archive npm failure logs - uses: actions/upload-artifact@v6 - if: failure() - with: - name: npm-logs - path: ~/.npm/_logs - - - name: Push automated release commits to release branch - if: ${{ github.event.inputs.dryRun == 'false' }} - run: | - git push origin HEAD:release/${{ github.run_number }} - - sync-repository: - name: Sync repositories - needs: release - runs-on: ubuntu-latest - steps: - - name: Checkout master branch - uses: actions/checkout@v6 - with: - fetch-depth: 0 - repository: ${{ github.repository }} - token: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} - ref: master - - - name: Merge release branch into master branch - if: ${{ github.event.inputs.dryRun == 'false' }} - run: | - git pull origin release/${{ github.run_number }} - - - name: Push release commits to main, master and development branches - if: ${{ github.event.inputs.dryRun == 'false' }} - run: | - git push origin HEAD:development - git push origin HEAD:master - git push origin HEAD:main - - - name: Delete release branch - if: ${{ github.event.inputs.dryRun == 'false' }} - run: | - git push --delete origin release/${{ github.run_number }} diff --git a/.github/workflows/staging-step-3.yml b/.github/workflows/staging-step-3.yml index 0ed591439..14c3cb880 100644 --- a/.github/workflows/staging-step-3.yml +++ b/.github/workflows/staging-step-3.yml @@ -1,11 +1,11 @@ -name: "Staging Release - Step 3: Release to CDN and Synchronize Branches" +name: "Staging Release - Step 3: Release to CDN and Synchronize v2 Branches" on: workflow_dispatch: jobs: synchronize-branches: - name: Synchronize SDK to all branches + name: Synchronize SDK to v2 branches runs-on: ubuntu-latest env: GITHUB_TOKEN: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} @@ -27,14 +27,13 @@ jobs: run: | git push origin HEAD:development - # We will eventually replace master with main - - name: Push release commits to main and master + # As of 5/19/2026, master is v2. This is subject to change in the future, but we'll need to update mpServer if this changes. + - name: Push release commits to master run: | git push origin HEAD:master - git push origin HEAD:main - name: Push release commits to Release Order Branches run: | git push origin HEAD:release-order-a git push origin HEAD:release-order-b - git push origin HEAD:release-order-c \ No newline at end of file + git push origin HEAD:release-order-c