Skip to content

chore(release): merge release/3.84.0-SDK-3290 into main [SDK-3290] #2237

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 42 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
a473cea
chore(release): merge main into develop after release v3.83.0 [SDK-32…
saikumarrs Apr 28, 2025
452d7bd
chore(deps-dev): bump the npm-dev-deps group across 1 directory with …
dependabot[bot] Apr 29, 2025
350a730
chore(deps): bump the npm-prod-deps group across 1 directory with 6 u…
dependabot[bot] Apr 29, 2025
24c2ccb
chore(deps-dev): bump the npm-dev-deps group with 2 updates (#2198)
dependabot[bot] Apr 30, 2025
37e6417
chore(deps-dev): bump eslint-plugin-unicorn from 58.0.0 to 59.0.0 (#2…
dependabot[bot] Apr 30, 2025
375c302
chore(deps-dev): bump the npm-dev-deps group with 12 updates (#2208)
dependabot[bot] May 2, 2025
9065069
feat: onboarding userpilot integration (#2103)
ThabetIbrahim May 2, 2025
e0753db
chore(deps-dev): bump the npm-dev-deps group with 3 updates (#2211)
dependabot[bot] May 6, 2025
1a94b5d
chore: enable beta deployments (#2212)
saikumarrs May 7, 2025
1a4bf9d
feat: add new event mapping for tik tok (#2210)
maheshkutty May 7, 2025
81520d9
chore(deps): bump SonarSource/sonarqube-scan-action from 5.1.0 to 5.2…
dependabot[bot] May 7, 2025
a955ab9
chore(deps): bump @rollup/rollup-linux-x64-gnu from 4.40.1 to 4.40.2 …
dependabot[bot] May 7, 2025
a3a0b98
chore(deps-dev): bump @nx/eslint-plugin from 20.8.1 to 21.0.0 (#2217)
dependabot[bot] May 7, 2025
0119fe4
chore(deps-dev): bump @nx/workspace from 20.8.1 to 21.0.0 (#2216)
dependabot[bot] May 7, 2025
39db8ed
chore(deps-dev): bump the npm-dev-deps group across 1 directory with …
dependabot[bot] May 7, 2025
b79277c
chore(deps): bump slackapi/slack-github-action from 2.0.0 to 2.1.0 (#…
dependabot[bot] May 7, 2025
9406d8d
chore(deps): bump aws-actions/configure-aws-credentials from 4.1.0 to…
dependabot[bot] May 7, 2025
cc11e9e
chore(deps): bump actions/github-script from 6 to 7 (#2223)
dependabot[bot] May 7, 2025
0bd9882
chore: upgrade to node v22 (#2220)
saikumarrs May 7, 2025
9945f49
chore(deps): bump rudderlabs/github-action-check-size-limit from 2.12…
dependabot[bot] May 7, 2025
73ddc52
chore(deps-dev): bump @nx/jest from 20.8.1 to 21.0.0 (#2226)
dependabot[bot] May 7, 2025
1d0cc32
chore(deps): bump @nx/nx-darwin-arm64 from 20.8.1 to 21.0.0 (#2227)
dependabot[bot] May 7, 2025
4ef6766
chore(deps-dev): bump @types/node from 22.15.14 to 22.15.15 in the np…
dependabot[bot] May 7, 2025
97c959f
chore(deps): bump @nx/nx-darwin-x64 from 20.8.1 to 21.0.0 (#2228)
dependabot[bot] May 7, 2025
5c75e17
chore(deps-dev): bump nx from 20.8.1 to 21.0.0 (#2218)
dependabot[bot] May 7, 2025
516f546
chore(deps): bump the npm-prod-deps group with 2 updates (#2230)
dependabot[bot] May 9, 2025
dd4a544
chore(deps-dev): bump @nx/eslint from 20.8.1 to 21.0.2 (#2232)
dependabot[bot] May 9, 2025
59c56b2
chore(deps-dev): bump @nx/js from 20.8.1 to 21.0.2 (#2233)
dependabot[bot] May 9, 2025
07bab42
chore(deps-dev): bump the npm-dev-deps group across 1 directory with …
dependabot[bot] May 9, 2025
4c3532c
fix: load api options boolean inputs normalization (#2236)
saikumarrs May 9, 2025
b448874
feat: group errors by message (#2229)
saikumarrs May 9, 2025
8b7bcfd
feat: user session cut off (#2209)
saikumarrs May 9, 2025
44473c3
Merge remote-tracking branch 'origin/main' into develop
saikumarrs May 9, 2025
3c91754
chore(@rudderstack/analytics-js-common): release version 3.19.0
web-flow May 9, 2025
75ad4eb
chore(@rudderstack/analytics-js-cookies): release version 0.4.25
web-flow May 9, 2025
dd52cc1
chore(@rudderstack/analytics-js-plugins): release version 3.8.2
web-flow May 9, 2025
a01d327
chore(@rudderstack/analytics-js): release version 3.18.0
web-flow May 9, 2025
2b8a073
chore(rudder-sdk-js): release version 2.51.2
web-flow May 9, 2025
38675d2
chore(@rudderstack/analytics-js-integrations): release version 3.14.0
web-flow May 9, 2025
4876ec1
chore(@rudderstack/analytics-js-service-worker): release version 3.2.25
web-flow May 9, 2025
54de4d9
chore(@rudderstack/analytics-js-sanity-suite): release version 3.2.9
web-flow May 9, 2025
735f23c
chore(monorepo): sync versions and generate release logs
web-flow May 9, 2025
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
180 changes: 158 additions & 22 deletions .github/workflows/deploy-beta.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
name: Deploy BETA/BugBash Feature
name: Deploy to Beta Environment

on:
workflow_dispatch:
inputs:
deploy_to_npm:
description: "Deploy to NPM"
type: boolean
default: false

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
Expand All @@ -10,44 +15,127 @@ concurrency:
permissions:
id-token: write # allows the JWT to be requested from GitHub's OIDC provider
contents: read # This is required for actions/checkout
pull-requests: read # This is required to get PR information

env:
NODE_OPTIONS: '--no-warnings'

jobs:
validate-actor:
# Allow only to run from branches and not tags
if: ${{ startsWith(github.ref, 'refs/heads/') }}
uses: ./.github/workflows/validate-actor.yml
with:
team_names: 'js-sdk,integrations'
secrets:
PAT: ${{ secrets.PAT }}

get-deploy-inputs:
name: Get Deploy Inputs
if: startsWith(github.ref, 'refs/heads/beta/') || startsWith(github.ref, 'refs/tags/bugbash/')
needs: validate-actor
runs-on: [self-hosted, Linux, X64]
outputs:
release_type: ${{ steps.deploy-inputs.outputs.release_type }}
feature_name: ${{ steps.deploy-inputs.outputs.feature_name }}

version_suffix: ${{ steps.deploy-inputs.outputs.version_suffix }}
beta_identifier: ${{ steps.deploy-inputs.outputs.beta_identifier }}
beta_identifier_for_automation_tests: ${{ steps.deploy-inputs.outputs.beta_identifier_for_automation_tests }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Find PR for current branch
id: pr-info
uses: actions/github-script@v7
with:
script: |
const branch = context.ref.replace('refs/heads/', '');
console.log(`Finding PRs for branch: ${branch}`);

const { data: pullRequests } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:${branch}`,
base: 'develop',
state: 'open'
});

if (pullRequests.length > 0) {
const pr = pullRequests[0];
const prNumber = pr.number.toString();
console.log(`Found PR #${prNumber} for branch ${branch}: https://github.com/${context.repo.owner}/${context.repo.repo}/pull/${prNumber}`);

// Check if PR is in draft state
if (pr.draft) {
core.setFailed(`PR #${prNumber} is in draft state. Please mark it as ready for review before deploying.`);
return;
}

// Get detailed PR information including mergeable state
const { data: prDetails } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber
});

// Check if PR is mergeable and all requirements are satisfied
if (prDetails.mergeable === false) {
core.setFailed(`PR #${prNumber} is not in a mergeable state. Please resolve conflicts before deploying.`);
return;
}

// The mergeable_state can be one of: clean, dirty, blocked, unstable, or unknown
// Only 'clean' means all requirements are met (checks passed, approvals received, no conflicts)
if (prDetails.mergeable_state !== 'clean') {
// Get more details about why it's not clean
let reason = '';

if (prDetails.mergeable_state === 'blocked') {
reason = 'required checks or approvals are missing';
} else if (prDetails.mergeable_state === 'dirty') {
reason = 'there are merge conflicts';
} else if (prDetails.mergeable_state === 'unstable') {
reason = 'required checks are failing';
} else {
reason = `the mergeable state is "${prDetails.mergeable_state}"`;
}

core.setFailed(`PR #${prNumber} is not ready to merge: ${reason}. Please resolve all issues before deploying.`);
return;
}

console.log(`PR #${prNumber} is in a clean mergeable state. All requirements satisfied. Proceeding with beta deployment.`);

core.setOutput('pr_number', prNumber);
} else {
core.setFailed(`No open PR found for branch ${branch} targeting develop branch`);
core.setOutput('pr_number', '');
}

- name: Extract deploy inputs
id: deploy-inputs
shell: bash
run: |
source_branch_name=${GITHUB_REF##*/}
RELEASE_TYPE=beta
grep -q "bugbash/" <<< "${GITHUB_REF}" && RELEASE_TYPE=bugbash
FEATURE_NAME=${source_branch_name#bugbash/}
FEATURE_NAME=${FEATURE_NAME#beta/}
FEATURE_NAME=${FEATURE_NAME#refs/heads/}
FEATURE_NAME=${FEATURE_NAME#refs/tags/}

echo "release_type=$RELEASE_TYPE" >> $GITHUB_OUTPUT
echo "feature_name=$FEATURE_NAME" >> $GITHUB_OUTPUT

deploy:
name: Deploy BETA/BugBash Feature
# Suffix the short commit hash with the PR number
SHA_SHORT=$(echo ${{ github.sha }} | cut -c1-7)
# The version_suffix is structured as "beta.pr.<PR_NUMBER>.<SHORT_COMMIT_HASH>".
# - "beta.pr." is a fixed prefix indicating a beta release for a pull request.
# - <PR_NUMBER> is the number of the pull request associated with the branch.
# - <SHORT_COMMIT_HASH> is the first 7 characters of the commit hash for traceability.
echo "version_suffix=beta.pr.${{ steps.pr-info.outputs.pr_number }}.$SHA_SHORT" >> $GITHUB_OUTPUT
echo "beta_identifier=PR-${{ steps.pr-info.outputs.pr_number }}/$SHA_SHORT" >> $GITHUB_OUTPUT
echo "beta_identifier_for_automation_tests=pr-${{ steps.pr-info.outputs.pr_number }}-$SHA_SHORT" >> $GITHUB_OUTPUT

deploy-cdn:
name: Deploy to CDN
uses: ./.github/workflows/deploy.yml
needs: get-deploy-inputs
with:
environment: ${{ needs.get-deploy-inputs.outputs.release_type }}
bugsnag_release_stage: ${{ needs.get-deploy-inputs.outputs.release_type }}
s3_dir_path: ${{ needs.get-deploy-inputs.outputs.release_type }}/${{ needs.get-deploy-inputs.outputs.feature_name }}
s3_dir_path_legacy: ${{ needs.get-deploy-inputs.outputs.release_type }}/${{ needs.get-deploy-inputs.outputs.feature_name }}/v1.1
environment: beta
bugsnag_release_stage: beta
s3_dir_path: beta/${{ needs.get-deploy-inputs.outputs.beta_identifier }}/v3
s3_dir_path_legacy: beta/${{ needs.get-deploy-inputs.outputs.beta_identifier }}/v1.1
version_suffix: ${{ needs.get-deploy-inputs.outputs.version_suffix }}
action_type: ''
secrets:
AWS_ACCOUNT_ID: ${{ secrets.AWS_PROD_ACCOUNT_ID }}
Expand All @@ -57,3 +145,51 @@ jobs:
BUGSNAG_API_KEY: ${{ secrets.RS_PROD_BUGSNAG_API_KEY }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_RELEASE_CHANNEL_ID: ${{ secrets.SLACK_RELEASE_CHANNEL_ID_NON_PROD }}

deploy-npm:
name: Deploy to NPM
uses: ./.github/workflows/deploy-npm.yml
needs: get-deploy-inputs
if: ${{ inputs.deploy_to_npm }}
with:
is_called: true
environment: beta
bugsnag_release_stage: beta
version_suffix: ${{ needs.get-deploy-inputs.outputs.version_suffix }}
base_version: develop
head_version: ${{ github.ref_name }}
secrets:
RS_PROD_BUGSNAG_API_KEY: ${{ secrets.RS_PROD_BUGSNAG_API_KEY }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_RELEASE_CHANNEL_ID: ${{ secrets.SLACK_RELEASE_CHANNEL_ID_NON_PROD }}

deploy-sanity-suite:
name: Deploy sanity suite
needs: [get-deploy-inputs, deploy-cdn]
uses: ./.github/workflows/deploy-sanity-suite.yml
with:
environment: 'beta'
beta_identifier: ${{ needs.get-deploy-inputs.outputs.beta_identifier }}
secrets:
AWS_ACCOUNT_ID: ${{ secrets.AWS_PROD_ACCOUNT_ID }}
AWS_S3_BUCKET_NAME: ${{ secrets.AWS_PROD_S3_BUCKET_NAME }}
AWS_S3_SYNC_ROLE: ${{ secrets.AWS_PROD_S3_SYNC_ROLE }}
AWS_CF_DISTRIBUTION_ID: ${{ secrets.AWS_PROD_CF_DISTRIBUTION_ID }}
SANITY_SUITE_WRITE_KEY: ${{ secrets.SANITY_SUITE_PROD_WRITE_KEY }}
SANITY_SUITE_DATAPLANE_URL: ${{ secrets.SANITY_SUITE_PROD_DATAPLANE_URL }}
SANITY_SUITE_CONFIG_SERVER_HOST: ${{ secrets.SANITY_SUITE_PROD_CONFIG_SERVER_HOST }}
BUGSNAG_API_KEY: ${{ secrets.RS_PROD_BUGSNAG_API_KEY }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_RELEASE_CHANNEL_ID: ${{ secrets.SLACK_RELEASE_CHANNEL_ID_NON_PROD }}

trigger-test-suites:
uses: ./.github/workflows/trigger-test-suites.yml
name: Trigger test suites
needs: [get-deploy-inputs, deploy-sanity-suite]
with:
environment: beta
sanity_test_suite_url: https://cdn.rudderlabs.com/sanity-suite/beta/${{ needs.get-deploy-inputs.outputs.beta_identifier }}
build_source_id: ${{ needs.get-deploy-inputs.outputs.beta_identifier_for_automation_tests }}
secrets:
PAT: ${{ secrets.PAT }}
Loading
Loading