Skip to content

Latest commit

 

History

History
189 lines (124 loc) · 4.39 KB

CONTRIBUTING.md

File metadata and controls

189 lines (124 loc) · 4.39 KB

Contributing

By participating in this project, you agree to abide by our Code of conduct.

Set up your machine

  • Qodana Scan GitHub Action and Qodana for Azure are written in TypeScript.
  • CircleCI Orb is written in YAML (but uses CLI under the hood similar way Qodana for Azure does).
  • Qodana for Gradle plugin is written in Kotlin.

Prerequisites:

Other things you might need to develop:

Clone the repository anywhere:

git clone [email protected]:JetBrains/qodana-action.git

Install all dependencies:

npm install

Run everything in all subprojects:

npm run all

GitHub action

cd into the project directory

cd scan

Build the project:

npm run build

Lint your code with ESLint:

npm run lint

Azure extension

cd into the project directory:

cd vsts

Build the project:

npm run build

Lint your code with ESLint:

npm run lint

Run all required commands to check everything locally for the release:

npm run all

Update the version – edit the following artifacts:

If you forget to do this, repository tests will fail.

Test extension packing:

npm run azure-dev

Also, if you change vsts/vss-extension.dev.json, release job will automatically publish the test version of an extension.

CircleCI orb

cd into the project directory:

cd src

There are no tests to check or run locally, so just push your changes to the pull request, they will be run on CircleCI automatically.

Gradle plugin

Build

Execute Gradle task publishToMavenLocal to build Gradle Qodana Plugin and publish it into local Maven repository. By default, plugin will be published into ~/.mvn/org/jetbrains/qodana/ directory.

Apply

Add Maven local repository into available repositories in your Gradle project. For this you need to add following lines at the beginning of settings.gradle[.kts] file:

pluginManagement {
    repositories {
        mavenLocal()
        gradlePluginPortal()
    }
}

Apply Gradle Qodana Plugin with snapshot version in Gradle configuration file and mount the Maven Local directory:

  • Groovy – build.gradle

    plugins {
        id "org.jetbrains.qodana" version "2024.2.0-SNAPSHOT"
    }
    
    qodana {
    }
  • Kotlin DSL – build.gradle.kts

    plugins {
        id("org.jetbrains.qodana") version "2024.2.0-SNAPSHOT"
    }
    
    qodana {
    }

Create a commit

Commit messages should be well formatted, and to make that "standardized", we are using Gitmoji.

You can follow the documentation on their website.

Submit a pull request

Push your branch to your qodana-action fork and open a pull request against the main branch.

Release a new version

Because every extension depends on CLI, extensions follow the CLI versioning scheme. When a new CLI release is published, a pull request with the update is automatically created in this repository (example)

If you are a core maintainer and want to release a new version, all you need (after merging a PR with the latest CLI) is to run the following command:

git tag -a vX.X.X -m "vX.X.X" && git push origin vX.X.X

And our GitHub Actions job Release will do the rest.

Note that Gradle, GitHub action, CircleCI orb and Azure extension are always released together. The release will be published to: