This document explains how to publish a new release of the Stream Deck plugin and browser extensions.
If you're setting up the project in a new GitHub repo (or you're creating a fork), there's some initial work you'll need to do to get Firefox extension signing configured.
First, prepare an (unsigned) build of the extension to submit to Mozilla for initial approval:
- Create your own UUID to use as your Firefox extension ID. (On macOS or Linux, try running
uuidgen.) - Update
browser-extension/manifest_firefox_stub.jsonand change thebrowser_specific_settings.gecko.idfield to be your new UUID wrapped in curly braces. - From within the
browser-extensiondirectory, runnpm install && npm run build && npm run package-firefox. This should create a zip file namedbrowser-extension/build/stream_deck_google_meet_actions-0.0.1.zip. We'll use that file soon.
Now we'll go to the Firefox Add-on website and create the add-on:
- Go to the Firefox Add-on Developer Hub and create an account, or sign in with your Firefox account if you already have one.
- Click My Add-ons.
- Click "Submit a New Add-on", and when asked "how you would like to distribute this version", select
On your own. (Don't list the add-on on the public store.) - Upload the extension build artifact from earlier (
browser-extension/build/stream_deck_google_meet_actions-0.0.1.zip). - Wait for approval from Mozilla. The plugin will likely get auto-approved within a few minutes.
Finally, we'll add auth tokens from the Firefox Add-on portal as GitHub Action secrets so you can have automated release builds in CI:
- Go back to the Firefox Add-on Developer Hub and go to "Tools" --> "Manage API Keys".
- If you don't see any existing credentials on that page, create a new API key.
- Save the
JWT issuerandJWT secret. - In your GitHub repo (or fork), click on the Settings tab (e.g. https://github.com/ChrisRegado/streamdeck-googlemeet/settings), and click on "Secrets and variables" --> "Actions" in the sidebar.
- Using the "New repository secret" button, create two new repository secrets:
- A secret named
FIREFOX_JWT_ISSUER, whose value must be set to theJWT issuerfrom the Firefox Add-on site. - A secret named
FIREFOX_JWT_SECRET, whose value must be set to theJWT secretfrom the Firefox Add-on site.
- A secret named
Follow these steps each time you want to release a new version of the plugin and/or browser extension:
- Tag the commit you wish to release and push it to GitHub. We use semantic versioning with a "v" prefix for our releases. For example:
git checkout master && git tag v1.2.3 && git push origin tag v1.2.3- Our CI jobs will update version numbers automatically to match that tag for both the plugin and browser extensions. You don't need to manually change any version numbers in code/config.
- CI jobs should automatically launch against that tag to build the Stream Deck plugin and browser extensions. (The list of workflow runs should show one copy of each of those two jobs with your
v1.2.3tag.) Wait for them to complete successfully. - Click into those two build jobs, and on each job's "Summary" tab, download our build artifacts. The browser extension build job should have
chrome-extensionandfirefox-extension-signedartifacts, and the plugin build job should havecom.chrisregado.googlemeet.streamDeckPlugin. - Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality.
- On the Github page for your repo, click "Releases". (https://github.com/ChrisRegado/streamdeck-googlemeet/releases)
- Click "Draft a new release".
- Click the "Tag" button and select the tag you made in the previous step.
- Use the your tag name as the "Release title", and enter a description summarizing notable changes in this release.
- Select the "Set as a pre-release" checkbox near the bottom of the page.
- Click "Publish release".
- Our release CI job should automatically start and attach our tag's artifacts to the GitHub Release. Wait for it to complete. If all goes well, in a minute or two you should see 3 attachments appear on the release: the
com.chrisregado.googlemeet.streamDeckPluginplugin, a zip of the Chrome extension, and an.xpifile for the Firefox extension. - Edit the release, uncheck the "Set as a pre-release" checkbox at the bottom of the page, select the "Set as the latest release" checkbox, and click "Update release".