mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-21 17:37:01 +01:00
Fix non-preview draft PR builds (#20096)
Certain draft PRs that add new dependencies have been failing because CI will try to use the GitHub npm registry, which we use for preview builds. This registry does not have non-preview package versions, so the installation will fail if new non-preview dependencies are needed. CI has been updated to only use the GitHub npm registry when preview builds are detected in the manifest.
This commit is contained in:
parent
01a3a5d2c1
commit
7e824fdc5e
@ -350,27 +350,9 @@ jobs:
|
||||
# required and add the new dependencies, and the cache will be persisted.
|
||||
- dependency-cache-v1-
|
||||
- gh/install
|
||||
- run:
|
||||
name: Set IS_DRAFT environment variable
|
||||
command: |
|
||||
PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}"
|
||||
if [ -n "$PR_NUMBER" ]
|
||||
then
|
||||
echo "IS_DRAFT=$(gh pr view --json isDraft --jq '.isDraft' "$PR_NUMBER")" >> "$BASH_ENV"
|
||||
source "$BASH_ENV"
|
||||
else
|
||||
echo "Not a PR; skipping"
|
||||
fi
|
||||
- run:
|
||||
name: Install dependencies
|
||||
command: |
|
||||
if [[ $IS_DRAFT == 'true' ]]
|
||||
then
|
||||
# Use GitHub registry on draft PRs, allowing the use of preview builds
|
||||
METAMASK_NPM_REGISTRY=https://npm.pkg.github.com yarn --immutable
|
||||
else
|
||||
yarn --immutable
|
||||
fi
|
||||
command: .circleci/scripts/install-dependencies.sh
|
||||
- save_cache:
|
||||
key: dependency-cache-v1-{{ checksum "yarn.lock" }}
|
||||
paths:
|
||||
|
40
.circleci/scripts/install-dependencies.sh
Executable file
40
.circleci/scripts/install-dependencies.sh
Executable file
@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}"
|
||||
if [ -n "$PR_NUMBER" ]
|
||||
then
|
||||
IS_DRAFT="$(gh pr view --json isDraft --jq '.isDraft' "$PR_NUMBER")"
|
||||
else
|
||||
IS_DRAFT='false'
|
||||
fi
|
||||
|
||||
# Build query to see whether there are any "preview-like" packages in the manifest
|
||||
# A "preview-like" package is a `@metamask`-scoped package with a prerelease version that has no period.
|
||||
QUERY='.dependencies + .devDependencies' # Get list of all dependencies
|
||||
QUERY+=' | with_entries( select(.key | startswith("@metamask") ) )' # filter to @metamask-scoped packages
|
||||
QUERY+=' | to_entries[].value' # Get version ranges
|
||||
QUERY+=' | select(test("^\\d+\\.\\d+\\.\\d+-[^.]+$"))' # Get pinned versions where the prerelease part has no "."
|
||||
|
||||
# Use `-e` flag so that exit code indicates whether any matches were found
|
||||
if jq -e "${QUERY}" < ./package.json
|
||||
then
|
||||
echo "Preview builds detected"
|
||||
HAS_PREVIEW_BUILDS='true'
|
||||
else
|
||||
echo "No preview builds detected"
|
||||
HAS_PREVIEW_BUILDS='false'
|
||||
fi
|
||||
|
||||
if [[ $IS_DRAFT == 'true' && $HAS_PREVIEW_BUILDS == 'true' ]]
|
||||
then
|
||||
# Use GitHub registry on draft PRs, allowing the use of preview builds
|
||||
echo "Installing with preview builds"
|
||||
METAMASK_NPM_REGISTRY=https://npm.pkg.github.com yarn --immutable
|
||||
else
|
||||
echo "Installing without preview builds"
|
||||
yarn --immutable
|
||||
fi
|
Loading…
Reference in New Issue
Block a user