Skip to content

Commit d86c918

Browse files
authored
[BRE-1303] Providing method for pinning Chrome extension ID for dev (#17432)
1 parent 6d1c474 commit d86c918

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

.github/workflows/build-browser.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,20 +218,24 @@ jobs:
218218
source_archive_name_prefix: ""
219219
archive_name_prefix: ""
220220
npm_command_prefix: "dist:"
221+
npm_package_dev_prefix: "package:dev:"
221222
readable: "open source license"
222223
type: "oss"
223224
- build_prefix: "bit-"
224225
artifact_prefix: "bit-"
225226
source_archive_name_prefix: "bit-"
226227
archive_name_prefix: "bit-"
227228
npm_command_prefix: "dist:bit:"
229+
npm_package_dev_prefix: "package:bit:dev:"
228230
readable: "commercial license"
229231
type: "commercial"
230232
browser:
231233
- name: "chrome"
232234
npm_command_suffix: "chrome"
233235
archive_name: "dist-chrome.zip"
234236
artifact_name: "dist-chrome-MV3"
237+
artifact_name_dev: "dev-chrome-MV3"
238+
archive_name_dev: "dev-chrome.zip"
235239
- name: "edge"
236240
npm_command_suffix: "edge"
237241
archive_name: "dist-edge.zip"
@@ -338,6 +342,19 @@ jobs:
338342
path: browser-source/apps/browser/dist/${{matrix.license_type.archive_name_prefix}}${{ matrix.browser.archive_name }}
339343
if-no-files-found: error
340344

345+
- name: Package dev extension
346+
if: ${{ matrix.browser.archive_name_dev != '' }}
347+
run: npm run ${{ matrix.license_type.npm_package_dev_prefix }}${{ matrix.browser.npm_command_suffix }}
348+
working-directory: browser-source/apps/browser
349+
350+
- name: Upload dev extension artifact
351+
if: ${{ matrix.browser.archive_name_dev != '' }}
352+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
353+
with:
354+
name: ${{ matrix.license_type.artifact_prefix }}${{ matrix.browser.artifact_name_dev }}-${{ env._BUILD_NUMBER }}.zip
355+
path: browser-source/apps/browser/dist/${{matrix.license_type.archive_name_prefix}}${{ matrix.browser.archive_name_dev }}
356+
if-no-files-found: error
357+
341358

342359
build-safari:
343360
name: Build Safari - ${{ matrix.license_type.readable }}

apps/browser/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"build:bit": "npm run build:bit:chrome",
77
"build:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
88
"build:bit:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-browser/webpack.config.js",
9+
"build:dev:chrome": "npm run build:chrome && npm run update:dev:chrome",
10+
"build:bit:dev:chrome": "npm run build:bit:chrome && npm run update:dev:chrome",
911
"build:edge": "cross-env BROWSER=edge MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
1012
"build:bit:edge": "cross-env BROWSER=edge MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-browser/webpack.config.js",
1113
"build:firefox": "cross-env BROWSER=firefox NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
@@ -55,9 +57,12 @@
5557
"dist:bit:opera:mv3": "cross-env MANIFEST_VERSION=3 npm run dist:bit:opera",
5658
"dist:safari:mv3": "cross-env MANIFEST_VERSION=3 npm run dist:safari",
5759
"dist:bit:safari:mv3": "cross-env MANIFEST_VERSION=3 npm run dist:bit:safari",
60+
"package:dev:chrome": "npm run update:dev:chrome && ./scripts/compress.sh dev-chrome.zip",
61+
"package:bit:dev:chrome": "npm run update:dev:chrome && ./scripts/compress.sh bit-dev-chrome.zip",
5862
"test": "jest",
5963
"test:watch": "jest --watch",
6064
"test:watch:all": "jest --watchAll",
61-
"test:clearCache": "jest --clear-cache"
65+
"test:clearCache": "jest --clear-cache",
66+
"update:dev:chrome": "./scripts/update-manifest-dev.sh"
6267
}
6368
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env bash
2+
3+
####
4+
# Update the manifest key in the build directory.
5+
####
6+
7+
set -e
8+
set -u
9+
set -x
10+
set -o pipefail
11+
12+
SCRIPT_ROOT="$(dirname "$0")"
13+
BUILD_DIR="$SCRIPT_ROOT/../build"
14+
15+
# Check if build directory exists
16+
if [ -d "$BUILD_DIR" ]; then
17+
cd "$BUILD_DIR"
18+
19+
# Update manifest with dev public key
20+
MANIFEST_PATH="./manifest.json"
21+
22+
# Generated arbitrary public key from Chrome Dev Console to pin side-loaded extension IDs during development
23+
DEV_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuIvjtsAVWZM0i5jFhSZcrmwgaf3KWcxM5F16LNDNeivC1EqJ+H5xNZ5R9UN5ueHA2xyyYAOlxY07OcY6CKTGJRJyefbUhszb66sdx26SV5gVkCois99fKBlsbSbd6und/BJYmoFUWvFCNNVH+OxLMqMQWjMMhM2ItLqTYi7dxRE5qd+7LwQpnGG2vTkm/O7nu8U3CtkfcIAGLsiTd7/iuytcMDnC0qFM5tJyY/5I+9QOhpUJ7Ybj3C18BDWDORhqxutWv+MSw//SgUn2/lPQrnrKq7FIVQL7FxxEPqkv4QwFvaixps1cBbMdJ1Ygit1z5JldoSyNxzCa5vVcJLecMQIDAQAB'
24+
25+
MANIFEST_PATH_TMP="${MANIFEST_PATH}.tmp"
26+
if jq --arg key "$DEV_PUBLIC_KEY" '.key = $key' "$MANIFEST_PATH" > "$MANIFEST_PATH_TMP"; then
27+
mv "$MANIFEST_PATH_TMP" "$MANIFEST_PATH"
28+
echo "Updated manifest key in $MANIFEST_PATH"
29+
else
30+
echo "ERROR: Failed to update manifest with jq"
31+
rm -f "$MANIFEST_PATH_TMP"
32+
exit 1
33+
fi
34+
fi

0 commit comments

Comments
 (0)