Harness CI and Code are now packed with features that reduce noise, tighten guardrails, and speed up delivery. From smarter builds and Kotlin test optimization to repo favorites and tag protection rules, these updates are designed to boost developer velocity without sacrificing control.
When you're managing dozens or hundreds of repositories, every click, config, and constraint matters. Especially when it's tied to production confidence or team velocity. That’s why the latest updates to Harness Code Repository and CI focus on giving developers more control, clearer guardrails, and less operational noise.
Ever had a rogue tag break a pipeline or a branch accidentally deleted because protections were missing? Harness Code now supports Tag Rules, giving you the same fine-grained control as branch rules, but for Git tags.
You can:
Check out Tag Rules Documentation
Speaking of bypasses, you can now add user groups to the bypass list for both branch and tag rules. No need to micromanage individual user exceptions anymore — just assign groups and move on.
Check out Bypass List Enhancements Documentation
Not all repositories deserve your daily attention. With Favorites, you can now mark repositories you care about and surface them faster. Whether you are toggling across scopes or browsing dozens of repos, your important ones stay on top.
Check out Favorite Repositories Documentation
A force push to your main branch should never go unnoticed. Harness now logs every force push to default branches so teams can easily audit or trace who did what and when. It’s one more way to bring transparency and confidence to your development process.
Check out Audit Logs for Repositories Documentation
You're using Maven to build your project. So why rebuild everything when nothing changed?
Harness CI now supports Build Intelligence for Maven (3.9+). It automatically detects unchanged inputs and skips redundant build steps to accelerate your pipelines. No changes needed to your build commands — Harness injects the right config for you.
Here's how you enable it with just a few lines in your pipeline YAML:
pipeline:
projectIdentifier: YOUR_PROJECT_ID
orgIdentifier: YOUR_ORG_ID
name: maven-build-intel
identifier: maven_build_intel
tags: {}
properties:
ci:
codebase:
connectorRef: YOUR_CODEBASE_CONNECTOR
build: <+input>
sparseCheckout: []
stages:
- stage:
name: maven
identifier: maven
type: CI
spec:
cloneCodebase: true
caching:
enabled: true
override: true
paths: []
buildIntelligence:
enabled: true
execution:
steps:
- step:
type: Run
name: Build with Maven
identifier: build_with_maven
spec:
shell: Sh
command: |-
wget https://downloads.apache.org/maven/maven-3/3.9.10/binaries/apache-maven-3.9.10-bin.tar.gz
tar -xvzf apache-maven-3.9.10-bin.tar.gz
sudo mv apache-maven-3.9.10 /opt/maven
export PATH=/opt/maven/bin:$PATH
mvn clean install -DskipITs -Dmaven.test.failure.ignore=true -DfailIfNoTests=false -Dmaven.profile
resources:
limits:
memory: 5Gi
cpu: "5"
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
Build time isn't the only thing eating into your CI minutes — running unnecessary tests is another major culprit. That’s where Test Intelligence (TI) comes in.
Test Intelligence is part of Harness CI Intelligence and helps you run only the tests impacted by recent code changes, rather than running the full test suite every time. This reduces execution time, saves compute, and keeps feedback loops tight.
And now, Test Intelligence supports Kotlin projects too.
Here’s a working example of how to enable it in a pipeline. Notice how the intelligenceMode: true flag is added to the Test step. This tells Harness to auto-detect test impacts and optimize execution:
pipeline:
projectIdentifier: YOUR_PROJECT_ID
orgIdentifier: YOUR_ORG_ID
tags: {}
stages:
- parallel:
- stage:
name: kotlin-amd64-alpine
identifier: kotlin_amd64_alpine
type: CI
spec:
cloneCodebase: true
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Test
name: Run Tests
identifier: run_tests
spec:
image: maven:3.9.9-eclipse-temurin-17-alpine
shell: Sh
command: |-
cd forks/kotlin
mvn test
intelligenceMode: true
- stage:
name: kotlin-arm64-ubuntu
identifier: kotlin_arm64_ubuntu
type: CI
spec:
cloneCodebase: true
platform:
os: Linux
arch: Arm64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Test
name: Run Tests
identifier: run_tests
spec:
shell: Sh
command: |-
cd forks/kotlin
mvn test
intelligenceMode: true
- stage:
name: kotlin-amd64-ubuntu
identifier: kotlin_amd64_ubuntu
type: CI
spec:
cloneCodebase: true
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Test
name: Run Tests
identifier: run_tests
spec:
shell: Sh
command: |-
cd forks/kotlin
mvn test
intelligenceMode: true
properties:
ci:
codebase:
repoName: YOUR_REPO_NAME
build: <+input>
sparseCheckout: []
identifier: kotlin_test_intelligence
name: kotlin_test_intelligence
From tighter policy controls to faster builds and smarter tests, these updates help your developers stay focused and your pipelines stay efficient.
Want to share your thoughts? Join the discussion →
Stop struggling with tools—master modern CI/CD and turn deployment headaches into smooth, automated workflows.