Skip to content

cssnr/mozilla-addon-update-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Release Lint Test Quality Gate Status GitHub Release Version GitHub Last Commit Codeberg Last Commit GitHub Top Language GitHub Org Stars Discord

Mozilla Addon Update Action

Update the Mozilla Firefox Update JSON File after a Release for Self Hosted Extensions.

Inputs

input required default description
url Yes - Update URL with {version} in the string.
update - update.json Update JSON File Location
manifest - manifest.json * Manifest File Location
version - - * Override Version from manifest
addon_id - - * Override Addon ID from manifest

manifest - If provided the version and addon_id will be parsed from this file.

version - Manually specify the version to use for {version} in url.

addon_id - Manually specify the addon_id to use for update JSON file. If not provided this is parsed from the manfiest key: browser_specific_settings.gecko.id

- name: 'Mozilla Addon Update'
  uses: cssnr/mozilla-addon-update-action@v1
  with:
    url: 'https://github.com/cssnr/link-extractor/releases/download/{version}/link_extractor-firefox.xpi'

Outputs

output description
url Update URL Result
result Update JSON Result
- name: 'Mozilla Addon Update'
  id: update
  uses: cssnr/mozilla-addon-update-action@v1
  with:
    url: 'https://github.com/cssnr/link-extractor/releases/download/{version}/link_extractor-firefox.xpi'

- name: 'Echo Outputs'
  run: |
    echo '${{ steps.update.outputs.url }}'
    echo '${{ steps.update.outputs.result }}'

Notes

This action expects the input_update JSON file to exist, be valid JSON and have a matching addon_id entry. At a minimum, add a file similar to this where link-extractor@cssnr.com is your Addon ID:

{
  "addons": {
    "link-extractor@cssnr.com": {
      "updates": []
    }
  }
}

For more details see: src/main.py.

Mozilla Documentation: https://extensionworkshop.com/documentation/manage/updating-your-extension/

Examples

Basic Example with All Inputs:

- name: 'Mozilla Addon Update'
  uses: cssnr/mozilla-addon-update-action@v1
  with:
    url: 'https://github.com/cssnr/link-extractor/releases/download/{version}/link_extractor-firefox.xpi'
    update: update.json
    manifest: manifest.json
    version: '1.0.0'
    addon_id: link-extractor@cssnr.com

Simple Example:

name: 'Mozilla Addon Update'

on:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  mozilla-update:
    name: 'Mozilla Addon Update'
    runs-on: ubuntu-latest
    timeout-minutes: 5
    if: ${{ github.event_name == 'release' }}

    steps:
      - name: 'Checkout'
        uses: actions/checkout@v4

      - name: 'Mozilla Addon Update'
        uses: cssnr/mozilla-addon-update-action@v1
        with:
          url: 'https://github.com/cssnr/link-extractor/releases/download/{version}/link_extractor-firefox.xpi'

Full Example:

name: 'Mozilla Addon Update'

on:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  build:
    name: 'Build'
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: 'Checkout'
        uses: actions/checkout@v4

      - name: 'Build All'
        run: |-
          npm install
          npm run build

      - name: 'Upload to Release'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: web-ext-artifacts/*
          tag: ${{ github.ref }}
          overwrite: true
          file_glob: true

  mozilla-update:
    name: 'Mozilla Addon Update'
    runs-on: ubuntu-latest
    timeout-minutes: 5
    needs: [build]
    if: ${{ github.event_name == 'release' }}

    steps:
      - name: 'Checkout'
        uses: actions/checkout@v4

      - name: 'Mozilla Addon Update'
        uses: cssnr/mozilla-addon-update-action@v1
        with:
          url: 'https://github.com/cssnr/link-extractor/releases/download/{version}/link_extractor-firefox.xpi'

      - name: 'Commit files'
        run: |
          git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"
          git commit -a -m "Update update.json"

      - name: 'Push changes'
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: master

To see this used in a build/publish/update workflow, check out:
https://github.com/cssnr/aviation-tools/blob/master/.github/workflows/build.yaml

Support

For general help or to request a feature see:

If you are experiencing an issue/bug or getting unexpected results you can:

Contributing

Currently, the best way to contribute to this project is to star this project on GitHub.

Additionally, you can support other GitHub Actions I have published:

For a full list of current projects to support visit: https://cssnr.github.io/

About

Mozilla Addon Update JSON File Action

Topics

Resources

License

Stars

Watchers

Forks