Files
flipper/scripts/prepare-release.sh
Anton Nikolaev 4b58d4438a Release test plan updated to match the new release process
Summary: Release test plan updated to match the new release process and include some details which might be required in case something failed.

Reviewed By: passy

Differential Revision: D25618132

fbshipit-source-id: c39ceebe4569475554866097970a2410a992b6ae
2020-12-18 08:53:13 -08:00

94 lines
4.0 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"
# 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