Skip to content

ci: a new prep-deps workflow with caching #56600

ci: a new prep-deps workflow with caching

ci: a new prep-deps workflow with caching #56600

Workflow file for this run

name: Main
on:
push:
branches:
- main
- master
- Version-v*
- trigger-ci*
pull_request:
types:
- opened
- reopened
- synchronize
merge_group:
jobs:
prep-deps:
runs-on: ubuntu-latest
steps:
- name: Setup environment
uses: metamask/github-tools/.github/actions/setup-environment@caching
with:
should-cache-restore: 'false'
should-cache-save: ${{ vars.USE_CACHING }}
# -- If you're a repo admin, you can change vars.USE_CACHING at:
# https://github.com/MetaMask/metamask-extension/settings/variables/actions
# -- If you're just a contributor, you can change vars.USE_CACHING by following this documentation:
# https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#update-a-repository-variable
lint-workflows:
name: Lint workflows
uses: metamask/github-tools/.github/workflows/lint-workflows.yml@caching
test-lint:
needs: prep-deps
uses: ./.github/workflows/test-lint.yml
test-short-suite:
needs: prep-deps
uses: ./.github/workflows/test-short-suite.yml
test-storybook:
name: Test storybook
needs: prep-deps
uses: ./.github/workflows/test-storybook.yml
validate-lavamoat-policy-build:
needs: prep-deps
uses: ./.github/workflows/validate-lavamoat-policy-build.yml
validate-lavamoat-policy-webapp:
needs: prep-deps
uses: ./.github/workflows/validate-lavamoat-policy-webapp.yml
prep-build-test-webpack:
needs: prep-deps
runs-on: ubuntu-latest
steps:
- name: Setup environment
uses: metamask/github-tools/.github/actions/setup-environment@caching
with:
should-cache-restore: ${{ vars.USE_CACHING }}
- run: yarn webpack --test --no-lavamoat --no-cache --browser=chrome --lockdown --sentry --snow --env production
env:
SEGMENT_PROD_WRITE_KEY: '-' # A fake key just to make the build succeed
- name: Upload artifact prep-build-test-webpack
uses: actions/upload-artifact@v4
with:
name: prep-build-test-webpack
path: ./dist/
retention-days: 1
run-tests:
name: Run tests
needs: prep-deps
uses: ./.github/workflows/run-tests.yml
run-pageload-benchmark:
name: Run Benchmarks # So that the level 1 name will be "Run Benchmarks" in the GitHub Actions UI
needs: prep-build-test-webpack
uses: ./.github/workflows/benchmarks.yml
with:
name: run-pageload-benchmark # The level 2 name
command: 'yarn benchmark:chrome --out test-artifacts/chrome/benchmark/pageload.json --retries 2'
run-user-actions-benchmark:
name: Run Benchmarks # So that the level 1 name will be "Run Benchmarks" in the GitHub Actions UI
needs: prep-build-test-webpack
uses: ./.github/workflows/benchmarks.yml
with:
name: run-user-actions-benchmark # The level 2 name
command: 'yarn user-actions-benchmark:chrome --out test-artifacts/chrome/benchmark/user_actions.json --retries 2'
wait-for-circleci-workflow-status:
name: Wait for CircleCI workflow status
uses: ./.github/workflows/wait-for-circleci-workflow-status.yml
runway:
name: Runway
# For a `pull_request` event, the branch is `github.head_ref``.
# For a `push` event, the branch is `github.ref_name`.
if: ${{ startsWith(github.head_ref || github.ref_name, 'Version-v') }}
needs:
- wait-for-circleci-workflow-status
uses: ./.github/workflows/runway.yml
build-storybook:
name: Build storybook
uses: ./.github/workflows/build-storybook.yml
permissions:
contents: read
# id-token permission is required for uploading to s3
id-token: write
build-beta:
name: Build beta
uses: ./.github/workflows/build-beta.yml
permissions:
contents: read
# id-token permission is required for uploading to s3
id-token: write
publish-prerelease:
name: Publish prerelease
if: ${{ github.event_name == 'pull_request' }}
needs:
- wait-for-circleci-workflow-status
- build-storybook
- build-beta
uses: ./.github/workflows/publish-prerelease.yml
secrets:
PR_COMMENT_TOKEN: ${{ secrets.PR_COMMENT_TOKEN }}
# Explanation for all-jobs-completed and all-jobs-pass being separate:
# https://github.com/MetaMask/metamask-module-template/pull/151
all-jobs-completed:
name: All jobs completed
runs-on: ubuntu-latest
needs:
- lint-workflows
- test-lint
- test-short-suite
- validate-lavamoat-policy-build
- validate-lavamoat-policy-webapp
- run-tests
# - run-pageload-benchmark # Will enable this as a required job in a later PR
# - run-user-actions-benchmark # Will enable this as a required job in a later PR
- wait-for-circleci-workflow-status
- build-beta
outputs:
PASSED: ${{ steps.set-output.outputs.PASSED }}
steps:
- name: Set PASSED output
id: set-output
run: echo "PASSED=true" >> "$GITHUB_OUTPUT"
all-jobs-pass:
name: All jobs pass
if: ${{ always() }}
runs-on: ubuntu-latest
needs:
- all-jobs-completed
steps:
- name: Check that all jobs have passed
run: |
passed="${{ needs.all-jobs-completed.outputs.PASSED }}"
if [[ $passed != "true" ]]; then
exit 1
fi
log-merge-group-failure:
name: Log merge group failure
# Only run this job if the merge group event fails, skip on forks
if: ${{ github.event_name == 'merge_group' && failure() && !github.event.repository.fork }}
needs:
- all-jobs-pass
uses: metamask/github-tools/.github/workflows/log-merge-group-failure.yml@6bbad335a01fce1a9ec1eabd9515542c225d46c0
secrets:
GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
SPREADSHEET_ID: ${{ secrets.GOOGLE_MERGE_QUEUE_SPREADSHEET_ID }}
SHEET_NAME: ${{ secrets.GOOGLE_MERGE_QUEUE_SHEET_NAME }}