diff --git a/.github/workflows/publish-preview.yml b/.github/workflows/publish-preview.yml index f5570a80..0d448e03 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 @@ -46,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: @@ -100,7 +108,16 @@ 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 }} + env: ${{ fromJSON(secrets.BUILD_ENV || '{}') }} + run: ${{ inputs.build-command }} + + - name: Prepare preview manifests env: NPM_SCOPE: ${{ inputs.npm-scope }} COMMIT_SHA: ${{ steps.commit-sha.outputs.COMMIT_SHA }} @@ -139,10 +156,12 @@ 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 }} + env: ${{ fromJSON(secrets.BUILD_ENV || '{}') }} run: ${{ inputs.build-command }} - name: Upload build artifacts (monorepo) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5507b133..26e55194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ 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. +- 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] ### Fixed