A GitHub Action for executing the JetBrains intellij-plugin-verifier.
Add the action to your GitHub Action Workflow file - the only thing you need to specify are the JetBrains products & versions you wish to run against.
A minimal example of a workflow step is below:
- name: Verify Plugin on IntelliJ Platforms uses: ChrisCarini/intellij-platform-plugin-verifier-action@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: ide-versions: | ideaIC:2019.3
.yml
(or .yaml
) file in your GitHub repository's .github/workflows
folder. We will call this file compatibility.yml
below.compatibility.yml
name: IntelliJ Platform Plugin Compatibility on: push: jobs: compatibility: name: Ensure plugin compatibility against 2019.3 for IDEA Community, IDEA Ultimate, PyCharm Community, GoLand, CLion, and the latest EAP snapshot of IDEA Community. runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v1 - name: Setup Java 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Build the plugin using Gradle run: ./gradlew buildPlugin - name: Verify Plugin on IntelliJ Platforms id: verify uses: ChrisCarini/intellij-platform-plugin-verifier-action@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: ide-versions: | ideaIC:2019.3 ideaIU:2019.3 pycharmPC:2019.3 goland:2019.3 clion:2019.3 ideaIC:LATEST-EAP-SNAPSHOT - name: Get log file path and print contents run: | echo "The verifier log file [${{steps.verify.outputs.verification-output-log-filename}}] contents : " ; cat ${{steps.verify.outputs.verification-output-log-filename}}
In order to prevent GitHub Rate limiting, setting the GITHUB_TOKEN
environment variable is highly encouraged.
Without the GITHUB_TOKEN
set, the requests are considered 'unauthenticated requests' by the GitHub API, and are subject to 60 requests per hour for the originating IP address. GitHub-hosted runners are hosted in Azure, and have the same IP address ranges as Azure datacenters. As a side effect of this, if the particular IP address of the GitHub-runner executing your GitHub Workflow has made 60 requests per hour, the API call to resolve the latest version of the intellij-plugin-verifier
will fail, and this action will not complete successfully.
With the GITHUB_TOKEN
set, each repository using this GitHub action will be allowed 1,000 requests per hour (which is needed to resolve the latest version of the intellij-plugin-verifier
). This should be ample for most repositories.
This GitHub Action exposes 3 input options, only one of which is required.
Input Description Usage Defaultverifier-version
The version of the JetBrains intellij-plugin-verifier. The default of LATEST
will automatically pull the most recently released version from GitHub - a specific version of the intellij-plugin-verifier
can be optionally be pinned if desired. Optional LATEST
plugin-location
The path to the zip
-distribution of the plugin(s), generated by executing ./gradlew buildPlugin
Optional build/distributions/*.zip
ide-versions
Releases of IntelliJ Platform IDEs and versions that should be used to validate against, formatted as a multi-line string as shown in the examples. Formatted as <ide>:<version>
- see below for details. If you would prefer to have the list of IDE and versions stored in a file, see the Configuration file for <ide>:<version>
section below for details. Required failure-levels
The different failure levels to set for the verifier. Required COMPATIBILITY_PROBLEMS INVALID_PLUGIN
An example using all the available options is below:
- name: Verify Plugin on IntelliJ Platforms id: verify uses: ChrisCarini/intellij-platform-plugin-verifier-action@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: verifier-version: '1.255' plugin-location: 'build/distributions/sample-intellij-plugin-*.zip' ide-versions: | ideaIC:LATEST-EAP-SNAPSHOT failure-levels: | COMPATIBILITY_PROBLEMS INVALID_PLUGIN NOT_DYNAMIC
This optional input allows users to pin a specific version of intellij-plugin-verifier
to be used during validation.
WARNING: Due to the deprecation fo Bintray services on 2021-05-01, JetBrains moved the verifier artifacts to their own Maven repository ( See intellij-plugin-verifier
version 1.255
release notes for details.). If you wish to specify a verifier-version
in this GitHub Action, please ensure you are using both:
intellij-plugin-verifier
version 1.255
or later
AND
intellij-platform-plugin-verifier-action
version 2.0.0
or later
This optional input allows users to specify a different location for the plugin(s) .zip
file. The default assumes that gradle-intellij-plugin is being used to build the plugin(s).
This required input sets which IDEs and versions the plugins will be validated against.
You can identify the value for <ide>
and <version>
as follows.
.zip
..zip
filename from the URL; example below:
https://www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/pycharm/pycharmPY/2019.3/pycharmPY-2019.3.zip
becomes-
with a :
, and remove the .zip
from the end; example below: becomeside-versions
.clion
goland
ideaIC
ideaIU
pycharmPC
pycharmPY
riderRD
2019.3
)2019.3.4
)193.6911.18
)SNAPSHOT
versions
*-SNAPSHOT
*-EAP-SNAPSHOT
*-EAP-CANDIDATE-SNAPSHOT
*-CUSTOM-SNAPSHOT
LATEST-EAP-SNAPSHOT
)<ide>:<version>
If you would like to keep your GitHub Action workflow file tidy and free from constant changes, you can pass a relative file path to a file containing the IDE and versions. Below are the respective excerpts to use this feature.
Workflow File:
- uses: actions/checkout@v2 # Your repository must be checked out in order to access the `ide_versions_file.txt` configuration file. - name: Verify plugin on IntelliJ Platforms id: verify uses: ChrisCarini/intellij-platform-plugin-verifier-action@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: ide-versions: .github/workflows/ide_versions_file.txt
.github/workflows/ide_versions_file.txt
ideaIC:2019.3
ideaIU:2019.3
pycharmPC:2019.3
goland:2019.3
clion:2019.3
ideaIC:LATEST-EAP-SNAPSHOT
(Note: The sample above will yield an execution identical to the one provided in the Installation
section above.)
This required input sets which plugin verifier failures to cause a failure in this action.
Value Search String COMPATIBILITY_WARNINGS "Compatibility warnings" COMPATIBILITY_PROBLEMS "Compatibility problems" DEPRECATED_API_USAGES "Deprecated API usages" EXPERIMENTAL_API_USAGES "Experimental API usages" INTERNAL_API_USAGES "Internal API usages" OVERRIDE_ONLY_API_USAGES "Override-only API usages" NON_EXTENDABLE_API_USAGES "Non-extendable API usages" PLUGIN_STRUCTURE_WARNINGS "Plugin structure warnings" MISSING_DEPENDENCIES "Missing dependencies" INVALID_PLUGIN "The following files specified for the verification are not valid plugins" NOT_DYNAMIC "Plugin cannot be loaded/unloaded without IDE restart"Note: The default values are COMPATIBILITY_PROBLEMS
and INVALID_PLUGIN
for backwards compatibility. These were the two default checks as of authoring this capability. This may change in the future, but a minor version bump (at a minimum) will happen should that occur.
This optional input sets which plugins problems will be ignored. Multiple values can be passed in as a comma-separated string.
See https://github.com/JetBrains/intellij-plugin-verifier?tab=readme-ov-file#check-plugin for more details.
- `ForbiddenPluginIdPrefix`
- `TemplateWordInPluginId`
- `TemplateWordInPluginName`
The results of the execution are captured in a file for use in subsequent steps if you so choose.
You will need to give the intellij-platform-plugin-verifier-action
step an id
.
You can then access the verifier output file by using ${{steps.<id>.outputs.verification-output-log-filename}}
.
In the below example, we use set the id
to verify
- this example will print the filename as well as the contents of the file as a subsequent step to the validation:
- name: Verify Plugin on IntelliJ Platforms id: verify uses: ChrisCarini/intellij-platform-plugin-verifier-action@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: ide-versions: | ideaIC:2019.3 - name: Get log file path and print contents run: | echo "The verifier log file [${{steps.verify.outputs.verification-output-log-filename}}] contents : " ; cat ${{steps.verify.outputs.verification-output-log-filename}}
(Note: The file contents will include both stdout
and stderr
output from the plugin verification CLI.)
As examples of using this plugin you can check out following projects:
Contributions welcomed! Feel free to open a PR, or issue.
This action has GitHub Actions Debug Logging.
To enable, set the following secret in the repository that contains the workflow using this action to true
.
ACTIONS_STEP_DEBUG
You can find this under the repositories Settings -> Secrets
menu.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4