mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 01:47:00 +01:00
feat(17494): beta build trigger in release branch and cleanup (#17749)
* feat(17494): test separate commit triggered build * feat(17493): keep consistent commit message * feat(17493): use trim to get rid of white space in branch name * feat(17493): bring back some pipelines * Version v10.25.0-beta.0 * ERC1155 Import & Dapp interaction E2E tests (#17885) * feat(17494): test separate commit triggered build * feat(17493): remove testing beta commit in package.json --------- Co-authored-by: Thomas Huang <tmashuang@users.noreply.github.com>
This commit is contained in:
parent
47d9964a89
commit
f5e2183a7f
@ -18,16 +18,22 @@ orbs:
|
|||||||
gh: circleci/github-cli@2.0
|
gh: circleci/github-cli@2.0
|
||||||
codecov: codecov/codecov@3.2.2
|
codecov: codecov/codecov@3.2.2
|
||||||
|
|
||||||
|
rc_branch_only: &rc_branch_only
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- /^Version-v(\d+)[.](\d+)[.](\d+)/
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
test_and_release:
|
test_and_release:
|
||||||
jobs:
|
jobs:
|
||||||
- create_release_pull_request:
|
- create_release_pull_request:
|
||||||
|
<<: *rc_branch_only
|
||||||
|
requires:
|
||||||
|
- prep-deps
|
||||||
|
- trigger-beta-build:
|
||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^Version-v(\d+)[.](\d+)[.](\d+)/
|
|
||||||
- prep-deps
|
- prep-deps
|
||||||
- test-deps-audit:
|
- test-deps-audit:
|
||||||
requires:
|
requires:
|
||||||
@ -48,9 +54,6 @@ workflows:
|
|||||||
- prep-build:
|
- prep-build:
|
||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
- prep-build-beta:
|
|
||||||
requires:
|
|
||||||
- prep-deps
|
|
||||||
- prep-build-desktop:
|
- prep-build-desktop:
|
||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
@ -132,7 +135,7 @@ workflows:
|
|||||||
- prep-build
|
- prep-build
|
||||||
- validate-source-maps-beta:
|
- validate-source-maps-beta:
|
||||||
requires:
|
requires:
|
||||||
- prep-build-beta
|
- trigger-beta-build
|
||||||
- validate-source-maps-desktop:
|
- validate-source-maps-desktop:
|
||||||
requires:
|
requires:
|
||||||
- prep-build-desktop
|
- prep-build-desktop
|
||||||
@ -144,9 +147,10 @@ workflows:
|
|||||||
- prep-deps
|
- prep-deps
|
||||||
- prep-build
|
- prep-build
|
||||||
- test-mozilla-lint-beta:
|
- test-mozilla-lint-beta:
|
||||||
|
<<: *rc_branch_only
|
||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
- prep-build-beta
|
- trigger-beta-build
|
||||||
- test-mozilla-lint-desktop:
|
- test-mozilla-lint-desktop:
|
||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
@ -195,7 +199,7 @@ workflows:
|
|||||||
requires:
|
requires:
|
||||||
- prep-deps
|
- prep-deps
|
||||||
- prep-build
|
- prep-build
|
||||||
- prep-build-beta
|
- trigger-beta-build
|
||||||
- prep-build-desktop
|
- prep-build-desktop
|
||||||
- prep-build-flask
|
- prep-build-flask
|
||||||
- prep-build-storybook
|
- prep-build-storybook
|
||||||
@ -230,6 +234,35 @@ workflows:
|
|||||||
- prep-build-ts-migration-dashboard
|
- prep-build-ts-migration-dashboard
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
trigger-beta-build:
|
||||||
|
executor: node-browsers-medium-plus
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- attach_workspace:
|
||||||
|
at: .
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
not:
|
||||||
|
matches:
|
||||||
|
pattern: /^master$/
|
||||||
|
value: << pipeline.git.branch >>
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Build beta prod
|
||||||
|
command: |
|
||||||
|
.circleci/scripts/trigger-beta-build.sh
|
||||||
|
- run:
|
||||||
|
name: Move beta build to 'dist-beta' to avoid conflict with production build
|
||||||
|
command: mv ./dist ./dist-beta
|
||||||
|
- run:
|
||||||
|
name: Move beta zips to 'builds-beta' to avoid conflict with production build
|
||||||
|
command: mv ./builds ./builds-beta
|
||||||
|
- persist_to_workspace:
|
||||||
|
root: .
|
||||||
|
paths:
|
||||||
|
- dist-beta
|
||||||
|
- builds-beta
|
||||||
|
|
||||||
create_release_pull_request:
|
create_release_pull_request:
|
||||||
executor: node-browsers
|
executor: node-browsers
|
||||||
steps:
|
steps:
|
||||||
@ -348,46 +381,6 @@ jobs:
|
|||||||
- dist
|
- dist
|
||||||
- builds
|
- builds
|
||||||
|
|
||||||
prep-build-beta:
|
|
||||||
executor: node-browsers-medium-plus
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- attach_workspace:
|
|
||||||
at: .
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
not:
|
|
||||||
matches:
|
|
||||||
pattern: /^master$/
|
|
||||||
value: << pipeline.git.branch >>
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: build:dist
|
|
||||||
command: yarn build --build-type beta dist
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
matches:
|
|
||||||
pattern: /^master$/
|
|
||||||
value: << pipeline.git.branch >>
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: build:prod
|
|
||||||
command: yarn build --build-type beta prod
|
|
||||||
- run:
|
|
||||||
name: build:debug
|
|
||||||
command: find dist/ -type f -exec md5sum {} \; | sort -k 2
|
|
||||||
- run:
|
|
||||||
name: Move beta build to 'dist-beta' to avoid conflict with production build
|
|
||||||
command: mv ./dist ./dist-beta
|
|
||||||
- run:
|
|
||||||
name: Move beta zips to 'builds-beta' to avoid conflict with production build
|
|
||||||
command: mv ./builds ./builds-beta
|
|
||||||
- persist_to_workspace:
|
|
||||||
root: .
|
|
||||||
paths:
|
|
||||||
- dist-beta
|
|
||||||
- builds-beta
|
|
||||||
|
|
||||||
prep-build-desktop:
|
prep-build-desktop:
|
||||||
executor: node-browsers-medium-plus
|
executor: node-browsers-medium-plus
|
||||||
steps:
|
steps:
|
||||||
@ -659,7 +652,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- run:
|
- run:
|
||||||
name: Validate release candidate changelog
|
name: Validate release candidate changelog
|
||||||
command: yarn lint:changelog:rc
|
command: .circleci/scripts/validate-changelog-in-rc.sh
|
||||||
|
|
||||||
test-deps-audit:
|
test-deps-audit:
|
||||||
executor: node-browsers
|
executor: node-browsers
|
||||||
@ -1226,7 +1219,8 @@ jobs:
|
|||||||
command: mv ./builds-beta ./builds
|
command: mv ./builds-beta ./builds
|
||||||
- run:
|
- run:
|
||||||
name: Validate source maps
|
name: Validate source maps
|
||||||
command: yarn validate-source-maps
|
command: |
|
||||||
|
.circleci/scripts/validate-source-maps-beta.sh
|
||||||
|
|
||||||
validate-source-maps-desktop:
|
validate-source-maps-desktop:
|
||||||
executor: node-browsers
|
executor: node-browsers
|
||||||
|
@ -18,8 +18,15 @@ fi
|
|||||||
|
|
||||||
printf '%s\n' 'Updating the manifest version if needed'
|
printf '%s\n' 'Updating the manifest version if needed'
|
||||||
|
|
||||||
version="${CIRCLE_BRANCH/Version-v/}"
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
||||||
yarn version "${version}"
|
if [[ $current_commit_msg =~ Version[[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[-]beta.[[:digit:]]) ]]
|
||||||
|
then
|
||||||
|
printf '%s\n' 'manifest version will not be updated for beta commit'
|
||||||
|
# escape version update everytime a new change pushed to release branch
|
||||||
|
else
|
||||||
|
version="${CIRCLE_BRANCH/Version-v/}"
|
||||||
|
yarn version "${version}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z $(git status --porcelain) ]]
|
if [[ -z $(git status --porcelain) ]]
|
||||||
then
|
then
|
||||||
|
24
.circleci/scripts/trigger-beta-build.sh
Executable file
24
.circleci/scripts/trigger-beta-build.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# => Version-v10.24.1
|
||||||
|
version="${CIRCLE_BRANCH/Version-v/}"
|
||||||
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
||||||
|
|
||||||
|
if [[ $current_commit_msg =~ Version[[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[-]beta.[[:digit:]]) ]]
|
||||||
|
then
|
||||||
|
# filter the commit message like Version v10.24.1-beta.1
|
||||||
|
printf '%s\n' "Create a build for $version with beta version $current_commit_msg"
|
||||||
|
yarn build --build-type beta dist
|
||||||
|
yarn build --build-type beta prod
|
||||||
|
else
|
||||||
|
printf '%s\n' 'Commit message does not match commit message for beta pattern; skipping beta automation build'
|
||||||
|
mkdir dist
|
||||||
|
mkdir builds
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
17
.circleci/scripts/validate-changelog-in-rc.sh
Normal file
17
.circleci/scripts/validate-changelog-in-rc.sh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
||||||
|
|
||||||
|
if [[ $current_commit_msg =~ Version[[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[-]beta.[[:digit:]]) ]]
|
||||||
|
then
|
||||||
|
printf '%s\n' 'Skip changelog validation for beta commit'
|
||||||
|
else
|
||||||
|
printf '%s\n' 'Validate changelog for release candidate'
|
||||||
|
yarn lint:changelog:rc
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
20
.circleci/scripts/validate-source-maps-beta.sh
Executable file
20
.circleci/scripts/validate-source-maps-beta.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# => Version-v10.24.1
|
||||||
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
||||||
|
|
||||||
|
if [[ $current_commit_msg =~ Version[[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[-]beta.[[:digit:]]) ]]
|
||||||
|
then
|
||||||
|
# filter the commit message like Version v10.24.1-beta.1
|
||||||
|
printf '%s\n' "Validate source maps with beta version $current_commit_msg"
|
||||||
|
yarn validate-source-maps
|
||||||
|
else
|
||||||
|
printf '%s\n' 'Commit message does not match commit message for beta pattern; skipping validation of beta source maps'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
@ -45,14 +45,16 @@ function getBrowserVersionMap(platforms, version) {
|
|||||||
const minor = semver.minor(version);
|
const minor = semver.minor(version);
|
||||||
const patch = semver.patch(version);
|
const patch = semver.patch(version);
|
||||||
const prerelease = semver.prerelease(version);
|
const prerelease = semver.prerelease(version);
|
||||||
|
let buildType, buildVersionSummary, buildVersion;
|
||||||
let buildType;
|
|
||||||
let buildVersion;
|
|
||||||
if (prerelease) {
|
if (prerelease) {
|
||||||
if (prerelease.length !== 2) {
|
[buildType, buildVersionSummary] = prerelease;
|
||||||
throw new Error(`Invalid prerelease version: '${prerelease.join('.')}'`);
|
// The version could be version: '10.25.0-beta.1-flask.0',
|
||||||
}
|
// That results in buildVersionSummary becomes 1-flask
|
||||||
[buildType, buildVersion] = prerelease;
|
// And we only want 1 from this string
|
||||||
|
buildVersion =
|
||||||
|
typeof buildVersionSummary === 'string'
|
||||||
|
? Number(buildVersionSummary.match(/\d+(?:\.\d+)?/u)[0])
|
||||||
|
: buildVersionSummary;
|
||||||
if (!String(buildVersion).match(/^\d+$/u)) {
|
if (!String(buildVersion).match(/^\d+$/u)) {
|
||||||
throw new Error(`Invalid prerelease build version: '${buildVersion}'`);
|
throw new Error(`Invalid prerelease build version: '${buildVersion}'`);
|
||||||
} else if (
|
} else if (
|
||||||
|
@ -13,7 +13,7 @@ const { BuildType } = require('./build-type');
|
|||||||
* @returns {string} The MetaMask extension version.
|
* @returns {string} The MetaMask extension version.
|
||||||
*/
|
*/
|
||||||
function getVersion(buildType, buildVersion) {
|
function getVersion(buildType, buildVersion) {
|
||||||
return buildType === BuildType.main
|
return buildType === BuildType.main || buildType === BuildType.beta
|
||||||
? manifestVersion
|
? manifestVersion
|
||||||
: `${manifestVersion}-${buildType}.${buildVersion}`;
|
: `${manifestVersion}-${buildType}.${buildVersion}`;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const { promises: fs } = require('fs');
|
const { promises: fs } = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
// Fetch is part of node js in future versions, thus triggering no-shadow
|
// Fetch is part of node js in future versions, thus triggering no-shadow
|
||||||
@ -34,7 +35,6 @@ async function start() {
|
|||||||
const CIRCLE_PR_NUMBER = CIRCLE_PULL_REQUEST.split('/').pop();
|
const CIRCLE_PR_NUMBER = CIRCLE_PULL_REQUEST.split('/').pop();
|
||||||
const SHORT_SHA1 = CIRCLE_SHA1.slice(0, 7);
|
const SHORT_SHA1 = CIRCLE_SHA1.slice(0, 7);
|
||||||
const BUILD_LINK_BASE = `https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/0`;
|
const BUILD_LINK_BASE = `https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/0`;
|
||||||
|
|
||||||
// build the github comment content
|
// build the github comment content
|
||||||
|
|
||||||
// links to extension builds
|
// links to extension builds
|
||||||
|
Loading…
Reference in New Issue
Block a user