Files
flipper/scripts/prepare-release.sh
Michel Weststrate ebcb535fd3 Fix RN GH example jobs failing after release bump
Summary: After running a flipper release, public builds start to failing as the yarn.lock file of ReactNativeFlipperExample is out of sync with the package.json. This diff fixes that

Reviewed By: passy

Differential Revision: D27591155

fbshipit-source-id: 84fa2d35b5f41ba9a28cfecabbaf6a2a082791db
2021-04-07 03:08:37 -07:00

96 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
set -e
echo "✨ Making a new release..."
# When starting this job from SandcastleFlipperAutoReleaseCommand, we pass in the revision to release
SANDCASTLE_REVISION="$1"
VERSION="$2"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
SONAR_DIR="$DIR/../"
DESKTOP_DIR="$SONAR_DIR/desktop"
source "$DIR"/setup-env.sh
if [[ ! -d "$DESKTOP_DIR/node_modules" ]]; then
yarn --cwd "$DESKTOP_DIR" install --ignore-scripts --ignore-engines
fi
# if we got called with a rev argument, we got triggered from our automatic sandcastle job
if [ "$SANDCASTLE_REVISION" == "" ];
then
OLD_VERSION=$(jq -r '.version' "$DESKTOP_DIR"/package.json)
echo "The currently released version is $OLD_VERSION. What should the version of the next release be?"
read -r VERSION
yarn --cwd "$DESKTOP_DIR" version --new-version "$VERSION"
fi
echo "Preparing release $VERSION..."
# Update flipper app version to the very same version
yarn --cwd "$DESKTOP_DIR" version --new-version "$VERSION"
# Update react-native-flipper to the very same version
yarn --cwd "$SONAR_DIR"/react-native/react-native-flipper version --new-version "$VERSION" --no-git-tag-version
# This could be one expression with GNU sed, but I guess we want to support the BSD crap, too.
SNAPSHOT_MINOR_VERSION=$(echo "$VERSION" | sed -Ee 's/([0-9]+)\.([0-9]+)\.([0-9]+)/\3 + 1/' | bc)
SNAPSHOT_VERSION="$(echo "$VERSION" | sed -Ee 's/([0-9]+)\.([0-9]+)\.([0-9]+)/\1.\2./')""$SNAPSHOT_MINOR_VERSION""-SNAPSHOT"
echo "Bumping version number for android related files..."
# Update Android related files
"$SONAR_DIR"/scripts/bump.sh "$VERSION"
# Update lock file as a result of version bump
yarn --ignore-scripts --cwd "$SONAR_DIR"/react-native/ReactNativeFlipperExample
# Generate changelog
$nodejs "$DESKTOP_DIR"/scripts/generate-changelog.js
# Create commit
echo "Committing the files..."
hg addremove
hg commit -m "$(echo -e "Flipper Release: v${VERSION}\n\n\
Summary:\nReleasing version $VERSION\n\n\
Test Plan:\n\
1. Flipper Bot will comment \"#flipperrelease ephemeral\" to trigger a new ephemeral release job [\"flipper-release-ephemeral\"](https://fburl.com/sandcastle/4mt4rj18) on Sandcastle.\n\
1. After the job has finished, Flipper Bot will post to the Signal Hub the command to run the produced build with the exact version:\n\
\`env FLIPPERVERSIONV2=<FLIPPERVERSION> RUST_LOG=flipper_launcher=info /Applications/Flipper.app/Contents/MacOS/Flipper\`\n\
1. Run the build and perform exploratory tests.\n\
1. If everything is ok, accept and land the diff.\n\
1. After the diff has landed, Flipper Bot will comment \"#flipperrelease with bump\" to trigger the actual release build job [\"flipper-release\"](https://fburl.com/sandcastle/uh698xj2) on Sandcastle.\n\
1. After the job has finished, a new diff will be published for pinning the released version to the fbsource checkout, check further instructions in that diff.\n\
1. In case the release job has failed, Flipper Bot will post to the Signal Hub. In addition to that, the \"flipper\" oncall will receive an e-mail and a task for investigation.\n\n\
See more details about the Flipper release process [here](https://fburl.com/flipperreleasebot).\n\
Reviewers: flipper\n\n\
Tags: accept2ship"
)"
# Create snapshot commit
RELEASE_REV="$(hg log -r . --template "{node}\\n")"
echo "Release commit made as $RELEASE_REV, creating new snapshot version $SNAPSHOT_VERSION..."
"$SONAR_DIR"/scripts/bump.sh --snapshot "$SNAPSHOT_VERSION"
hg commit -m "$(echo -e "Flipper Snapshot Bump: v${SNAPSHOT_VERSION}\n\n\
Summary:\nReleasing snapshot version $SNAPSHOT_VERSION\n\n\
Test Plan:\nN/A\n\n\
Reviewers: flipper\n\n\
Tags: accept2ship"
)"
if [ "$SANDCASTLE_REVISION" == "" ];
then
# Submit diffs, we only do this when running locally.
# From SandcastleFlipperAutoReleaseCommand, the diffs are submitted
# later by using the bot context
echo "Submitting diffs for review..."
jf submit -n -r.^::.
else
echo "Skip submitting diffs, as this diffs should be submitted by SC"
fi