/intellij-platform-plugin-verifier-action

GitHub Action for executing the intellij-plugin-verifier

Primary LanguageShellApache License 2.0Apache-2.0

IntelliJ Platform Plugin Verifier Action

A GitHub Action for executing the JetBrains intellij-plugin-verifier.

GitHub Marketplace

Usage

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@v0.0.2
    with:
      ide-versions: |
        ideaIC:2019.3

Installation

  1. Create a .yml (or .yaml) file in your GitHub repository's .github/workflows folder. We will call this file compatibility.yml below.
  2. Copy the below contents into 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@v0.0.2
            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}}

Options

This GitHub Action exposes 3 input options, only one of which is required.

Input Description Usage Default
verifier-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. Required

An example using all the available options is below:

  - name: Verify Plugin on IntelliJ Platforms
    id: verify
    uses: ChrisCarini/intellij-platform-plugin-verifier-action@v0.0.2
    with:
      verifier-version: '1.230'
      plugin-location: 'build/distributions/sample-intellij-plugin-*.zip'
      ide-versions: |
        ideaIC:LATEST-EAP-SNAPSHOT

verifier-version

This optional input allows users to pin a specific version of intellij-plugin-verifier to be used during validation.

plugin-location

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).

ide-versions

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.

  1. Navigate to the IntelliJ Releases Repository
  2. Find the IDE and version you wish to use.
  3. Copy the URL for the .zip.
  4. Take only the .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
    pycharmPY-2019.3.zip
    
  5. Replace the - with a :, and remove the .zip from the end; example below:
    pycharmPY-2019.3.zip
    
    becomes
    pycharmPY:2019.3
    
  6. This is the value you will use in ide-versions.

Some <ide> options

  • CLion = clion
  • GoLand = goland
  • IntelliJ IDEA
    • IntelliJ IDEA Community = ideaIC
    • IntelliJ IDEA Ultimate = ideaIU
  • PyCharm
    • PyCharm Community = pycharmPC
    • PyCharm Professional = pycharmPY
  • Rider = riderRD

Some <version> options

  • Major versions (ie, 2019.3)
  • Minor versions (ie, 2019.3.4)
  • Specific build versions (ie, 193.6911.18)
  • SNAPSHOT versions
    • versions ending in *-SNAPSHOT
    • versions ending in *-EAP-SNAPSHOT
    • versions ending in *-EAP-CANDIDATE-SNAPSHOT
    • versions ending in *-CUSTOM-SNAPSHOT
  • Latest EAP version (ie, LATEST-EAP-SNAPSHOT)

Results

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@v0.0.2
        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.)

Examples

As examples of using this plugin you can check out following projects:

Contributing

Contributions welcomed! Feel free to open a PR, or issue.

Debugging

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.