-
Notifications
You must be signed in to change notification settings - Fork 5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add scripts to automate GitHub releases (#6653)
* ci: Rename full_test to test_and_release * ci: Add scripts to automate GH releases * Add .bak files to .gitignore * ci: Add reviewer to the auto version PR
- Loading branch information
Showing
7 changed files
with
278 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#!/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 | ||
|
||
version="${CIRCLE_BRANCH/Version-v/}" | ||
|
||
if ! grep --quiet --fixed-strings "$version" CHANGELOG.md | ||
then | ||
printf '%s\n' 'Adding this release to CHANGELOG.md' | ||
date_str="$(date '+%a %b %d %Y')" | ||
cp CHANGELOG.md{,.bak} | ||
|
||
update_headers=$(cat <<END | ||
/## Current Develop Branch/ { | ||
print "## Current Develop Branch\n"; | ||
print "## ${version} ${date_str}"; | ||
next; | ||
} | ||
{ | ||
print; | ||
} | ||
END | ||
) | ||
|
||
awk "$update_headers" CHANGELOG.md.bak > CHANGELOG.md | ||
rm CHANGELOG.md.bak | ||
else | ||
printf '%s\n' "CHANGELOG.md already includes a header for ${version}" | ||
exit 0 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/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 | ||
|
||
printf '%s\n' 'Updating the manifest version if needed' | ||
|
||
version="${CIRCLE_BRANCH/Version-v/}" | ||
updated_manifest="$(jq ".version = \"$version\"" app/manifest.json)" | ||
printf '%s\n' "$updated_manifest" > app/manifest.json | ||
|
||
if [[ -z $(git status --porcelain) ]] | ||
then | ||
printf '%s\n' 'App manifest version already set' | ||
exit 0 | ||
fi | ||
|
||
git \ | ||
-c user.name='MetaMask Bot' \ | ||
-c user.email='[email protected]' \ | ||
commit --message "${CIRCLE_BRANCH/-/ }" \ | ||
CHANGELOG.md app/manifest.json | ||
|
||
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME" | ||
git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
#!/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 | ||
} | ||
|
||
current_commit_msg=$(git show -s --format='%s' HEAD) | ||
|
||
if grep --quiet '^Version v' <<< "$current_commit_msg" | ||
then | ||
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 "$release_body" \ | ||
--commitish "$CIRCLE_SHA1" \ | ||
"$tag" | ||
popd | ||
else | ||
printf '%s\n' 'Skipping GitHub Release' | ||
exit 0 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/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 | ||
} | ||
|
||
version="${CIRCLE_BRANCH/Version-v/}" | ||
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 for $version on GitHub" | ||
|
||
if ! hub pull-request \ | ||
--reviewer '@MetaMask/extension-release-team' \ | ||
--message "${CIRCLE_BRANCH/-/ } RC" --message ':package: :rocket:' \ | ||
--base "$CIRCLE_PROJECT_USERNAME:$base_branch" \ | ||
--head "$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH"; | ||
then | ||
printf '%s\n' 'Pull Request already exists' | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# DESCRIPTION | ||
# | ||
# This script will print out all of the CHANGELOG.md lines for a given version | ||
# with the assumption that the CHANGELOG.md files looks something along the | ||
# lines of: | ||
# | ||
# ``` | ||
# ## 6.6.2 Fri Jun 07 2019 | ||
# | ||
# - [#6690](https://github.com/MetaMask/metamask-extension/pull/6690): Some words | ||
# - [#6700](https://github.com/MetaMask/metamask-extension/pull/6700): some more words | ||
# | ||
# ## 6.6.1 Thu Jun 06 2019 | ||
# | ||
# - [#6691](https://github.com/MetaMask/metamask-extension/pull/6691): Revert other words | ||
# | ||
# ## 6.6.0 Mon Jun 03 2019 | ||
# | ||
# - [#6659](https://github.com/MetaMask/metamask-extension/pull/6659): foo | ||
# - [#6671](https://github.com/MetaMask/metamask-extension/pull/6671): bar | ||
# - [#6625](https://github.com/MetaMask/metamask-extension/pull/6625): baz | ||
# - [#6633](https://github.com/MetaMask/metamask-extension/pull/6633): Many many words | ||
# | ||
# | ||
# ``` | ||
# | ||
# EXAMPLE | ||
# | ||
# Run this script like so, passing in the version: | ||
# | ||
# ``` | ||
# awk -v version='6.6.0' -f .circleci/scripts/show-changelog.awk CHANGELOG.md | ||
# ``` | ||
# | ||
|
||
BEGIN { | ||
inside_section = 0; | ||
} | ||
|
||
$1 == "##" && $2 == version { | ||
inside_section = 1; | ||
next; | ||
} | ||
|
||
$1 == "##" && $2 != version { | ||
inside_section = 0; | ||
next; | ||
} | ||
|
||
inside_section && !/^$/ { | ||
print $0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,8 @@ package | |
.vscode | ||
.sublime-project | ||
|
||
*.bak | ||
|
||
# VIM | ||
*.swp | ||
*.swo | ||
|