Skip to content

Commit 1d6a0d5

Browse files
committed
Merge branch 'main' into defi-better-polling
2 parents ce6f421 + 54b58db commit 1d6a0d5

File tree

985 files changed

+30082
-13350
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

985 files changed

+30082
-13350
lines changed

.github/actions/page-load-benchmark-comment/action.yml

Lines changed: 0 additions & 32 deletions
This file was deleted.

.github/scripts/benchmark-stats-commit.sh

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ if [[ -z "${EXTENSION_BENCHMARK_STATS_TOKEN:-}" ]]; then
99
exit 1
1010
fi
1111

12-
if [[ -z "${GITHUB_SHA:-}" ]]; then
13-
printf '%s\n' 'GITHUB_SHA environment variable must be set'
12+
if [[ -z "${HEAD_COMMIT_HASH:-}" ]]; then
13+
printf '%s\n' 'HEAD_COMMIT_HASH environment variable must be set'
1414
exit 1
1515
fi
1616

17-
if [[ -z "${GITHUB_REPOSITORY_OWNER:-}" ]]; then
18-
printf '%s\n' 'GITHUB_REPOSITORY_OWNER environment variable must be set'
17+
if [[ -z "${OWNER:-}" ]]; then
18+
printf '%s\n' 'OWNER environment variable must be set'
1919
exit 1
2020
fi
2121

@@ -33,7 +33,7 @@ git fetch origin main:main
3333

3434
git checkout main
3535

36-
BENCHMARK_FILE="../test-artifacts/benchmarks/benchmark-results.json"
36+
BENCHMARK_FILE="../test-artifacts/benchmarks/page-load-benchmark-results.json"
3737
STATS_FILE="stats/page_load_data.json"
3838
TEMP_FILE="stats/page_load_data.temp.json"
3939

@@ -53,13 +53,13 @@ jq . "${BENCHMARK_FILE}" > /dev/null || {
5353
}
5454

5555
# Check if the SHA already exists in the stats file
56-
if jq -e "has(\"${GITHUB_SHA}\")" "${STATS_FILE}" > /dev/null; then
57-
echo "SHA ${GITHUB_SHA} already exists in stats file. No new commit needed."
56+
if jq -e "has(\"${HEAD_COMMIT_HASH}\")" "${STATS_FILE}" > /dev/null; then
57+
echo "SHA ${HEAD_COMMIT_HASH} already exists in stats file. No new commit needed."
5858
exit 0
5959
fi
6060

6161
# Append new benchmark data correctly using jq
62-
jq --arg sha "${GITHUB_SHA}" --argjson data "$(cat "${BENCHMARK_FILE}")" \
62+
jq --arg sha "${HEAD_COMMIT_HASH}" --argjson data "$(cat "${BENCHMARK_FILE}")" \
6363
'. + {($sha): $data}' "${STATS_FILE}" > "${TEMP_FILE}"
6464

6565
# Overwrite the original JSON file with the corrected version
@@ -68,9 +68,9 @@ mv "${TEMP_FILE}" "${STATS_FILE}"
6868
# Only add the JSON file
6969
git add stats/page_load_data.json
7070

71-
git commit --message "Adding page load benchmark data at commit: ${GITHUB_SHA}"
71+
git commit --message "Adding page load benchmark data at commit: ${HEAD_COMMIT_HASH}"
7272

73-
repo_slug="${GITHUB_REPOSITORY_OWNER}/extension_benchmark_stats"
73+
repo_slug="${OWNER}/extension_benchmark_stats"
7474

7575
git push "https://metamaskbot:${EXTENSION_BENCHMARK_STATS_TOKEN}@github.com/${repo_slug}" main
7676

.github/workflows/fitness-functions.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

.github/workflows/main.yml

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ on:
2222
- cron: '0 2-6 * * *'
2323

2424
concurrency:
25-
group: ${{ github.workflow }}-${{ github.ref }}
25+
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.sha || github.ref }}
2626
cancel-in-progress: ${{ !(contains(github.ref, 'refs/heads/main') || contains(github.ref, 'refs/heads/stable')) }}
2727

2828
env:
@@ -241,22 +241,15 @@ jobs:
241241
s3-bucket: ${{ vars.AWS_S3_BUCKET }}/${{ github.event.repository.name }}/${{ github.run_id }}/bundle-size
242242
path: test-artifacts/chrome
243243

244-
page-load-benchmark-pr:
244+
page-load-benchmark:
245245
needs:
246246
- build-test-browserify
247-
if: ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_name == 'main') }}
248-
uses: ./.github/workflows/page-load-benchmark-pr.yml
249-
with:
250-
browser-loads: '10'
251-
page-loads: '10'
252-
253-
page-load-benchmark-upload:
254-
needs:
255-
- page-load-benchmark-pr
256-
if: github.ref == 'refs/heads/main'
257-
uses: ./.github/workflows/page-load-benchmark-upload.yml
247+
uses: ./.github/workflows/page-load-benchmark.yml
258248
secrets:
259249
EXTENSION_BENCHMARK_STATS_TOKEN: ${{ secrets.EXTENSION_BENCHMARK_STATS_TOKEN }}
250+
with:
251+
browser-loads: 10
252+
page-loads: 10
260253

