From 4af6751c41ecff315ab6768d569b13a6d6e31f98 Mon Sep 17 00:00:00 2001 From: mikesposito Date: Wed, 20 May 2026 17:21:29 +0100 Subject: [PATCH 1/2] feat: add `is-snap` argument to `publish-preview.yml` workflow --- .github/workflows/publish-preview.yml | 20 +++++++++++++++++--- CHANGELOG.md | 6 ++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-preview.yml b/.github/workflows/publish-preview.yml index f5570a80..010d7389 100644 --- a/.github/workflows/publish-preview.yml +++ b/.github/workflows/publish-preview.yml @@ -23,6 +23,11 @@ on: type: boolean required: false default: true + is-snap: + description: 'Whether the consumer is a Snap. When true, the build runs before manifests are renamed so that snap artifacts (e.g. dist/bundle.js, snap.manifest.json) capture the original package name.' + type: boolean + required: false + default: false environment: description: 'GitHub environment for the publish job (e.g., default-branch). Empty = no gate.' type: string @@ -100,7 +105,15 @@ jobs: id: commit-sha run: echo "COMMIT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" - - name: Prepare preview builds + - name: Install dependencies (snap, pre-build) + if: ${{ inputs.is-snap }} + run: yarn install --no-immutable + + - name: Build (snap, pre-rename) + if: ${{ inputs.is-snap }} + run: ${{ inputs.build-command }} + + - name: Prepare preview manifests env: NPM_SCOPE: ${{ inputs.npm-scope }} COMMIT_SHA: ${{ steps.commit-sha.outputs.COMMIT_SHA }} @@ -139,10 +152,11 @@ jobs: prepare_manifest package.json fi - echo "Installing dependencies..." - yarn install --no-immutable + - name: Install dependencies + run: yarn install --no-immutable - name: Build + if: ${{ !inputs.is-snap }} run: ${{ inputs.build-command }} - name: Upload build artifacts (monorepo) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5507b133..d65a097e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add `is-snap` input to the `publish-preview` reusable workflow + - When set to `true`, the workflow installs dependencies and runs the build _before_ renaming workspace manifests to the preview NPM scope. This ensures snap artifacts (e.g. `dist/bundle.js`, `snap.manifest.json` and its `source.shasum`) are produced with the original `@metamask/...` package name. + - Defaults to `false` to preserve existing behavior for non-snap consumers. + ## [1.9.4] ### Fixed From 989eead933cc4e6e9713755c0638824bd50ff0eb Mon Sep 17 00:00:00 2001 From: mikesposito Date: Wed, 20 May 2026 18:29:09 +0100 Subject: [PATCH 2/2] feat: add BUILD_ENV secret to publish-preview workflow Allow callers to pass arbitrary build-time environment variables to the build step via a JSON object passed as a secret. This is needed by snap consumers whose build commands require additional configuration (e.g. API URLs, RPC endpoints) to produce valid preview builds. --- .github/workflows/publish-preview.yml | 5 +++++ CHANGELOG.md | 2 ++ 2 files changed, 7 insertions(+) diff --git a/.github/workflows/publish-preview.yml b/.github/workflows/publish-preview.yml index 010d7389..0d448e03 100644 --- a/.github/workflows/publish-preview.yml +++ b/.github/workflows/publish-preview.yml @@ -51,6 +51,9 @@ on: secrets: PUBLISH_PREVIEW_NPM_TOKEN: required: true + BUILD_ENV: + description: 'JSON object of environment variables to pass to the build step (e.g. ''{"FOO":"bar","API_URL":"https://..."}''). Use this for build-time configuration and secrets needed by the build command.' + required: false jobs: is-fork-pull-request: @@ -111,6 +114,7 @@ jobs: - name: Build (snap, pre-rename) if: ${{ inputs.is-snap }} + env: ${{ fromJSON(secrets.BUILD_ENV || '{}') }} run: ${{ inputs.build-command }} - name: Prepare preview manifests @@ -157,6 +161,7 @@ jobs: - name: Build if: ${{ !inputs.is-snap }} + env: ${{ fromJSON(secrets.BUILD_ENV || '{}') }} run: ${{ inputs.build-command }} - name: Upload build artifacts (monorepo) diff --git a/CHANGELOG.md b/CHANGELOG.md index d65a097e..26e55194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add `is-snap` input to the `publish-preview` reusable workflow - When set to `true`, the workflow installs dependencies and runs the build _before_ renaming workspace manifests to the preview NPM scope. This ensures snap artifacts (e.g. `dist/bundle.js`, `snap.manifest.json` and its `source.shasum`) are produced with the original `@metamask/...` package name. - Defaults to `false` to preserve existing behavior for non-snap consumers. +- Add `BUILD_ENV` secret input to the `publish-preview` reusable workflow + - Accepts a JSON object of environment variables that will be passed to the build step (e.g. `'{"API_URL":"https://...","LOG_LEVEL":"all"}'`). Useful when the build command needs additional configuration or secret values to produce a valid preview build. ## [1.9.4]