By participating in this project, you agree to abide by our Code of conduct.
- 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:
- Node.js 12.x
- Java 11
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
cd
into the project directory
cd scan
Build the project:
npm run build
Lint your code with ESLint:
npm run lint
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.
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.
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.
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 { }
Commit messages should be well formatted, and to make that "standardized", we are using Gitmoji.
You can follow the documentation on their website.
Push your branch to your qodana-action
fork and open a pull request against the
main branch.
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: