mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-23 02:10:12 +01:00
6aaeab2f24
* Automate the Flask release A Flask release will now be published alongside each main extension release. The version of each Flask release will be the same as the extension version except it will have the suffix `-flask.0`. * Programmatically remove build prefix The create GH release Bash script derives the Flask version from the Flask build filename by removing the build prefix, leaving just the version. Rather than hard-coding the prefix size to remove, it is now calculated programmatically so that it is easier to read and update. * Fix tag publishing The tab publishing step used the wrong credentials, and didn't properly identify the commit author. This has now been fixed.
80 lines
2.3 KiB
Bash
Executable File
80 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -x
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
if [[ "${CI:-}" != 'true' ]]
|
|
then
|
|
printf '%s\n' 'CI environment variable must be set to true'
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${CIRCLECI:-}" != 'true' ]]
|
|
then
|
|
printf '%s\n' 'CIRCLECI environment variable must be set to true'
|
|
exit 1
|
|
fi
|
|
|
|
function install_github_cli ()
|
|
{
|
|
printf '%s\n' 'Installing hub CLI'
|
|
pushd "$(mktemp -d)"
|
|
curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz
|
|
PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin"
|
|
popd
|
|
}
|
|
|
|
function print_flask_version ()
|
|
{
|
|
local flask_filename
|
|
flask_filename="$(find ./builds-flask -type f -name 'metamask-flask-chrome-*.zip' -exec basename {} .zip \;)"
|
|
|
|
local flask_build_filename_prefix
|
|
flask_build_filename_prefix='metamask-flask-chrome-'
|
|
local flask_build_filename_prefix_size
|
|
flask_build_filename_prefix_size="${#flask_build_filename_prefix}"
|
|
|
|
# Use substring parameter expansion to remove the filename prefix, leaving just the version
|
|
echo "${flask_filename:$flask_build_filename_prefix_size}"
|
|
}
|
|
|
|
function publish_flask_tag ()
|
|
{
|
|
local flask_version="${1}"; shift
|
|
|
|
git config user.email "metamaskbot@users.noreply.github.com"
|
|
git config user.name "MetaMask Bot"
|
|
git tag -a "v${flask_version}" -m "Flask version ${flask_version}"
|
|
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
|
|
git push "https://$GITHUB_TOKEN@github.com/$repo_slug" "v${flask_version}"
|
|
}
|
|
|
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
|
|
|
if [[ $current_commit_msg =~ Version[-[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+) ]]
|
|
then
|
|
tag="${BASH_REMATCH[1]}"
|
|
flask_version="$(print_flask_version)"
|
|
|
|
install_github_cli
|
|
|
|
printf '%s\n' 'Creating GitHub Release'
|
|
release_body="$(awk -v version="${tag##v}" -f .circleci/scripts/show-changelog.awk CHANGELOG.md)"
|
|
hub release create \
|
|
--attach builds/metamask-chrome-*.zip \
|
|
--attach builds/metamask-firefox-*.zip \
|
|
--attach builds-flask/metamask-flask-chrome-*.zip \
|
|
--attach builds-flask/metamask-flask-firefox-*.zip \
|
|
--message "Version ${tag##v}" \
|
|
--message "$release_body" \
|
|
--commitish "$CIRCLE_SHA1" \
|
|
"$tag"
|
|
|
|
publish_flask_tag "${flask_version}"
|
|
else
|
|
printf '%s\n' 'Version not found in commit message; skipping GitHub Release'
|
|
exit 0
|
|
fi
|