A GitHub action from Plasmo to publish your browser extension to every web store/add-ons marketplace. This action and its dependencies are open-sourced under the MIT license. The core modules are:
In order to use this action, you will need to create a json file that contains the keys and optional configuration for each browser you wish to publish to.
To help you create it, we have provided a JSON schema that can be used with editors that support it, such as Visual Studio Code. This schema will provide intellisense and validation to ensure that your configuration is correct.
{ "$schema": "https://github.com/PlasmoHQ/bpp/raw/main/keys.schema.json" }NOTE: You should only specify the browsers you wish to publish to. If there are any invalid configuration, the action will fail! I.e, no empty key allowed such as
"chrome": {}.
Each browser option is made of the following:
-
Mandatory browser specific tokens (see token guide)
-
Optional parameters:
-
zip: The zip file containing the extension. The manifest.json file must be in the root of the zip file.{version}can be used in the name and will be replaced by the version from your versionFile. -
file: An alias for the zip property. -
verbose: Enable verbose logging for the specific browser. -
versionFile: Relative path to a json file which has a version field. Defaults to package.json -
sourceZip: The zip file containing the source code for Firefox submissions. -
sourceandsourceFile: Aliases for thesourceZipproperty. -
notes: [Edge Only] Provide notes for certification to the Edge Add-ons reviewers.
-
The final json might look like this:
{ "$schema": "https://github.com/PlasmoHQ/bpp/raw/main/keys.schema.json", "chrome": { "zip": "chromium_addon_{version}.zip", "clientId": "1280623", "clientSecret": "1!9us4", "refreshToken": "7&as$a89", "extId": "akszypg" }, "firefox": { "file": "firefox_addon.xpi", "sourceFile": "source.zip", "extId": "akszypg", "apiKey": "ab214c4d", "apiSecret": "e%f253^gh" }, "edge": { "zip": "chromium_addon.zip", "clientId": "aaaaaaa-aaaa-bbbb-cccc-dddddddddddd", "apiKey": "ab#c4de6fg", "productId": "aaaaaaa-aaaa-bbbb-cccc-dddddddddddd", "notes": "This is a test submission" } }Once you got your json file, you will need to copy its content into a GitHub secret. You can do this by following the instructions on creating encrypted secrets for a repository. In this example, we will use the secret name BPP_KEYS.
Then, the action can be used as follows:
steps: - name: Browser Platform Publish uses: PlasmoHQ/bpp@v3 with: keys: ${{ secrets.BPP_KEYS }}The following parameters can be used to override the configuration in the keys file. Specifying options here will override those in the keys file.
keys: required: true description: "A JSON string containing the keys to be used for the submission process. (This should be a secret)" artifact: alias: [zip, file] required: false description: "The extension zip artifact to be published on all stores." opera-file/chrome-file/firefox-file/edge-file: required: false description: "The file to be published to a specific store." source: alias: [source-zip, source-file] required: false description: "The extension source zip artifact for Firefox submissions." notes: alias: [edge-notes] required: false description: "[Edge only] A release note cataloging changes." verbose: required: false description: "Print out more verbose logging." version-file: required: false description: "The path to a json file with a version field, default to package.json."steps: - name: Browser Platform Publish uses: PlasmoHQ/bpp@v3 with: keys: ${{ secrets.BPP_KEYS }} chrome-file: "chrome/myext_chromium_${{ env.EXT_VERSION }}.zip" edge-file: "edge/myext_edge_${{ env.EXT_VERSION }}.zip" edge-notes: "This is a test submission" version-file: "src/manifest.json" verbose: trueJoin the Discord channel!
MIT β Plasmo Corp.