Release and Distribution for the Chrome Extension
This document describes the release and distribution options for the Screenly Chrome extension, which is built using JavaScript, HTML, SCSS, Shell, Dockerfile, and other related technologies. The key technologies and dependencies include webpack, html-webpack-plugin, mini-css-extract-plugin, sass-loader, css-loader, file-loader, html-loader, Puppeteer, ESLint, Bootstrap, and others.
Release Manifest
The Backstage Software Catalog and Developer Platform provides a way to manage release manifests for the Screenly Chrome extension. The getManifestByVersion()
function can be used to retrieve a release manifest based on a specific version, while the getManifestByReleaseLine()
function can be used to retrieve a release manifest based on a specific release line.
The getManifestByVersion()
function has the following signature:
function getManifestByVersion(options: GetManifestByVersionOptions): Promise<ReleaseManifest>;
The options
parameter is an object that contains the version number to retrieve. The function returns a Promise
that resolves to a ReleaseManifest
object, which contains mapping between Backstage release and package versions.
Similarly, the getManifestByReleaseLine()
function has the following signature:
function getManifestByReleaseLine(options: GetManifestByReleaseLineOptions): Promise<ReleaseManifest>;
The options
parameter is an object that contains the release line to retrieve. The function returns a Promise
that resolves to a ReleaseManifest
object.
Docker Desktop
Docker Desktop provides release notes for each version of the Docker Desktop application. These release notes include information about new features, bug fixes, and other changes. The Screenly Chrome extension can be packaged and released using Docker Desktop.
To package and release the extension using Docker Desktop, the extension must specify the Extension API version it relies on. Docker Desktop checks the extension required version and only proposes to install extensions that are compatible with the current Docker Desktop installed. Users might need to update Docker Desktop in order to install the latest extensions available.
The extension image labels must specify the API version that the extension relies upon. This allows Docker Desktop to inspect newer versions of extension images without downloading the full extension image upfront.
The extension image must be a multi-arch image so that users can install extensions on ARM/AMD hardware. These multi-arch images can include ARM/AMD specific binaries. Mac users will automatically use the right image based on their architecture.
The extension image tags must follow semver conventions in order to allow fetching the latest version of the extension, and to know if there are updates available.
Docker Hub
The Screenly Chrome extension can be packaged and released using Docker Hub. Docker Hub is a cloud-based registry service that allows you to link to code repositories, build your images and test them, stores manually pushed images, and links to Docker Cloud so you can deploy images to your hosts.
To release a new version of the Docker extension, you can push a new image with a new tag to Docker Hub. Any new image pushed to an image repository corresponding to a Docker Extension defines a new version of that extension. Image tags are used to identify version numbers.
The extension versions must follow semver to make it easy to understand and compare versions. Docker Desktop scans the list of extensions published in the marketplace for new versions, and provides notifications to users when they can upgrade a specific extension.
Conclusion
The Screenly Chrome extension can be packaged and released using Docker Desktop and Docker Hub. The release process involves specifying the Extension API version, using multi-arch images, and following semver conventions for image tags. By using Docker Desktop and Docker Hub, you can manage versions of the extension, and provide notifications to users when new versions are available.