Skip to content

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: writejobs:
release:
runs-on: ubuntu-lateststeps:
- uses: Vector35/plugin_actions@v1with:
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:

InputOutput
1.3.51.3.6
1.321.33
78.0
v1.41.4
1.3-21.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

InputDefaultMeaning
versionblankExplicit version; blank increments the current one.
descriptionblankRelease notes; blank generates them.
plugin-jsonplugin.jsonManifest path from the repository root.
token${{ github.token }}Push and release token.
checkouttrueLet this action check out the repository.
dry-runfalseValidate 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@v7with:
ref: ${{ github.event.repository.default_branch }}fetch-depth: 0submodules: recursive
- uses: Vector35/plugin_actions@v1with:
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 -vpython3 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