Log in to your harness - The Modern Software Delivery Platform® account to give feedback

Feature Requests

Anonymous

Feature Requests for Harness. Select 'Category' based on the module you are requesting the feature for.
Improve how Tests v1/v2 behaves when running on non-root/custom-layout images
Context : Following the investigation in Support Ticket #98593, we identified that the Test Intelligence (TI) agent (both v1 and v2) fails to execute in hardened container. Current Limitations: The TI agent currently operates on implicit assumptions about the underlying Python environment that cause failures in secure images: - Root Assumption: The agent attempts to install dependencies (e.g., pip install coverage) assuming it has write access to system-level site-packages. This fails in containers running as a non-root user (e.g., USER 1001). - Path Assumption: The agent fails to discover coverage reports or dependencies (specifically pytest-cov) if they are installed in custom locations (defined via PYTHONPATH), even if those locations are valid and accessible to the shell. Desired Behavior / Request: Environment Agnostic: The TI Agent should respect the existing environment variables (like PYTHONPATH and PATH) and run successfully as a non-root user. Configurable Paths: If auto-discovery is not possible, provide explicit plugin configuration options to point the agent to the correct coverage or dependency folders. Documentation: If strict environmental prerequisites (like root access) are unavoidable, they must be explicitly documented in the official setup guide. Steps to Reproduce (from Ticket #98593): 1) Use a Python base image configured with a non-root user. 2) Install pytest and coverage in a user-local directory (e.g., /home/app/.local). 3) Configure a "Run Tests" step with TI enabled. Result : The step fails with ModuleNotFoundError or report discovery errors, despite the tests running successfully in a standard shell step.
0
·
Continuous Integration
Feature Request: Allow Steps to Reuse a Shared Named Container Within a CI Stage (Opt-In)
Problem In Harness CI, each step creates its own ephemeral container even when multiple steps use the same image. This increases build time, image pull overhead, pod/container churn, and Kubernetes load. Many pipelines naturally group related steps (e.g., build + test in the same toolchain), but Harness cannot currently express “reuse this container across steps”. This differs from established patterns in Jenkins, Tekton, and other K8s-based CI systems. ⸻ Proposal (Opt-In) Introduce an optional stage-level feature that allows users to: 1. Define named containers in the stage (e.g., build, node, tools). 2. Assign steps to those containers via a simple container: <name> field. 3. Harness initialises each named container once per pod, and runs all referencing steps inside it sequentially. 4. Default behaviour (one container per step) remains unchanged for users who want strict isolation. ⸻ Value • Performance: avoids repeated container startup and image checks; reduces CI latency. • Efficiency: lowers registry traffic and node/kubelet workload; improves cluster utilisation. • Better modelling: aligns with how teams naturally structure pipelines and with patterns from other CI systems. • Safe & incremental: fully optional; no breaking changes; ideal for advanced users who want faster pipelines. ⸻ Example YAML the spec section could be updated to hold the pod spec before the steps. Something like stage: name: Full SDLC Validation type: CI spec: Opt-in: define shared, named containers once per stage pod: containers: Build & test toolchain - name: build image: maven:3.9-eclipse-temurin-21 could mount a cache volume here in future Image build toolchain (e.g. Kaniko / BuildKit / Docker CLI wrapper) - name: image-builder image: gcr.io/kaniko-project/executor:latest Security tools (SCA, image scan, SBOM) - name: security image: aquasec/trivy:latest steps: 1) Compile + unit test (classic inner-loop) - name: compile-and-unit-tests container: build command: mvn -B clean verify 2) Static analysis / linting using Maven plugins - name: static-analysis container: build command: mvn -B spotbugs:check checkstyle:check 3) Package JAR / artefacts (if not already from previous goal) - name: package-artifacts container: build command: mvn -B package 4) Build container image from Dockerfile using dedicated image builder - name: build-container-image container: image-builder command: > /kaniko/executor --dockerfile=Dockerfile --context=. --destination=registry.example.com/my-team/my-service:${HARNESS_BUILD_ID} 5) Image security scan & SBOM generation - name: security-scan-and-sbom container: security command: > trivy image --scanners vuln,secret,config --format sarif --output trivy-report.sarif registry.example.com/my-team/my-service:${HARNESS_BUILD_ID} 6) Contract/integration tests against the built image or a test deployment - name: contract-tests container: build command: mvn -B -Pintegration-test verify
1
·
Continuous Integration
·
long-term
Load More