This action sets up a Ghidra environment for use in actions. Specific Ghidra versions can be selected and even releases from custom forks can be used.
This action will automatically set the GHIDRA_INSTALL_PATH
variable in your environment.
The action will fail if no matching versions are found.
Basic:
This example just clones your code, setups java and setups Ghidra from the oficial repo to the latest release found.
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: antoniovazquezblanco/setup-ghidra@v2.0.4
Advanced:
This example tries to build a module project using different Ghidra versions.
strategy:
matrix:
ghidra:
- "11.1.1"
- "11.0.3"
- "10.4"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: gradle/actions/setup-gradle@v3
- uses: antoniovazquezblanco/setup-ghidra@v2.0.4
with:
auth_token: ${{ secrets.GITHUB_TOKEN }}
version: ${{ matrix.ghidra }}
- name: Build something with Ghidra ${{ matrix.ghidra }}
run: gradle -PGHIDRA_INSTALL_DIR=${{ env.GHIDRA_INSTALL_DIR }}
Reference:
For a full reference of action parameters see action.yml
- uses: antoniovazquezblanco/setup-ghidra@v2.0.4
with:
# A distribution download URL to directly download and install it.
# If this argument is specified, both the repository and version arguments
# will be ignored.
# Example:
# download_url: 'https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_10.4_build/ghidra_10.4_PUBLIC_20230928.zip'
download_url: ''
# The owner of the repository to look for Ghidra releases. By default, NSA
# official user is used.
owner: 'NationalSecurityAgency'
# A repository on which to find releases. By default, NSA official repo
# name is used.
repository: 'ghidra'
# Version spec to use. Please use SemVer notation. It also accepts the
# 'latest' alias to download the latest version available.
version: 'latest'
# SHA256 sum value to check the downloaded tool against. You may use the
# keyworkd 'skip' to not perform this check or the keyworkd 'online' to
# check against the release notes in the repository. Otherwise, a valid
# hexadecimal string is expected.
sha256sum: 'online'
# Github authentication token to avoid API limiting.
# This is optional.
auth_token: ${{ secrets.GITHUB_TOKEN }}