Freerouting is an advanced autorouter for all PCB programs that support the standard Specctra or Electra DSN interface.
- Java >= 25 (Adoptium Temurin 25 JRE)
- Gradle 9.x
- Internet connection (dependencies are downloaded automatically)
- For IDE integration: Gradle extension (not necessary for command line usage)
Open the freerouting Gradle project in your favourite IDE (NB, IntelliJ, Eclipse etc. with Gradle Plugin) and build it by calling the assemble task.
Navigate to the Gradle project (e.g., path/to/freerouting) and enter the following command
./gradlew assemblegradlew assembleAll four .jar files will be generated in the build\libs subfolder. You would typically run the freerouting-executable.jar file.
Creating a release takes about half an hour if everything goes according to the plan. Usually it doesn't, so free up ~3 hours for this.
Let's suppose that the new version is 2.3.4. You need to complete these steps:
-
Check if there are updated translations on Crowdin and merge them if needed
-
Check if there are any outstanding pull requests and merge them as well
-
Change
ext.publishing.versionIdin\gradle\project-info.gradleto2.3.4 -
Push it to GitHub
-
Check if it was built successfully on GitHub Actions
-
Create a new draft release
-
Run
gradlew.bat assemble-> this will generate the files in\build\libs\freerouting*.jar -
Rename to
freerouting-executable.jartofreerouting-2.3.4.jarand add it to the release draft -
Update the
integrations\KiCad- Copy
freerouting-2.3.4.jarinto\integrations\KiCad\kicad-freerouting\plugins\jar\ - Update
\integrations\KiCad\kicad-freerouting\plugins\plugin.iniwith the new filename - Update
\integrations\KiCad\kicad-freerouting\metadata.json - Create a ZIP file from the
kicad-freeroutingfolder - Copy this
kicad-freerouting.zipfile tokicad-freerouting-2.3.4.zip - Use KiCad Packager from https://gitlab.com/kicad/addons/metadata/tools to get hash and file sizes
- Update
\integrations\KiCad\metadata.jsonwith these values - Push these changes to GitHub
- Run the "Run Kicad repository validation" command in KiCad Packager
- Delete previous fork at https://gitlab.com/freeroutingapp/metadata (Settings / General / Delete this project)
- Fork https://gitlab.com/kicad/addons/metadata again
- Create a new branch, named
freerouting-2.3.4 - Replace https://gitlab.com/freeroutingapp/metadata/-/blob/main/packages/app.freerouting.kicad-plugin/metadata.json with the new one
- Create a megre request at https://gitlab.com/kicad/addons/metadata / Merge request / ...
- Copy
-
Update README
-
Publish the release
-
Check if Windows and Linux installers were added to the release in GitHub Actions
-
Publish the library to Maven Central
-
Update the Docker image on Azure
- build docker image locally for Linux x64 (~2 mins)
docker build -t freerouting:latest . - tag the docker image
docker tag freerouting:latest freerouting.azurecr.io/freerouting/api:latest - push image to Azure as freerouting.azurecr.io/freerouting/api:latest
az login az acr login --name freerouting docker push freerouting.azurecr.io/freerouting/api:latest
- build docker image locally for Linux x64 (~2 mins)
-
Change
ext.publishing.versionIdin\gradle\project-info.gradleagain to2.3.5-SNAPSHOT -
Test and publish a new version of the Python Freerouting Client on PyPi.org
- Freerouting follows Google coding conventions from Google Java Style, and the configured OpenRewrite recipe
org.openrewrite.staticanalysis.CodeCleanupapplies those rules automatically to the codebase. - Run the cleanup recipe locally with the Rewrite task:
./gradlew rewriteRun
- Run the same command before committing so formatting stays consistent with the automated checks.


