Skip to content
package

GitHub Action

Sign Chrome Extension crx file

2.0.3 Latest version

Sign Chrome Extension crx file

package

Sign Chrome Extension crx file

Build signed crx file for your WebExtension

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Sign Chrome Extension crx file

uses: cardinalby/webext-buildtools-chrome-crx-action@2.0.3

Learn more about this action in cardinalby/webext-buildtools-chrome-crx-action

Choose a version

Node.js CI

Build signed crx file for your WebExtension

The action allows you to build and sign your Web Extension for offline distribution. Read more details at Alternative Extension Distribution Options.

Based on ChromeCrxBuilder package.

Inputs

๐Ÿ”ธ zipFilePath Required

Path to zip file with extension (relative to repository)

๐Ÿ”ธ crxFilePath Required

Path to save result crx file (relative to repository)

๐Ÿ”ธ privateKey Required

Contents of private key used to sign crx file. Save it to Secrets!

You can generate PEM key pair using ssh-keygen -t rsa -m PEM command.

๐Ÿ”ธ updateXmlPath

Path to save update.xml file (relative to repository) for extensions hosted not on Chrome Web Store. This xml is used as response at url, specified in manifest's update_url key file.

If this input is specified, set the following inputs:

๐Ÿ”น updateXmlCodebaseUrl Required

URL to the .crx file for clients (will be added to generated XML)

๐Ÿ”น updateXmlAppId

App Id to use in update.xml file. Generated from private key by default.

Outputs

๐Ÿ”ป crxFilePath

The absolute path to built crx file

๐Ÿ”ป updateXmlFilePath

The absolute path to built update.xml file

Prepare inputs first

Use webext-buildtools-pack-extension-dir-action to pack your extension directory and provide zipFilePath input (see example).

Usage example

steps:
  # pack zip and read manifest, can be reused in the following steps
  - id: packExtensionDir
    uses: cardinalby/webext-buildtools-pack-extension-dir-action@v1
    with:
      extensionDir: 'extension'
      zipFilePath: 'build/extension.zip'
  
  - uses: cardinalby/webext-buildtools-chrome-crx-action@v2
    with:
      # zip file made at the packExtensionDir step
      zipFilePath: 'build/extension.zip'
      crxFilePath: 'build/extension.crx'
      privateKey: ${{ secrets.CHROME_CRX_PRIVATE_KEY }}
      # The following is optional if you need update.xml file
      updateXmlPath: 'build/update.xml'
      updateXmlCodebaseUrl: 'https://server.com/extension.crx'

If you are interested in the building the entire deployment workflow for WebExtension, you can read this article.