mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01:00
Publish GitHub release from master branch (#7136)
* Publish GitHub release from master branch This ensures that changes made on `develop` since branching for the release are not included. It also ensures that the final release sourcemaps line-up correctly (they were always build on master)`. * Consolidate publish jobs The jobs `job-publish-release` and `create_github_release` both handle different parts of publishing a release. They have been consolidated into a single `job-publish-release` job. * Update release script to expect a merge commit The release script was originally written to be run on `develop`, so it expected the current commit to be a result of `Squash & Merge`. Now that it's run on `master`, it will generally be run against a merge commit. The version is now extracted from the commit message using a regular expression that should work on all version of Bash v3+, and should be tolerant of both merge commits and `Squash & Merge` commits. * Target `master` with release PR `master` is now targeted by the release PR instead of `develop`, as the release has to be created from the master branch. The update to `develop` is handled after the release by a PR from `master` to `develop`, which is created automatically after the release.
This commit is contained in:
parent
38f6550951
commit
c9fffafd9a
@ -14,13 +14,6 @@ workflows:
|
||||
- prep-build:
|
||||
requires:
|
||||
- prep-deps
|
||||
- create_github_release:
|
||||
requires:
|
||||
- prep-build
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- develop
|
||||
# - prep-docs:
|
||||
# requires:
|
||||
# - prep-deps
|
||||
@ -243,6 +236,13 @@ jobs:
|
||||
- run:
|
||||
name: sentry sourcemaps upload
|
||||
command: yarn sentry:publish
|
||||
- run:
|
||||
name: Create GitHub release
|
||||
command: |
|
||||
.circleci/scripts/release-create-gh-release
|
||||
- run:
|
||||
name: Create GitHub Pull Request to sync master with develop
|
||||
command: .circleci/scripts/release-create-master-pr
|
||||
# - run:
|
||||
# name: github gh-pages docs publish
|
||||
# command: >
|
||||
@ -321,15 +321,3 @@ jobs:
|
||||
- run:
|
||||
name: Coveralls upload
|
||||
command: yarn test:coveralls-upload
|
||||
|
||||
create_github_release:
|
||||
docker:
|
||||
- image: circleci/node:8.15.1-browsers
|
||||
steps:
|
||||
- checkout
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- run:
|
||||
name: Create GitHub release
|
||||
command: |
|
||||
.circleci/scripts/release-create-gh-release
|
||||
|
@ -28,24 +28,24 @@ function install_github_cli ()
|
||||
|
||||
current_commit_msg=$(git show -s --format='%s' HEAD)
|
||||
|
||||
if grep --quiet '^Version v' <<< "$current_commit_msg"
|
||||
if [[ $current_commit_msg =~ Version[-[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+) ]]
|
||||
then
|
||||
tag="${BASH_REMATCH[1]}"
|
||||
|
||||
install_github_cli
|
||||
|
||||
printf '%s\n' 'Creating GitHub Release'
|
||||
read -ra commit_words <<< "$current_commit_msg"
|
||||
tag="${commit_words[1]}"
|
||||
release_body="$(awk -v version="${tag##v}" -f .circleci/scripts/show-changelog.awk CHANGELOG.md)"
|
||||
pushd builds
|
||||
hub release create \
|
||||
--attach metamask-chrome-*.zip \
|
||||
--attach metamask-firefox-*.zip \
|
||||
--message "${commit_words[0]} ${commit_words[1]#v}" \
|
||||
--message "Version ${tag##v}" \
|
||||
--message "$release_body" \
|
||||
--commitish "$CIRCLE_SHA1" \
|
||||
"$tag"
|
||||
popd
|
||||
else
|
||||
printf '%s\n' 'Skipping GitHub Release'
|
||||
printf '%s\n' 'Version not found in commit message; skipping GitHub Release'
|
||||
exit 0
|
||||
fi
|
||||
|
53
.circleci/scripts/release-create-master-pr
Executable file
53
.circleci/scripts/release-create-master-pr
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
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
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN:-}" ]]
|
||||
then
|
||||
printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
|
||||
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
|
||||
}
|
||||
|
||||
base_branch='develop'
|
||||
|
||||
if [[ -n "${CI_PULL_REQUEST:-}" ]]
|
||||
then
|
||||
printf '%s\n' 'CI_PULL_REQUEST is set, pull request already exists for this build'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
install_github_cli
|
||||
|
||||
printf '%s\n' "Creating a Pull Request to sync 'master' with 'develop'"
|
||||
|
||||
if ! hub pull-request \
|
||||
--reviewer '@MetaMask/extension-release-team' \
|
||||
--message "Master => develop" --message 'Merge latest release back into develop' \
|
||||
--base "$CIRCLE_PROJECT_USERNAME:$base_branch" \
|
||||
--head "$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH";
|
||||
then
|
||||
printf '%s\n' 'Pull Request already exists'
|
||||
fi
|
@ -32,7 +32,7 @@ function install_github_cli ()
|
||||
}
|
||||
|
||||
version="${CIRCLE_BRANCH/Version-v/}"
|
||||
base_branch='develop'
|
||||
base_branch='master'
|
||||
|
||||
if [[ -n "${CI_PULL_REQUEST:-}" ]]
|
||||
then
|
||||
|
Loading…
Reference in New Issue
Block a user