Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binary Ninja Plugin Actions

Release a Binary Ninja plugin from GitHub Actions.

Setup

Copy examples/release.yml to .github/workflows/release.yml, then run Actions → Release → Run workflow.

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: Vector35/plugin_actions@v1
        with:
          version: ${{ inputs.version }}
          description: ${{ inputs.description }}
          dry-run: ${{ inputs.dry-run }}

Leave version blank to increment its last component (1.3.51.3.6, 1.31.4). Leave description blank for generated release notes.

Try it safely:

gh workflow run release.yml -f dry-run=true

Behavior

The action:

  1. Checks out the default branch with all tags.
  2. Validates and normalizes plugin.json.
  3. Commits and pushes only that file.
  4. Tags the commit and creates the latest GitHub release.

If publication stops after the version commit, rerunning resumes it while that commit remains HEAD. Recovery checks its author, message, and one-file diff. Existing tags must point to that commit.

The action preserves version width and canonicalizes accepted legacy forms:

Input Output
1.3.5 1.3.6
1.32 1.33
7 8.0
v1.4 1.4
1.3-2 1.3.2

It also repairs BOMs, trailing commas, legacy plugin nesting, camelCase minimumBinaryNinjaVersion, and a missing pluginmetadataversion. A missing minimum Binary Ninja version becomes the build number of the newest stable entry in changelog.js. Invalid or unreachable metadata fails before any commit.

Every existing tag is checked for version reuse.

Inputs

Input Default Meaning
version blank Explicit version; blank increments the current one.
description blank Release notes; blank generates them.
plugin-json plugin.json Manifest path from the repository root.
token ${{ github.token }} Push and release token.
checkout true Let this action check out the repository.
dry-run false Validate without committing or publishing.

Outputs: version, previous, tag, and url (url is blank on dry runs).

Custom checkout

Use a full checkout of the default branch:

- uses: actions/checkout@v7
  with:
    ref: ${{ github.event.repository.default_branch }}
    fetch-depth: 0
    submodules: recursive
- uses: Vector35/plugin_actions@v1
  with:
    checkout: false

Protected default branches must allow github-actions[bot] to push. Keep the example workflow's concurrency guard to prevent release races.

@v1 follows compatible fixes. Use @v1.0.1 or a commit SHA for an exact pin.

Development

python3 -m unittest discover -s tests -v
python3 scripts/prepare_release.py --check

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages