> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/continuous-integration/new-to-harness-ci/ci-supported-platforms.md).

# What's supported by Harness CI

Platforms and technologies supported by Harness CI

This page describes supported platforms and technologies for Harness CI specifically.

For information about what's supported for other Harness modules and the overall Harness Platform, see [Supported platforms and technologies](/harness-platform/3.0/in-harness-3.0/platform-whats-supported.md).

### Harness CI supported platforms and technologies <a href="#harness-ci-supported-platforms-and-technologies" id="harness-ci-supported-platforms-and-technologies"></a>

Harness CI supports a variety of platforms, repos, registries, and related technologies. The following sections list entities or providers with first-class support in Harness CI. Additional entities or providers may be supported through unofficial plugins or scripting.

#### Source Code Management (SCM) <a href="#source-code-management-scm" id="source-code-management-scm"></a>

In addition to [built-in codebase cloning](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/codebase-configuration/create-and-configure-a-codebase) and support for Git functionality like [Git LFS](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/codebase-configuration/create-and-configure-a-codebase), [subdirectory cloning](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/codebase-configuration/clone-subdirectory), and [PR status checks](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/codebase-configuration/scm-status-checks), Harness CI supports these SCM providers:

* [AWS CodeCommit](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/connect-to-code-repo)
* [Azure Repos](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/connect-to-a-azure-repo)
* [Bitbucket](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/ref-source-repo-provider/bitbucket-connector-settings-reference)
* [GitHub](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/ref-source-repo-provider/git-hub-connector-settings-reference)
* [GitLab](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/ref-source-repo-provider/git-lab-connector-settings-reference)
* [Harness Code Repository](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/code-repository)
* Other Git providers through the [provider-agnostic Git connector](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/connectors/code-repositories/ref-source-repo-provider/git-connector-settings-reference)

#### Build infrastructure <a href="#build-infrastructure" id="build-infrastructure"></a>

Harness CI offers [Harness-managed and self-managed build infrastructure options](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/set-up-build-infrastructure/which-build-infrastructure-is-right-for-me) for a variety of operating systems and architectures, including:

* Harness CI Cloud (built in, Harness-managed, Linux/Windows/macOS) - supports [Bring Your Own Image (BYOI)](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/platform/references/harness-cloud-byoi) for custom VM images
* Local runners (Linux/Windows/macOS)
* [Kubernetes clusters](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/category/set-up-kubernetes-cluster-build-infrastructures):
  * Amazon Elastic Kubernetes Service (Amazon EKS)
  * Google Kubernetes Engine (GKE)
  * Red Hat OpenShift 4
  * Other, platform agnostic
* [Self-managed VMs](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/category/set-up-vm-build-infrastructures):
  * Microsoft Azure (Linux/Windows)
  * GCP (Linux/Windows)
  * AWS EC2 (Linux/Windows)
  * AWS EC2 (macOS) - Harness recommends Harness CI Cloud for macOS builds due to licensing requirements and the complexity of managing macOS VMs with Anka virtualization.

#### Container registries <a href="#container-registries" id="container-registries"></a>

* Azure Container Registry (ACR)
* Amazon Elastic Container Registry (ECR)
* Google Artifact Registry (GAR)
* Google Container Registry (GCR) (pending deprecation)
* Docker-compliant registries, such as Docker Hub, GitHub Container Registry (GHCR), and JFrog Docker registries
* Other

For more information, see [Build and push artifacts and images](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/build-and-upload-artifacts/build-and-upload-an-artifact).

#### Artifact repositories <a href="#artifact-repositories" id="artifact-repositories"></a>

* JFrog Artifactory
* AWS S3
* GCP GCS
* Sonatype Nexus
* Other

For more information, see [Build and push artifacts and images](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/build-and-upload-artifacts/build-and-upload-an-artifact).

#### Dependencies and caching <a href="#dependencies-and-caching" id="dependencies-and-caching"></a>

Harness CI supports running dependent services, such as Docker-in-Docker, LocalStack, and PostgreSQL, in [Background steps](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/manage-dependencies/dependency-mgmt-strategies).

Harness offers several [caching options](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/category/share-and-cache-ci-data), including:

* Harness Cache Intelligence
* AWS S3
* GCP GCS
* Azure storage

#### Testing frameworks <a href="#testing-frameworks" id="testing-frameworks"></a>

Harness CI supports popular testing frameworks, including:

