Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 4.92 KB

File metadata and controls

49 lines (37 loc) · 4.92 KB

Release Guide

This document explains how to publish a new release of the Stream Deck plugin and browser extensions.

First Time Firefox Add-on Setup

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:

  1. Create your own UUID to use as your Firefox extension ID. (On macOS or Linux, try running uuidgen.)
  2. Update browser-extension/manifest_firefox_stub.json and change the browser_specific_settings.gecko.id field to be your new UUID wrapped in curly braces.
  3. From within the browser-extension directory, run npm install && npm run build && npm run package-firefox. This should create a zip file named browser-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:

  1. Go to the Firefox Add-on Developer Hub and create an account, or sign in with your Firefox account if you already have one.
  2. Click My Add-ons.
  3. 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.)
  4. Upload the extension build artifact from earlier (browser-extension/build/stream_deck_google_meet_actions-0.0.1.zip).
  5. 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:

  1. Go back to the Firefox Add-on Developer Hub and go to "Tools" --> "Manage API Keys".
  2. If you don't see any existing credentials on that page, create a new API key.
  3. Save the JWT issuer and JWT secret.
  4. 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.
  5. Using the "New repository secret" button, create two new repository secrets:
    • A secret named FIREFOX_JWT_ISSUER, whose value must be set to the JWT issuer from the Firefox Add-on site.
    • A secret named FIREFOX_JWT_SECRET, whose value must be set to the JWT secret from the Firefox Add-on site.

Releasing a New Version

Follow these steps each time you want to release a new version of the plugin and/or browser extension:

  1. 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.
  2. 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.3 tag.) Wait for them to complete successfully.
  3. 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-extension and firefox-extension-signed artifacts, and the plugin build job should have com.chrisregado.googlemeet.streamDeckPlugin.
  4. Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality.
  5. On the Github page for your repo, click "Releases". (https://github.com/ChrisRegado/streamdeck-googlemeet/releases)
  6. Click "Draft a new release".
  7. Click the "Tag" button and select the tag you made in the previous step.
  8. Use the your tag name as the "Release title", and enter a description summarizing notable changes in this release.
  9. Select the "Set as a pre-release" checkbox near the bottom of the page.
  10. Click "Publish release".
  11. 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.streamDeckPlugin plugin, a zip of the Chrome extension, and an .xpi file for the Firefox extension.
  12. 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".