Skip to main content
Glama
prepare-release.sh3.12 kB
#!/usr/bin/env bash # Fail on error set -e # Echo commands set -x # Get the current version number CURR_VERSION=$(node -p "require('./package.json').version") # Convert version string to array using '.' as delimiter IFS='.' read -ra CURR_VERSION_PARTS <<< "$CURR_VERSION" # Check if a new requiredBefore entry has been added to the data migration manifest DIFF_OUTPUT=$(git diff v$CURR_VERSION -- packages/server/src/migrations/data/data-version-manifest.json) || true ADDED_REQUIRED_BEFORE=$(echo "$DIFF_OUTPUT" | grep -e '^\+.*"requiredBefore"' || true) # `-z "$(true)"` oddly evaluates to empty, so this still works as intended even when $ADDED_REQUIRED_BEFORE is true if [ -z "$ADDED_REQUIRED_BEFORE" ]; then echo "No added requiredBefore entry since v$CURR_VERSION, increasing patch version" ((CURR_VERSION_PARTS[2]++)) || true else echo "New requiredBefore entry since v$CURR_VERSION, increasing minor version" ((CURR_VERSION_PARTS[1]++)) || true CURR_VERSION_PARTS[2]=0 fi # Build the new version number NEW_VERSION="${CURR_VERSION_PARTS[0]}.${CURR_VERSION_PARTS[1]}.${CURR_VERSION_PARTS[2]}" # Check if a new version is provided as a command line argument and override if present if [ ! -z "$1" ]; then NEW_VERSION=$1 echo "Overriding new version to: $NEW_VERSION" else echo "New version: $NEW_VERSION" fi # Use the Github gh tool to make sure the user is logged in gh auth status # Start a new branch BRANCH_NAME="version-$NEW_VERSION" git checkout -b "$BRANCH_NAME" # Set version in sonar-project.properties sed -i'' -E -e "s/sonar.projectVersion=.*/sonar.projectVersion=$NEW_VERSION/g" sonar-project.properties # Set version in package.json sed -i'' -E -e "s/\"version\": \"[^\"]+\"/\"version\": \"$NEW_VERSION\"/g" package.json # Set version in all examples/\*/package.json files find examples -name 'package.json' -print0 | xargs -0 sed -i'' -E -e "s/(\"@medplum\/[^\"]+\"): \"[^\"]+\"/\1: \"$NEW_VERSION\"/g" find packages -name 'package.json' -print0 | xargs -0 sed -i'' -E -e "s/(\"@medplum\/[^\"]+\"): \"[^\"]+\"/\1: \"$NEW_VERSION\"/g" # Set version in charts/Chart.yaml (Helm) sed -i'' -E -e "s/^appVersion: ['\"][^\'\"]+['\"]/appVersion: '$NEW_VERSION'/g" charts/Chart.yaml sed -i'' -E -e "s/^version: [0-9.]+/version: $NEW_VERSION/g" charts/Chart.yaml # Run `npm version $version --workspaces` npm version "$NEW_VERSION" --workspaces # Generate release notes RELEASE_NOTES=$(echo -e "## What's Changed\n" && git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:'* %s' --reverse && echo -e "\n\n**Full Changelog**: https://github.com/medplum/medplum/compare/v$CURR_VERSION...v$NEW_VERSION") # Add changes to the staging area git add -u . # Commit the changes with the release notes git commit -s -m "Release Version $NEW_VERSION" -m "$RELEASE_NOTES" # Push the changes to the remote branch git push origin "$BRANCH_NAME" # Create pull request gh pr create --title "Release Version $NEW_VERSION" --body "$RELEASE_NOTES" # Create draft release gh release create "v$NEW_VERSION" --notes "$RELEASE_NOTES" --title "Version $NEW_VERSION" --draft

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server