All Projects → ChrisCarini → intellij-platform-plugin-verifier-action

ChrisCarini / intellij-platform-plugin-verifier-action

Licence: Apache-2.0 License
GitHub Action for executing the intellij-plugin-verifier

Programming Languages

shell
77523 projects
python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to intellij-platform-plugin-verifier-action

Github-Android-Action
Android Github Action that builds Android project, runs unit tests and generates debug APK, builds for Github Actions hackathon
Stars: ✭ 29 (+45%)
Mutual labels:  github-actions, github-action, github-actions-docker, github-actions-java
setup-jdk
(DEPRECATED) Set up your GitHub Actions workflow with a specific version of AdoptOpenJDK
Stars: ✭ 32 (+60%)
Mutual labels:  github-actions, github-action, github-actions-java
latex-action
GitHub Action to compile LaTeX documents
Stars: ✭ 123 (+515%)
Mutual labels:  github-actions, github-action, github-actions-docker
assign-one-project-github-action
Automatically add an issue or pull request to specific GitHub Project(s) when you create and/or label them.
Stars: ✭ 140 (+600%)
Mutual labels:  github-actions, github-action, github-actions-docker
action-ssh
GitHub Action for executing SSH commands on remote servers
Stars: ✭ 60 (+200%)
Mutual labels:  github-actions, github-action, github-actions-docker
ssh2actions
Connect to GitHub Actions VM via SSH for interactive debugging
Stars: ✭ 62 (+210%)
Mutual labels:  github-actions, github-action
pr-reviews-reminder-action
A GitHub Action to send Slack/Teams notification for Pull Request that are waiting for reviewers.
Stars: ✭ 18 (-10%)
Mutual labels:  github-actions, github-action
qodana-action
⚙️ Scan your Java, Kotlin, PHP, Python, JavaScript, TypeScript projects at GitHub with Qodana
Stars: ✭ 112 (+460%)
Mutual labels:  github-actions, github-action
misspell-fixer-action
📝Automatically fixes typos and mistakes in your source code and docs!
Stars: ✭ 123 (+515%)
Mutual labels:  github-actions, github-action
hugo-action
Commands to help with building Hugo based static sites
Stars: ✭ 65 (+225%)
Mutual labels:  github-actions, github-action
github-env-vars-action
🚀 GitHub Action for Environment Variables
Stars: ✭ 129 (+545%)
Mutual labels:  github-actions, github-action
overview
Automate your workflows with GitHub actions for MATLAB.
Stars: ✭ 40 (+100%)
Mutual labels:  github-actions, github-action
bump-everywhere
🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Stars: ✭ 24 (+20%)
Mutual labels:  github-actions, github-action
action-sync-node-meta
GitHub Action that syncs package.json with the repository metadata.
Stars: ✭ 25 (+25%)
Mutual labels:  github-actions, github-action
bake-action
GitHub Action to use Docker Buildx Bake as a high-level build command
Stars: ✭ 52 (+160%)
Mutual labels:  github-actions, github-actions-docker
laravel-phpinsights-action
Run PHP Insights in Laravel in Github Actions
Stars: ✭ 17 (-15%)
Mutual labels:  github-actions, github-action
git-actions
A GitHub Action to run arbitrary git commands
Stars: ✭ 72 (+260%)
Mutual labels:  github-actions, github-action
github-theme-for-jetbrains
GitHub Theme for Jetbrains is heavily inspired by GitHub 3 Color Scheme and github-vscode-theme.The focus of the development of this theme plugin is to restore the official GitHub theme as much as possible, keeping the colors easy to distinguish, proper contrast, and pleasant.
Stars: ✭ 20 (+0%)
Mutual labels:  jetbrains, jetbrains-plugin
intellij-pokemon-progress
A Pokémon themed progress bar for IntelliJ IDEA.
Stars: ✭ 70 (+250%)
Mutual labels:  jetbrains, jetbrains-plugin
autoupdate
A GitHub Action that auto-updates pull requests branches, whenever changes are pushed to their destination branch.
Stars: ✭ 70 (+250%)
Mutual labels:  github-actions, github-action

IntelliJ Platform Plugin Verifier Action

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

GitHub Marketplace GitHub Marketplace 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@latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    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@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}}

GitHub Token Authentication

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.

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

verifier-version

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:

  1. intellij-plugin-verifier version 1.255 or later

    AND

  2. intellij-platform-plugin-verifier-action version 2.0.0 or later

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)

Configuration file for <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.)

failure-levels

This required input sets which plugin verifier failures to cause a failure in this action.

Valid options

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.

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

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].