Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
INFRA-2867-Updated branch variable names to make it clearer
Signed-off-by: Pavel Dvorkin <[email protected]>
  • Loading branch information
XxdpavelxX committed Aug 26, 2025
commit 3dcd328fb44994e0a944df299ef6d65a005bbfd1
34 changes: 18 additions & 16 deletions .github/scripts/create-platform-release-pr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@
# 3. A version bump PR for the main branch
#
# Usage:
# create-platform-release-pr.sh <platform> <previous_version> <new_version> [new_version_number] [git_user_name] [git_user_email]
# create-platform-release-pr.sh <platform> <previous_version_ref> <new_version> [new_version_number] [git_user_name] [git_user_email]
#
# Parameters:
# platform - 'mobile' or 'extension'
# previous_version - Previous release version tag (e.g., v7.7.0)
# new_version - New semantic version (e.g., 7.8.0)
# new_version_number - Build version for mobile platform (optional, required for mobile)
# git_user_name - Git user name for commits (optional, defaults to 'metamaskbot')
# git_user_email - Git user email for commits (optional, defaults to '[email protected]')
# platform - 'mobile' or 'extension'
# previous_version_ref - Previous release version tag or branch name (e.g., v7.7.0)
# new_version - New semantic version (e.g., 7.8.0)
# new_version_number - Build version for mobile platform (optional, required for mobile)
# git_user_name - Git user name for commits (optional, defaults to 'metamaskbot')
# git_user_email - Git user email for commits (optional, defaults to '[email protected]')

set -e
set -u
set -o pipefail

# Input validation
PLATFORM="${1}"
PREVIOUS_VERSION="${2}"
PREVIOUS_VERSION_REF="${2}"
NEW_VERSION="${3}"
NEW_VERSION_NUMBER="${4:-}"
GIT_USER_NAME="${5:-metamaskbot}"
Expand Down Expand Up @@ -292,7 +292,7 @@ create_release_pr() {
create_changelog_pr() {
local platform="$1"
local new_version="$2"
local previous_version="$3"
local previous_version_ref="$3"
local release_branch_name="$4"
local changelog_branch_name="$5"

Expand All @@ -307,12 +307,14 @@ create_changelog_pr() {
echo "Current Directory: $(pwd)"
PROJECT_GIT_DIR=$(pwd)

# Resolve previous_version when it's a branch name: fetch and use origin/<branch>
DIFF_BASE="${previous_version}"
if git ls-remote --heads origin "${previous_version}" | grep -qE "\srefs/heads/${previous_version}$"; then
echo "Detected remote branch for previous version: ${previous_version}"
git fetch origin "${previous_version}"
DIFF_BASE="origin/${previous_version}"
# Resolve previous_version_ref when it's a branch name: fetch and use origin/<branch>. This enables branch names to be used as previous version references.
DIFF_BASE="${previous_version_ref}"
if git ls-remote --heads origin "${previous_version_ref}" | grep -qE "\srefs/heads/${previous_version_ref}$"; then
echo "Detected remote branch for previous version: ${previous_version_ref}"
git fetch origin "${previous_version_ref}"
DIFF_BASE="origin/${previous_version_ref}"
else
echo "No remote branch detected for previous version: ${previous_version_ref}"
fi

# Switch to github-tools directory
Expand Down Expand Up @@ -445,7 +447,7 @@ main() {
if [ "$TEST_ONLY" == "true" ]; then
echo "Skipping changelog generation in test mode"
else
create_changelog_pr "$PLATFORM" "$NEW_VERSION" "$PREVIOUS_VERSION" "$release_branch_name" "$changelog_branch_name"
create_changelog_pr "$PLATFORM" "$NEW_VERSION" "$PREVIOUS_VERSION_REF" "$release_branch_name" "$changelog_branch_name"
fi

# Step 3: Create version bump PR for main branch
Expand Down
18 changes: 9 additions & 9 deletions .github/scripts/generate-rc-commits.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ async function getTeam(repository, prNumber) {
}

// Function to filter commits based on unique commit messages and group by teams
async function filterCommitsByTeam(platform, branchA, branchB) {
async function filterCommitsByTeam(platform, refA, refB) {

const MAX_COMMITS = 500; // Limit the number of commits to process
console.log('Filtering commits by team...');
Expand All @@ -81,8 +81,8 @@ async function filterCommitsByTeam(platform, branchA, branchB) {
const git = simpleGit();

const logOptions = {
from: branchB,
to: branchA,
from: refB,
to: refA,
format: {
hash: '%H',
author: '%an',
Expand All @@ -92,7 +92,7 @@ async function filterCommitsByTeam(platform, branchA, branchB) {

const log = await git.log(logOptions);

console.log(`Total commits between ${branchA} and ${branchB}: ${log.total}`);
console.log(`Total commits between ${refA} and ${refB}: ${log.total}`);
console.log(`Processing up to ${Math.min(log.all.length, MAX_COMMITS)} commits...`);

const commitsByTeam = {};
Expand Down Expand Up @@ -204,26 +204,26 @@ async function main() {

if (args.length !== 4) {
console.error(
'Usage: node generate-rc-commits.mjs platform branchA branchB',
'Usage: node generate-rc-commits.mjs platform refA refB',
);
console.error('Received:', args, ' with length:', args.length);
process.exit(1);
}

const platform = args[0];
const branchA = args[1];
const branchB = args[2];
const refA = args[1];
const refB = args[2];
const gitDir = args[3];

// Change the working directory to the git repository path
// Since this is invoked by a shared workflow, the working directory is not guaranteed to be the repository root
process.chdir(gitDir);

console.log(
`Generating CSV file for commits between ${branchA} and ${branchB} on ${platform} platform...`,
`Generating CSV file for commits between ${refA} and ${refB} on ${platform} platform...`,
);

const commitsByTeam = await filterCommitsByTeam(platform, branchA, branchB);
const commitsByTeam = await filterCommitsByTeam(platform, refA, refB);

if (Object.keys(commitsByTeam).length === 0) {
console.log('No commits found.');
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/create-release-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ on:
required: false
type: string
description: 'The build version for the mobile platform.'
previous-version-tag:
previous-version-ref:
required: true
type: string
description: 'Previous release version tag. eg: v7.7.0'
description: 'Previous release version tag or branch name. eg: v7.7.0'
# Flag to indicate if the release is a test release for development purposes only
mobile-template-sheet-id:
required: false
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
echo "Checkout Base Branch: ${{ inputs.checkout-base-branch }}"
echo "Release PR Base Branch: ${{ inputs.release-pr-base-branch }}"
echo "Semver Version: ${{ inputs.semver-version }}"
echo "Previous Version Tag: ${{ inputs.previous-version-tag }}"
echo "Previous Version Reference: ${{ inputs.previous-version-ref }}"
echo "Test Only Mode: ${{ inputs.test-only }}"
if [[ "${{ inputs.platform }}" == "mobile" ]]; then
echo "Mobile Build Version: ${{ inputs.mobile-build-version }}"
Expand Down Expand Up @@ -140,7 +140,7 @@ jobs:
# Execute the script from github-tools
./github-tools/.github/scripts/create-platform-release-pr.sh \
${{ inputs.platform }} \
${{ inputs.previous-version-tag }} \
${{ inputs.previous-version-ref }} \
${{ inputs.semver-version }} \
${{ inputs.mobile-build-version }} \
${{ inputs.git-user-name }} \
Expand Down
Loading