261254
needs-e2e:
262255
needs:
@@ -336,6 +329,7 @@ jobs:
336329
runs-on: ubuntu-latest
337330
timeout-minutes: 30
338331
env:
332+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
339333
INFURA_PROJECT_ID: ${{ secrets.INFURA_PROJECT_ID }}
340334
GOOGLE_PROD_CLIENT_ID: 00000000000
341335
APPLE_PROD_CLIENT_ID: 00000000000
@@ -345,7 +339,8 @@ jobs:
345339
APPLE_EXPERIMENTAL_CLIENT_ID: 00000000000
346340
GOOGLE_FLASK_CLIENT_ID: 00000000000
347341
APPLE_FLASK_CLIENT_ID: 00000000000
348-
342+
outputs:
343+
lavamoat-policy-changed: ${{ steps.lavamoat-policy-changed.outputs.lavamoat-policy-changed }}
349344
steps:
350345
- name: Checkout and setup environment
351346
uses: MetaMask/action-checkout-and-setup@v1
@@ -354,15 +349,47 @@ jobs:
354349
skip-allow-scripts: true
355350
use-yarn-hydrate: true
356351

352+
- name: Download changed-files artifact
353+
if: ${{ env.BRANCH != 'main' }}
354+
id: download-changed-files
355+
continue-on-error: true
356+
uses: actions/download-artifact@v4
357+
with:
358+
name: changed-files
359+
path: ./changed-files/
360+
361+
# if the changed-files artifact does not exist, we get the diff
362+
- run: yarn tsx .github/scripts/git-diff-default-branch.ts
363+
if: ${{ steps.download-changed-files.outcome == 'failure' }}
364+
365+
- name: See if lavamoat policy files have changed
366+
id: lavamoat-policy-changed
367+
run: |
368+
# if 'changed-files/changed-files.json' exists, check if it contains any files named policy.json or policy-override.json
369+
if [ -f "changed-files/changed-files.json" ]; then
370+
if grep -q -e 'policy.json' -e 'policy-override.json' changed-files/changed-files.json; then
371+
echo "Lavamoat policy file changes detected."
372+
echo "lavamoat-policy-changed=true" >> "$GITHUB_OUTPUT"
373+
else
374+
echo "No Lavamoat policy file changes detected."
375+
echo "lavamoat-policy-changed=false" >> "$GITHUB_OUTPUT"
376+
fi
377+
else
378+
echo "Cannot find 'changed-files.json', assuming that Lavamoat policy files have changed."
379+
echo "lavamoat-policy-changed=true" >> "$GITHUB_OUTPUT"
380+
fi
381+
357382
- name: Download artifact 'build-dist-browserify'
383+
if: ${{ steps.lavamoat-policy-changed.outputs.lavamoat-policy-changed == 'true' }}
358384
uses: actions/download-artifact@v4
359385
with:
360386
name: build-dist-browserify
361387

362388
- run: ./.github/scripts/create-lavamoat-viz.sh
389+
if: ${{ steps.lavamoat-policy-changed.outputs.lavamoat-policy-changed == 'true' }}
363390

364391
- name: Upload 'build-viz' to S3
365-
if: ${{ vars.AWS_REGION && vars.AWS_IAM_ROLE && vars.AWS_S3_BUCKET }}
392+
if: ${{ steps.lavamoat-policy-changed.outputs.lavamoat-policy-changed == 'true' && vars.AWS_REGION && vars.AWS_IAM_ROLE && vars.AWS_S3_BUCKET }}
366393
uses: metamask/github-tools/.github/actions/upload-s3@1233659b3850eb84824d7375e2e0c58eb237701d
367394
with:
368395
aws-region: ${{ vars.AWS_REGION }}
@@ -372,6 +399,7 @@ jobs:
372399

373400
publish-prerelease:
374401
name: Publish prerelease
402+
if: ${{ github.event_name != 'merge_group' }} # Skip this job for the Merge Queue
375403
needs:
376404
- build-dist-browserify
377405
- build-dist-mv2-browserify
@@ -384,12 +412,15 @@ jobs:
384412
- build-test-flask-browserify
385413
- build-test-flask-mv2-browserify
386414
- run-benchmarks
415+
- page-load-benchmark
387416
- bundle-size
388417
- build-storybook
389418
- build-ts-migration-dashboard
390419
- build-source-map-explorer
391420
- build-lavamoat-viz
392421
uses: ./.github/workflows/publish-prerelease.yml
422+
with:
423+
lavamoat-policy-changed: ${{ needs.build-lavamoat-viz.outputs.lavamoat-policy-changed == 'true' }}
393424
secrets:
394425
PR_COMMENT_TOKEN: ${{ secrets.PR_COMMENT_TOKEN }}
395426

.github/workflows/page-load-benchmark-upload.yml

Lines changed: 0 additions & 38 deletions
This file was deleted.