* Bazel
* CTest
* Cucumber
* DOTNET CLI
* Go
* Gradle
* JUnit
* Maven
* Minitest
* Mocha
* NUnit
* PHPUnit
* Pytest
* RSpec
* Sbt
* Unittest
* Other

In addition to supporting various test types and tools, Harness CI also supports time saving and quality control functionality like test selection, code coverage, and test splitting. For more information, see [Run tests in CI pipelines](https://6a96e7e7a6e2c8c2f1b509cf--harness-developer.netlify.app/docs/continuous-integration/use-ci/run-tests/run-tests-in-ci).

### Harness CI features <a href="#harness-ci-features" id="harness-ci-features"></a>

For an overview of key CI features, see [Harness CI overview](https://developer.harness.io/continuous-integration/new-to-harness-ci/overview) and [Harness CI key concepts](https://developer.harness.io/continuous-integration/new-to-harness-ci/key-concepts).

For information about upcoming and recently released features, see [CI product roadmap](/roadmap/continuous-integration.md) and [CI release notes](/release-notes/continuous-integration.md).

#### Harness CI early access features <a href="#harness-ci-early-access-features" id="harness-ci-early-access-features"></a>

Harness releases some CI features behind feature flags to get feedback from a subset of customers before making them generally available.

You can opt in to the early access (beta) features for Harness CI described in the following table. Contact [Harness Support](mailto:support@harness.io) to enable specific early access features in your Harness account. Include the feature flag or name with your request.

<table><thead><tr><th width="231.265625">Flag</th><th>Description</th><th>Availability</th></tr></thead><tbody><tr><td><code>CI_ENABLE_OUTPUT_SECRETS</code></td><td>Type selection for <a href="https://developer.harness.io/continuous-integration/use-harness-ci/use-harness-ci/run-step-settings#output-variables">output variables in Run steps</a>.</td><td>Beta</td></tr><tr><td><code>CI_USE_LESS_STRICT_EVALUATION_FOR_MAP_VARS</code></td><td>Allows empty environment variables in CI pipelines.</td><td>Beta</td></tr><tr><td><code>CI_ENABLE_VM_DELEGATE_SELECTOR</code></td><td>Delegate selectors for self-managed VM build infrastructures (CI-11545).<br>With this feature flag enabled, you can use <a href="/harness-platform/use-harness-platform/delegates/delegate/manage-delegates/select-delegates-with-selectors.md">delegate selectors</a> with <a href="https://developer.harness.io/continuous-integration/troubleshooting-and-resources/ci-articles-and-faqs/continuous-integration-faqs#self-managed-vm-build-infrastructure">self-managed VM build infrastructure</a>.</td><td>Beta</td></tr><tr><td><code>CI_CODEBASE_SELECTOR</code></td><td>Delegate selectors for codebase tasks (CI-9980).<br>Without this feature flag enabled, delegate selectors are not applied to delegate-related CI codebase tasks.<br>With this feature flag enabled, Harness uses your <a href="/harness-platform/use-harness-platform/delegates/delegate/manage-delegates/select-delegates-with-selectors.md">delegate selectors</a> for delegate-related codebase tasks. Harness prioritizes <a href="/harness-platform/use-harness-platform/delegates/delegate/manage-delegates/select-delegates-with-selectors.md#pipeline-delegate-selector">pipeline selectors</a> over <a href="/harness-platform/use-harness-platform/delegates/delegate/manage-delegates/select-delegates-with-selectors.md#infrastructure-connector">connector selectors</a> for these tasks.</td><td>Beta</td></tr><tr><td><code>CI_OUTPUT_VARIABLES_AS_ENV</code></td><td>Output variables automatically become environment variables (CI-7817, ZD-39203).<br>With this feature flag enabled, Harness automatically makes step output variables available as environment variables for other steps in the same Build (<code>CI</code>) stage. For a Build stage with three steps, Harness makes an output variable from step one available to steps two and three.<br>In other steps in the same stage, you can refer to the output variable by its key without additional identification. For example, you can later reference an output variable called <code>MY_VAR</code> as <code>$MY_VAR</code>. Without this feature flag enabled, you must use an <a href="/harness-platform/3.0/harness-platform-resources/variables-and-expressions/runtime-inputs.md#expressions">expression</a> to reference where the variable originated, such as <code>&#x3C;+steps.stepID.output.outputVariables.MY_VAR></code>.<br>For more information, see <a href="https://developer.harness.io/continuous-integration/use-harness-ci/use-harness-ci/run-step-settings#output-variables">Output variables</a>.</td><td>Beta</td></tr><tr><td><code>CI_REMOTE_DEBUG</code></td><td>Remote debugging (CI-8135, CI-8048)<br>Harness CI supports remote debugging in certain scenarios. You can rerun builds in debug mode through the <strong>Builds</strong>, <strong>Execution</strong>, and <strong>Execution History</strong> pages in the Harness UI. For more information, see <a href="https://developer.harness.io/continuous-integration/troubleshooting-and-resources/troubleshoot-harness-ci/debug-mode#enable-debug-mode">Debug mode</a>.<br>Debug mode supports Python, PowerShell Core (<code>pwsh</code>), and debugging in local runner build infrastructures. Debug mode is not supported in the Self-Managed Enterprise Edition. For more information, see <a href="/continuous-integration/troubleshooting-and-resources/troubleshoot-harness-ci/debug-mode.md">Debug with SSH</a>.</td><td>Beta</td></tr><tr><td><code>CI_INCREASE_DEFAULT_RESOURCES</code></td><td>Used to adjust <a href="/continuous-integration/use-harness-ci/use-harness-ci/set-up-build-infrastructure/resource-limits.md">resource allocation limits</a>. This feature flag increases maximum CPU to 1000m and maximum memory to 3000Mi.</td><td>Beta</td></tr><tr><td><code>CI_CONSERVATIVE_K8_RESOURCE_LIMITS</code></td><td>Used to adjust <a href="/continuous-integration/use-harness-ci/use-harness-ci/set-up-build-infrastructure/resource-limits.md">resource allocation limits</a>. This feature flag sets lite engine resource limits to the default minimum (100m CPU and 100Mi memory).</td><td>Beta</td></tr><tr><td><code>CI_REMOVE_FQN_DEPENDENCY</code></td><td>This flag is useful for steps that use a private Docker registry. With this flag enabled, the step uses the URI specified in the Docker connector. This means you do not need to specify the Fully Qualified Name in the Image field. This change applies to the following steps: <strong>Plugin</strong>, <strong>Background</strong>, <strong>Run</strong>, <strong>Run Tests</strong>, and <strong>Test Intelligence</strong>.</td><td>Beta</td></tr><tr><td><code>CI_EXTRA_ADDON_RESOURCE</code></td><td>Speeds up CI builds by adding more resources for the <code>addon</code>.</td><td>Beta</td></tr><tr><td><code>CI_OVERRIDE_SERVICE_URLS</code></td><td>This flag overrides all Harness service URLs (for example, TI Service and Log Service). These URLs are derived from the <a href="/harness-platform/use-harness-platform/delegates/delegate/delegate-reference/delegate-environment-variables.md#manager_host_and_port">manager URL</a>.</td><td>Beta</td></tr><tr><td><code>CI_POPULATE_CI_VARIABLE</code></td><td>Enforces that the environment variable <code>CI</code> is always <code>true</code> for all builds.</td><td>Beta</td></tr><tr><td><code>CI_IGNORE_TEST_CONNECTION</code></td><td>Skip connector preflight checks (CI-13806).<br>When this account-level feature flag is enabled along with the <code>ignoreTestConnection: true</code> property in a connector's YAML configuration, connection tests always return successful results and bypass connectivity validation. This is useful when network restrictions, split DNS, or firewall policies prevent connection tests from succeeding even though the connector can function properly at runtime. For more information, see <a href="/harness-platform/3.0/harness-platform-resources/connectors/create-a-connector-using-yaml.md">Create a connector using YAML</a>.</td><td>Beta</td></tr><tr><td><code>CI_SCM_TASK_TIMEOUT_CONFIGURABLE</code></td><td>Increase SCM codebase task timeout (CI-22015).<br>Without this feature flag enabled, the SCM codebase task that fetches pull request, branch, or commit metadata uses a 30-second timeout. With this feature flag enabled, Harness uses a 180-second timeout for this task. Enable this flag for accounts with large pull requests or slow Git providers where the default 30-second timeout results in pipeline failures with the error <code>Failed to retrieve codebase info from returned delegate response</code>.</td><td>Beta</td></tr></tbody></table>

{% @harness-feedback/feedback %}
