Non-CAP plugin compatibility for High Availability (active/active) controllers

5 minute read

CloudBees Assurance Program (CAP) plugins (open source or proprietary) are generally compatible with High Availability (HA) controllers.

Non-CAP plugin compatibility falls into the following categories:

  • What has been observed or reported to work or to break.

  • What partially works, with limitations or caveats.

  • What has been inferred from code inspection but not directly observed.

  • What remains untested.

For each plugin below, HA compatibility is indicated as follows:

  • No known issues: No HA-related problems observed or reported.

  • Known limitations: Works with HA-related caveats described in Comments.

  • Known blocking issues: Core functionality does not work with HA.

CloudBees does not support non-CAP plugins and cannot guarantee any particular level of functionality. Not all non-CAP plugins are listed below, and even for a listed plugin, noted compatibility may not cover all use cases or configurations. If you are using any of these plugins, please reach out to CloudBees Support or the CloudBees Professional Services team for advice on alternatives or best practices.

CloudBees recommends that you update all non-CAP plugins to the most recent available version before enabling HA. The compatibility status listed for each plugin applies only to the most recent release of that plugin, and in some cases, a No known issues status reflects changes made specifically to support HA in the past. Plugin functionality can evolve over time and potentially affect HA compatibility.

Table 1. Non-CAP plugin compatibility status
Plugin Compatibility status Comments Recommendation

Known limitations

The Artifactory plugin runs several steps for nontrivial durations that are not durable or resumable like Pipeline sh steps. If a replica exits while one of these steps is running, the build is aborted when adopted by another replica.

Use sh steps (plus withCredentials) and the JFrog CLI instead of this plugin.

If you cannot migrate, mitigate by configuring retry with nonresumable. For more information, refer to Restart pipeline node blocks using the retry option.

Known limitations

The Blue Ocean plugin may not accurately display running builds that are owned by other replicas. This plugin was removed from the CAP in the CloudBees CI 2.568.1.37445 release. It may still work if already installed, but is no longer supported by CloudBees.

For Pipeline visualization, use CloudBees Pipeline Explorer instead.

Known blocking issues

The Crowd2 plugin's cross-replica web sessions do not work due to a non-serialized field. This plugin is also blocked from the Jenkins update center for legal reasons, preventing distribution of any fix.

Use a supported security realm such as LDAP.

Known limitations

The Dashboard View plugin does not accurately display running builds across replicas.

Limit usage to completed builds.

Known limitations

The Docker plugin defaults to deleting containers that were provisioned on demand using a label reference or the dockerNode step, and are not connected to the current instance. These containers are considered orphans.

In an HA controller with multiple replicas, replicas other than the one that launched the container might consider the container orphaned and remove it. Orphan container checks occur every 5 minutes, so builds that take longer than 5 minutes and use agents (containers) provided by this plugin always fail.

Disable this behavior by setting the system property -Dcom.nirima.jenkins.plugins.docker.DockerContainerWatchdog.enabled=false.

Known blocking issues

Replicas using the EC2 Fleet plugin can send conflicting scaling commands to the same Auto Scaling Group, and do not share state about pending instances or scale-in protection. Replicas may also orphan instances or prematurely terminate instances in use by other replicas.

Use the supported Amazon EC2 plugin instead. For more information, refer to Provision EC2 agents in HA.

Known blocking issues

The Docker Swarm plugin does not support resuming Pipeline builds and is officially deprecated, with no further releases expected.

  • The Swarm Agents Cloud plugin is the replacement recommended by the plugin maintainer, but it is unknown whether it works in HA controllers.

  • The Kubernetes plugin is supported and works correctly in HA controllers.

No known issues

The File Parameter plugin supports file uploads as Pipeline parameters, using two parameter types:

  • stashedFile: For larger files. Builds using a stashedFile parameter run on the replica that processed the trigger. For more information, refer to Workload distribution in HA.

  • base64File: For small files only.

Use the File Parameter plugin rather than Jenkins core’s built-in File Parameter type, which has been observed to fail in HA controllers for Freestyle builds.

Known blocking issues

Each replica using the Gerrit Trigger plugin makes independent outbound SSH connections to Gerrit, resulting in duplicated events. Build cancellation logic is also broken across replicas.

Contact CloudBees Professional Services.

Known blocking issues

The JiraTestResultReporter plugin stores the mapping between Jira issues and test failures idiosyncratically in $JENKINS_HOME, which does not work across replicas.

Use the sh step (plus withCredentials) and the Atlassian CLI instead of this plugin.

No known issues

N/A

N/A

Known blocking issues

Replicas using the Lockable Resources plugin do not consistently share information about lock state, and are unable to resume builds running on other replicas after releasing a lock.

The most commonly used functionality of this plugin can be emulated in HA mode. For more information, refer to Emulate the lock step in HA controllers.

No known issues

N/A

N/A

Known blocking issues

HA controllers use a different build log streaming mode for scalability that the Logstash plugin does not support. For more information, refer to JENKINS-76374.

No known issues

The Orka by MacStadium plugin is reported to work well in HA. The instance cap configuration functions as a per-replica limit rather than a per-controller limit, the same limitation described in Provision GCE agents in HA.

N/A

No known issues

N/A

N/A

No known issues

N/A

N/A

No known issues

The Parameterized Scheduler plugin is specifically supported by the HA system. Just as with built-in timer triggers, only one replica considers the crontab in a given time slot.

N/A

No known issues

The Pipeline Utility Steps plugin's nodesByLabel step specifically skips HA executor clones of permanent agents.

N/A

No known issues

The SonarQube Scanner plugin is specifically supported by the HA system. When a webhook is received from SonarQube, it is broadcast to all controller replicas; only one actually processes the payload.

N/A

No known issues

The Swarm plugin is supported as a special case of inbound permanent agents. The default Swarm agent behavior is customized to create a persisted agent, rather than an ephemeral one, with executor clones created on demand so that different replicas can use them concurrently. controller replicas track whether the agent has been connected recently, rather than deleting it immediately upon the main agent’s disconnection, and only delete it to clean up after a configurable delay (the default is 15 minutes).

Use the plugin normally, including -executors and -webSocket. You do not need, and should not use, lifecycle-related options such as:

  • -keepDisconnectedClients

  • -deleteExistingClients

  • -disableClientsUniqueId

No known issues

The Webhook Step plugin is specifically supported by the HA system. When a webhook is received, it is broadcast to all controller replicas; only one actually processes the payload.

N/A