.github/workflows/page-load-benchmark-pr.yml renamed to .github/workflows/page-load-benchmark.yml

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ on:
66
browser-loads:
77
description: 'Number of browser loads to perform'
88
required: false
9-
type: string
10-
default: '10'
9+
type: number
10+
default: 10
1111
page-loads:
1212
description: 'Number of page loads per browser'
1313
required: false
14-
type: string
15-
default: '10'
14+
type: number
15+
default: 10
16+
secrets:
17+
EXTENSION_BENCHMARK_STATS_TOKEN:
18+
required: true
1619

1720
jobs:
1821
page-load-benchmark-pr:
@@ -23,28 +26,42 @@ jobs:
2326
OWNER: ${{ github.repository_owner }}
2427
REPOSITORY: ${{ github.event.repository.name }}
2528
PR_NUMBER: ${{ github.event.pull_request.number }}
26-
GITHUB_SHA: ${{ github.event.pull_request.head.sha }}
29+
HEAD_COMMIT_HASH: ${{ github.event.pull_request.head.sha || github.sha }}
30+
BENCHMARK_BROWSER_LOADS: ${{ inputs.browser-loads }}
31+
BENCHMARK_PAGE_LOADS: ${{ inputs.page-loads }}
32+
IS_PR_OR_MAIN: ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_name == 'main') }}
2733
steps:
2834
- name: Checkout and setup environment
35+
if: ${{ env.IS_PR_OR_MAIN }}
2936
uses: MetaMask/action-checkout-and-setup@v1
3037
with:
3138
is-high-risk-environment: false
3239
skip-allow-scripts: true
3340
use-yarn-hydrate: true
3441

3542
- name: Download artifact 'build-test-browserify'
43+
if: ${{ env.IS_PR_OR_MAIN }}
3644
uses: actions/download-artifact@v4
3745
with:
3846
name: build-test-browserify
3947

4048
- name: Install Playwright browsers
49+
if: ${{ env.IS_PR_OR_MAIN }}
4150
run: yarn playwright install chromium
4251

4352
- name: Run page load benchmarks
53+
if: ${{ env.IS_PR_OR_MAIN }}
4454
run: yarn test:e2e:benchmark
4555

4656
- name: Upload benchmark results (github artifacts)
57+
if: ${{ env.IS_PR_OR_MAIN }}
4758
uses: actions/upload-artifact@v4
4859
with:
49-
name: benchmark-results
50-
path: test-artifacts/benchmarks/benchmark-results.json
60+
name: page-load-benchmark-results
61+
path: test-artifacts/benchmarks/page-load-benchmark-results.json
62+
63+
- name: Upload benchmark results (historical data)
64+
if: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
65+
run: .github/scripts/benchmark-stats-commit.sh
66+
env:
67+
EXTENSION_BENCHMARK_STATS_TOKEN: ${{ secrets.EXTENSION_BENCHMARK_STATS_TOKEN }}

.github/workflows/publish-prerelease.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ on:
55
secrets:
66
PR_COMMENT_TOKEN:
77
required: true
8+
inputs:
9+
lavamoat-policy-changed:
10+
description: 'Whether the Lavamoat policy files have changed'
11+
required: true
12+
type: boolean
813

914
jobs:
1015
publish-prerelease:
@@ -25,6 +30,7 @@ jobs:
2530
MERGE_BASE_COMMIT_HASH: '' # placeholder so that we have autocomplete and logs
2631
CLOUDFRONT_REPO_URL: ${{ vars.AWS_CLOUDFRONT_URL }}/${{ github.event.repository.name }}
2732
HOST_URL: ${{ vars.AWS_CLOUDFRONT_URL }}/${{ github.event.repository.name }}/${{ github.run_id }}
33+
LAVAMOAT_POLICY_CHANGED: ${{ inputs.lavamoat-policy-changed }}
2834
steps:
2935
- name: Checkout and setup high risk environment
3036
uses: MetaMask/action-checkout-and-setup@v1
@@ -61,12 +67,12 @@ jobs:
6167
echo "MERGE_BASE_COMMIT_HASH=${merge_base_commit_hash}" >> "${GITHUB_ENV}"
6268
echo "The merge base commit hash is '${merge_base_commit_hash}'"
6369
64-
- name: Page load benchmark comment
70+
- name: Download page load benchmark results
6571
if: ${{ github.event_name == 'pull_request' }}
66-
uses: ./.github/actions/page-load-benchmark-comment
72+
uses: actions/download-artifact@v4
6773
with:
68-
head-commit-hash: ${{ env.HEAD_COMMIT_HASH }}
69-
pr-comment-token: ${{ secrets.PR_COMMENT_TOKEN }}
74+
name: page-load-benchmark-results
75+
path: test-artifacts/benchmarks
7076

7177
- name: Publish prerelease
7278
if: ${{ env.MERGE_BASE_COMMIT_HASH && env.PR_NUMBER && env.PR_COMMENT_TOKEN && vars.AWS_CLOUDFRONT_URL }}

0 commit comments

Comments
 (0)