This is an automated email from the ASF dual-hosted git repository. nickva pushed a commit to branch capture-jenkins-config in repository https://gitbox.apache.org/repos/asf/couchdb-ci.git
commit 83c1fc7b8f098fc3b24e799a9877502ab945c430 Author: Nick Vatamaniuc <[email protected]> AuthorDate: Mon Jul 27 13:26:07 2026 -0400 Jenkins CI capture / backup We had another incident over the last few days where: * CI jobs had disappeared * All worker credentials were invalidated * Some workers had completely disappeared Restoring it was a pain. Some items were restored with help from ASF infra but they ended up in a different place (path), others were restored that were from more than 5 years ago (referencing 2.3 release branches). Other bits and pieces had to be recreated and validated by hand. Here we try to capture a bit more now to hopefully be able to restore it quicker. The job definition XML files are now included along with a few more yaml config files besides just `jenkins.yaml`. It's still not a single backup/restore kind of a default but it's a bit more thorough than before. This will eventually becomes stale but it's better to have something at least than nothing at all. --- jenkins-config-backup/bundle.yaml | 15 +++ jenkins-config-backup/items.yaml | 3 + jenkins-config-backup/jenkins.yaml | 146 ++++++++------------ jenkins-config-backup/jobs/FullPlatformMatrix.xml | 84 ++++++++++++ jenkins-config-backup/jobs/PullRequests.xml | 81 ++++++++++++ .../jobs/UpdateDockerContainers.xml | 52 ++++++++ jenkins-config-backup/plugin-catalog.yaml | 38 ++++++ jenkins-config-backup/plugins.yaml | 147 +++++++++++++++++++++ jenkins-config-backup/rbac.yaml | 59 +++++++++ jenkins-config-backup/readme.md | 120 ++++++++++++----- .../system_information_plugins.md | 140 -------------------- 11 files changed, 621 insertions(+), 264 deletions(-) diff --git a/jenkins-config-backup/bundle.yaml b/jenkins-config-backup/bundle.yaml new file mode 100644 index 0000000..a95d3c1 --- /dev/null +++ b/jenkins-config-backup/bundle.yaml @@ -0,0 +1,15 @@ +apiVersion: "1" +id: "jenkins" +description: "Autogenerated bundle descriptor" +version: "1" +jcasc: + - "jenkins.yaml" +plugins: + - "plugins.yaml" +catalog: + - "plugin-catalog.yaml" +rbac: + - "rbac.yaml" +items: + - "items.yaml" + diff --git a/jenkins-config-backup/items.yaml b/jenkins-config-backup/items.yaml new file mode 100644 index 0000000..4e94c00 --- /dev/null +++ b/jenkins-config-backup/items.yaml @@ -0,0 +1,3 @@ +removeStrategy: + rbac: SYNC + items: NONE diff --git a/jenkins-config-backup/jenkins.yaml b/jenkins-config-backup/jenkins.yaml index b2a2a86..dd7f88b 100644 --- a/jenkins-config-backup/jenkins.yaml +++ b/jenkins-config-backup/jenkins.yaml @@ -10,11 +10,13 @@ credentials: system: domainCredentials: - credentials: - - string: - description: "Admin access to ASF Github repo hooks" - id: "jenkins-cm1-pr-hooks" + - usernamePassword: + description: "dockerhub_creds (original one was blown away so had to recreate\ + \ using own dockerhub token)" + id: "dockerhub_creds" + password: "...redacted..." scope: GLOBAL - secret: "...redacted..." + username: "...redacted..." domain: { } user: { @@ -26,17 +28,9 @@ jenkins: excludeClientIPFromCrumb: false disableRememberMe: false disabledAdministrativeMonitors: - - "hudson.node_monitors.MonitorMarkedNodeOffline" - "com.cloudbees.jenkins.plugins.administrative_monitors.BlueOceanMonitor2" - - "com.cloudbees.jenkins.plugins.administrative_monitors.MavenIntegrationPluginMonitor" - "com.cloudbees.jenkins.plugins.administrative_monitors.TomcatMonitor" - - "OldData" - - "com.cloudbees.jenkins.plugins.administrative_monitors.unsupported_plugin.WikiTextMonitor" - - "hudson.util.DoubleLaunchChecker" - "jenkins.security.csp.impl.CspRecommendation" - - "com.cloudbees.analytics.gatherer.SegmentQueueOverwhelmedMonitor" - - "com.cloudbees.jenkins.plugins.administrative_monitors.BlueOceanMonitor" - - "com.cloudbees.jenkins.plugins.assurance.SecurityWarningsWatch" labelAtoms: - name: "asfminidebian" - name: "built-in" @@ -57,10 +51,10 @@ jenkins: - name: "freebsd-x86_64" - name: "linux1" - name: "macos" - - name: "ppc64le" - - name: "s390x" + - name: "ppc64le_own" + - name: "s390x_own" - name: "ubuntu" - - name: "ubuntu-fra1-10" + - name: "ubuntu-c-4-nyc3-01" - name: "ubuntu-fsn-1-09" - name: "ubuntu-nc-arm64-12" - name: "ubuntu-nc-x86-11" @@ -72,17 +66,16 @@ jenkins: rawHtml: disableSyntaxHighlighting: false mode: NORMAL - noUsageStatistics: true nodeMonitors: - "architecture" - "clock" - diskSpace: - freeSpaceThreshold: "1GB" - freeSpaceWarningThreshold: "2GB" + freeSpaceThreshold: "1GiB" + freeSpaceWarningThreshold: "2GiB" - "swapSpace" - tmpSpace: - freeSpaceThreshold: "1GB" - freeSpaceWarningThreshold: "2GB" + freeSpaceThreshold: "1GiB" + freeSpaceWarningThreshold: "2GiB" - "responseTime" nodes: - permanent: @@ -95,11 +88,6 @@ jenkins: internalDir: "remoting" name: "asfminidebian" nodeDescription: "Ubuntu Debian ARM64 VM. Donated by Jan." - nodeProperties: - - envVars: - env: - - key: "MAVEN_OPTS" - value: "" remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: @@ -111,12 +99,7 @@ jenkins: failIfWorkDirIsMissing: false internalDir: "remoting" name: "couchdb-freebsd-arm64" - nodeDescription: "FreeBSD Build Node" - nodeProperties: - - envVars: - env: - - key: "MAVEN_OPTS" - value: "" + nodeDescription: "FreeBSD Build Node on a06.cabal5.net" remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: @@ -136,8 +119,6 @@ jenkins: value: "clang" - key: "CPP" value: "clang++" - - key: "MAVEN_OPTS" - value: "" remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: @@ -263,11 +244,6 @@ jenkins: failIfWorkDirIsMissing: false internalDir: "remoting" name: "couchdb-worker-x86-64-ubuntu-dal-1-07" - nodeProperties: - - envVars: - env: - - key: "MAVEN_OPTS" - value: "" remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: @@ -287,7 +263,7 @@ jenkins: remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: - labelString: "s390x" + labelString: "s390x_own" launcher: inbound: workDirSettings: @@ -305,7 +281,7 @@ jenkins: remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: - labelString: "ppc64le" + labelString: "ppc64le_own" launcher: inbound: workDirSettings: @@ -329,7 +305,7 @@ jenkins: disabled: false failIfWorkDirIsMissing: false internalDir: "remoting" - name: "ubuntu-fra1-10" + name: "ubuntu-c-4-nyc3-01" nodeDescription: "Ubuntu x86_64. Donated by Digital Ocean" nodeProperties: - envVars: @@ -348,11 +324,6 @@ jenkins: internalDir: "remoting" name: "ubuntu-fsn-1-09" nodeDescription: "Ubuntu x86_64. Donated by Jan" - nodeProperties: - - envVars: - env: - - key: "MAVEN_OPTS" - value: "" remoteFS: "/home/jenkins" retentionStrategy: "always" - permanent: @@ -395,16 +366,23 @@ jenkins: inbound: workDirSettings: disabled: false - failIfWorkDirIsMissing: true + failIfWorkDirIsMissing: false internalDir: "remoting" - mode: EXCLUSIVE name: "win2022" + nodeDescription: "Windows Server 2022. Donated by Neighbourhoodie. Hosted by\ + \ Alfahosting." nodeProperties: - - envVars: - env: - - key: "MAVEN_OPTS" - value: "" - remoteFS: "C:\\tools\\jenkins-agent\\" + - owners: + onFirstLaunchFailure: false + onLaunchFailure: false + onOffline: true + onOnline: true + onTemporaryOfflineApplied: false + onTemporaryOfflineRemoved: false + owners: |- + [email protected] + [email protected] + remoteFS: "C:\\tools\\jenkins-agent" retentionStrategy: "always" numExecutors: 0 primaryView: @@ -443,8 +421,8 @@ jenkins: beekeeper: enabled: true securityWarnings: - enabledForCore: true - enabledForPlugins: true + enabledForCore: false + enabledForPlugins: false upgrades: autoDowngradePlugins: false autoUpgradePlugins: true @@ -553,24 +531,6 @@ security: sSHD: port: -1 scriptApproval: - approvedScriptHashes: - - "017d0db438428731cd600b6ebda805065433520f" - - "0583c5a085f38ff3b1ddd5de755952700f914c07" - - "1fe2a96b934459c27b025bff5e5bf9ec000ef381" - - "314de9326bf4606a5275a1d3f116d446f0471e9b" - - "48126fb9724f32d3e1afb1cb4ce72a0889134dd3" - - "639c21f8c675b1f55597a815c6519ed72b7917ad" - - "7d0ec331043289e728ad47680386042d43766d93" - - "8d7dffa0fa077b4018bc76f8b3ebd7bc48459fcc" - - "a78cc9c5f6fee2ca1fa03dce3b43503e7c57e5dd" - - "ad84649250e60d2a1ff6dd112e48aa556e82e3cd" - - "c17143c88ad09378dbd0a7980e8472136aa0a6ad" - - "c82d4a7e5ced620b4fc145a54b4a3bc8e6bc5d83" - - "ccd23a74df0c6fdfef512c9d086977a77e0022e4" - - "e1395200eda9e5e0089775cad3d99d29b7032daa" - - "ee7d1ca969e5906b9bb51f08cdc5cdcb29ad72df" - - "fbcbad05f0620332f64abae08788612d140703d3" - - "fca3e2dae16894945401bddf7c73d9a545fd61a0" forceSandbox: false unclassified: administrativeMonitorsConfiguration: { @@ -599,6 +559,12 @@ unclassified: variableInterpolationEnabledForNonAdmin: false cloudBeesSCMReporting: enabled: true + cloudbeesPipelineExplorer: + autoPollingEnabled: true + autoPollingIntervalSeconds: 10 + enabled: true + pluggableStorageEnabled: false + searchMaxIndexSize: 1000 cloudbeesPlatform: { } computerRetentionCheckInterval: { @@ -607,18 +573,8 @@ unclassified: } defaultDisplayUrlProvider: { } - defaultFolderConfiguration: - healthMetrics: - - worstChildHealthMetric: - recursive: true - - "averageChildHealthMetric" - - jobStatusHealthMetric: - countVirginJobs: false - failure: true - success: true - unbuilt: true - unstable: true - - "projectEnabledHealthMetric" + defaultFolderConfiguration: { + } defaultView: { } envVarsFilter: { @@ -631,16 +587,13 @@ unclassified: gitHubConfiguration: apiRateLimitChecker: ThrottleForNormalize gitHubPluginConfig: - configs: - - credentialsId: "jenkins-cm1-pr-hooks" - name: "ASF Github" hookUrl: "https://ci-couchdb.apache.org/github-webhook/" globalConfigFiles: { } globalConfigurationImpl: { } - globalDefaultFlowDurabilityLevel: - durabilityHint: PERFORMANCE_OPTIMIZED + globalDefaultFlowDurabilityLevel: { + } globalLibraries: { } globalUntrustedLibraries: { @@ -774,6 +727,10 @@ tool: name: "jdk_27_latest" - home: "F:\\jenkins\\tools\\java\\latest27" name: "jdk_27_latest_windows" + - home: "/home/jenkins/tools/java/latest28" + name: "jdk_28_latest" + - home: "F:\\jenkins\\tools\\java\\latest28" + name: "jdk_28_latest_windows" - home: "/home/jenkins/tools/java/oraclejdk-1.8.0-291" name: "oracle_jdk_1.8.0_291" - home: "F:\\jenkins\\tools\\java\\oraclejdk-1.8.0-291" @@ -810,6 +767,10 @@ tool: name: "openjdk_27_ea_1" - home: "F:\\jenkins\\tools\\java\\openjdk-27-ea+1" name: "openjdk_27_ea_1_windows" + - home: "/home/jenkins/tools/java/openjdk-28-ea+6" + name: "openjdk_28_ea_6" + - home: "F:\\jenkins\\tools\\java\\openjdk-28-ea+6" + name: "openjdk_28_ea_6_windows" - home: "/home/jenkins/tools/java/adoptium_jdk_8u362_b09" name: "adoptium_jdk_8u362_b09" - home: "F:\\jenkins\\tools\\java\\adoptium_jdk_8u362_b09" @@ -858,6 +819,10 @@ tool: name: "ibm_semeru_21.0.2_13" - home: "F:\\jenkins\\tools\\java\\ibm-semeru-21.0.2_13_openj9-0.43.0" name: "ibm_semeru_21.0.2_13_windows" + - home: "/home/jenkins/tools/java/ibm-semeru-21.0.9+10-openj9-0.56.0" + name: "ibm_semeru_21.0.9_10" + - home: "F:\\jenkins\\tools\\java\\ibm-semeru-21.0.9+10-openj9-0.56.0" + name: "ibm_semeru_21.0.9_10_windows" maven: installations: - home: "/home/jenkins/tools/maven/latest" @@ -962,3 +927,4 @@ tool: triggerDownstreamUponResultNotBuilt: false triggerDownstreamUponResultSuccess: true triggerDownstreamUponResultUnstable: false + diff --git a/jenkins-config-backup/jobs/FullPlatformMatrix.xml b/jenkins-config-backup/jobs/FullPlatformMatrix.xml new file mode 100644 index 0000000..d724f6c --- /dev/null +++ b/jenkins-config-backup/jobs/FullPlatformMatrix.xml @@ -0,0 +1,84 @@ +<?xml version='1.1' encoding='UTF-8'?> +<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="[email protected]_4ea_780798"> + <actions/> + <description>This job builds on our main and release branches, and builds packages on all </description> + <displayName>Main + Release</displayName> + <properties> + <org.jenkinsci.plugins.configfiles.folder.FolderConfigFileProperty plugin="[email protected]"> + <configs class="sorted-set"> + <comparator class="org.jenkinsci.plugins.configfiles.ConfigByIdComparator"/> + </configs> + </org.jenkinsci.plugins.configfiles.folder.FolderConfigFileProperty> + <org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig plugin="[email protected]_eda_7"> + <dockerLabel></dockerLabel> + <registry plugin="[email protected]_94f11a_3"/> + </org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig> + <com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty plugin="[email protected]"> + <properties></properties> + </com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty> + <org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverrideProperty plugin="[email protected]_00c04177b_b_"> + <settings class="jenkins.mvn.DefaultSettingsProvider"/> + <globalSettings class="jenkins.mvn.DefaultGlobalSettingsProvider"/> + <override>false</override> + </org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverrideProperty> + </properties> + <folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="[email protected]_b_460ef"> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + </folderViews> + <healthMetrics> + <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="[email protected]"> + <nonRecursive>false</nonRecursive> + </com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric> + <com.cloudbees.hudson.plugins.folder.health.AverageChildHealthMetric plugin="[email protected]"/> + <com.cloudbees.hudson.plugins.folder.health.JobStatusHealthMetric plugin="[email protected]"> + <success>true</success> + <failure>true</failure> + <unstable>true</unstable> + <unbuilt>true</unbuilt> + <countVirginJobs>false</countVirginJobs> + </com.cloudbees.hudson.plugins.folder.health.JobStatusHealthMetric> + <com.cloudbees.hudson.plugins.folder.health.ProjectEnabledHealthMetric plugin="[email protected]"/> + </healthMetrics> + <icon class="com.cloudbees.hudson.plugins.folder.icons.BuiltinFolderIcon" plugin="[email protected]"> + <baseName>star-gold</baseName> + </icon> + <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="[email protected]"> + <pruneDeadBranches>true</pruneDeadBranches> + <daysToKeep>-1</daysToKeep> + <numToKeep>10</numToKeep> + <abortBuilds>true</abortBuilds> + </orphanedItemStrategy> + <triggers/> + <disabled>false</disabled> + <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="[email protected]_b_460ef"> + <data> + <jenkins.branch.BranchSource> + <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="[email protected]_d580c1a_b_a_"> + <id>2</id> + <apiUri>https://api.github.com</apiUri> + <credentialsId>5f95d117-af3b-452a-9e5c-4bddb22a67f4</credentialsId> + <repoOwner>apache</repoOwner> + <repository>couchdb</repository> + <repositoryUrl>https://github.com/apache/couchdb.git</repositoryUrl> + <traits> + <org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait> + <strategyId>1</strategyId> + </org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait> + <jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait plugin="[email protected]_5c"> + <includes>main jenkins-* 3.5.*</includes> + <excludes></excludes> + </jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait> + </traits> + </source> + <strategy class="jenkins.branch.DefaultBranchPropertyStrategy"> + <properties class="empty-list"/> + </strategy> + </jenkins.branch.BranchSource> + </data> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + </sources> + <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory"> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + <scriptPath>build-aux/Jenkinsfile</scriptPath> + </factory> +</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject> diff --git a/jenkins-config-backup/jobs/PullRequests.xml b/jenkins-config-backup/jobs/PullRequests.xml new file mode 100644 index 0000000..307e26d --- /dev/null +++ b/jenkins-config-backup/jobs/PullRequests.xml @@ -0,0 +1,81 @@ +<?xml version='1.1' encoding='UTF-8'?> +<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="[email protected]_4ea_780798"> + <actions/> + <description>This job builds all GitHub pull requests against apache/couchdb.</description> + <displayName>Pull Requests</displayName> + <properties> + <org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig plugin="[email protected]_eda_7"> + <dockerLabel></dockerLabel> + <registry plugin="[email protected]_94f11a_3"> + <credentialsId>5f95d117-af3b-452a-9e5c-4bddb22a67f4</credentialsId> + </registry> + </org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig> + <com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty plugin="[email protected]"> + <properties></properties> + </com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty> + <org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverrideProperty plugin="[email protected]_00c04177b_b_"> + <settings class="jenkins.mvn.DefaultSettingsProvider"/> + <globalSettings class="jenkins.mvn.DefaultGlobalSettingsProvider"/> + <override>false</override> + </org.jenkinsci.plugins.pipeline.maven.MavenConfigFolderOverrideProperty> + </properties> + <folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="[email protected]_b_460ef"> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + </folderViews> + <healthMetrics> + <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="[email protected]"> + <nonRecursive>false</nonRecursive> + </com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric> + <com.cloudbees.hudson.plugins.folder.health.AverageChildHealthMetric plugin="[email protected]"/> + <com.cloudbees.hudson.plugins.folder.health.JobStatusHealthMetric plugin="[email protected]"> + <success>true</success> + <failure>true</failure> + <unstable>true</unstable> + <unbuilt>true</unbuilt> + <countVirginJobs>false</countVirginJobs> + </com.cloudbees.hudson.plugins.folder.health.JobStatusHealthMetric> + <com.cloudbees.hudson.plugins.folder.health.ProjectEnabledHealthMetric plugin="[email protected]"/> + </healthMetrics> + <icon class="com.cloudbees.hudson.plugins.folder.icons.BuiltinFolderIcon" plugin="[email protected]"> + <baseName>user</baseName> + </icon> + <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="[email protected]"> + <pruneDeadBranches>true</pruneDeadBranches> + <daysToKeep>15</daysToKeep> + <numToKeep>20</numToKeep> + <abortBuilds>true</abortBuilds> + </orphanedItemStrategy> + <triggers/> + <disabled>false</disabled> + <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="[email protected]_b_460ef"> + <data> + <jenkins.branch.BranchSource> + <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="[email protected]_d580c1a_b_a_"> + <id>1</id> + <apiUri>https://api.github.com</apiUri> + <credentialsId>5f95d117-af3b-452a-9e5c-4bddb22a67f4</credentialsId> + <repoOwner>apache</repoOwner> + <repository>couchdb</repository> + <repositoryUrl>https://github.com/apache/couchdb.git</repositoryUrl> + <traits> + <org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait> + <strategyId>1</strategyId> + </org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait> + <org.jenkinsci.plugins.github__branch__source.ForkPullRequestDiscoveryTrait> + <strategyId>1</strategyId> + <trust class="org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission"/> + </org.jenkinsci.plugins.github__branch__source.ForkPullRequestDiscoveryTrait> + </traits> + </source> + <strategy class="jenkins.branch.DefaultBranchPropertyStrategy"> + <properties class="empty-list"/> + </strategy> + </jenkins.branch.BranchSource> + </data> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + </sources> + <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory"> + <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> + <scriptPath>build-aux/Jenkinsfile</scriptPath> + </factory> +</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject> diff --git a/jenkins-config-backup/jobs/UpdateDockerContainers.xml b/jenkins-config-backup/jobs/UpdateDockerContainers.xml new file mode 100644 index 0000000..0106fc6 --- /dev/null +++ b/jenkins-config-backup/jobs/UpdateDockerContainers.xml @@ -0,0 +1,52 @@ +<?xml version='1.1' encoding='UTF-8'?> +<flow-definition plugin="[email protected]_423c255d6d9"> + <actions/> + <description>This Pipeline job runs on all Docker-capable nodes.
 +
 +It ensures all of the necessary Docker images for CI work
 +are downloaded and functional on every machine.</description> + <keepDependencies>false</keepDependencies> + <properties> + <jenkins.model.BuildDiscarderProperty> + <strategy class="hudson.tasks.LogRotator"> + <daysToKeep>7</daysToKeep> + <numToKeep>-1</numToKeep> + <artifactDaysToKeep>-1</artifactDaysToKeep> + <artifactNumToKeep>-1</artifactNumToKeep> + <removeLastBuild>false</removeLastBuild> + </strategy> + </jenkins.model.BuildDiscarderProperty> + <org.jenkinsci.plugins.workflow.job.properties.DurabilityHintJobProperty> + <hint>PERFORMANCE_OPTIMIZED</hint> + </org.jenkinsci.plugins.workflow.job.properties.DurabilityHintJobProperty> + <org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty> + <triggers> + <hudson.triggers.TimerTrigger> + <spec>TZ=UTC +H H(3-8) * * 7</spec> + </hudson.triggers.TimerTrigger> + </triggers> + </org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty> + </properties> + <definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="[email protected]_"> + <script>def nodes = [:] + +(nodesByLabel('docker') + nodesByLabel('s390x') + nodesByLabel('ppc64le')).each { + nodes[it] = { -> + node(it) { + stage("docker-prune-refresh@${it}") { + sh ''' + wget -N https://raw.githubusercontent.com/apache/couchdb-ci/main/pull-all-couchdbdev-docker + bash ./pull-all-couchdbdev-docker + ''' + } + } + } +} + +parallel nodes</script> + <sandbox>true</sandbox> + </definition> + <triggers/> + <disabled>false</disabled> +</flow-definition> diff --git a/jenkins-config-backup/plugin-catalog.yaml b/jenkins-config-backup/plugin-catalog.yaml new file mode 100644 index 0000000..c9c9e6d --- /dev/null +++ b/jenkins-config-backup/plugin-catalog.yaml @@ -0,0 +1,38 @@ +type: plugin-catalog +version: '1' +name: jenkins +displayName: Autogenerated catalog from jenkins +configurations: +- description: Exported plugins + includePlugins: + build-discarder: + version: 158.vce570d01ce4c + build-timestamp: + version: 1.1.1 + cloud-stats: + version: 423.v63f017a_f582c + docker-workflow: + version: 634.vedc7242b_eda_7 + embeddable-build-status: + version: 637.vd878e68178f8 + jackson-annotations2-api: + version: 2.22-19.v10a_a_582ea_26e + jackson3-api: + version: 3.2.1-92.vd25c2e23c180 + jclouds-jenkins: + version: '2.44' + pipeline-graph-view: + version: 777.vdeb_113b_b_94da_ + pipeline-utility-steps: + version: 3.810.va_7672d206740 + publish-over: + version: 238.v1db_583004c9b_ + publish-over-ssh: + version: 390.vb_f56e7405751 + snakeyaml-engine-api: + version: 3.0.1-5.vd98ea_ff3b_92e + timestamper: + version: '1.30' + woodstox-core-api: + version: 7.2.1-6.v3718a_a_11f5c4 + diff --git a/jenkins-config-backup/plugins.yaml b/jenkins-config-backup/plugins.yaml new file mode 100644 index 0000000..84f4129 --- /dev/null +++ b/jenkins-config-backup/plugins.yaml @@ -0,0 +1,147 @@ +plugins: +- id: antisamy-markup-formatter +- id: apache-httpcomponents-client-4-api +- id: asm-api +- id: authentication-tokens +- id: aws-credentials +- id: aws-java-sdk-ec2 +- id: aws-java-sdk-minimal +- id: aws-java-sdk2-core +- id: aws-java-sdk2-ec2 +- id: aws-java-sdk2-netty-nio-client +- id: aws-java-sdk2-s3 +- id: azure-sdk +- id: bootstrap5-api +- id: bouncycastle-api +- id: branch-api +- id: build-discarder +- id: build-timestamp +- id: caffeine-api +- id: checks-api +- id: cloud-stats +- id: cloudbees-administrative-monitors +- id: cloudbees-analytics +- id: cloudbees-assurance +- id: cloudbees-cache-step +- id: cloudbees-casc-client +- id: cloudbees-casc-items-api +- id: cloudbees-casc-shared +- id: cloudbees-folder +- id: cloudbees-folders-plus +- id: cloudbees-github-reporting +- id: cloudbees-license +- id: cloudbees-license-tracker +- id: cloudbees-nodes-plus +- id: cloudbees-pipeline-explorer +- id: cloudbees-platform-common +- id: cloudbees-plugin-usage +- id: cloudbees-quiet-start +- id: cloudbees-ssh-slaves +- id: cloudbees-uc-data-api +- id: cloudbees-unified-ui +- id: cloudbees-workflow-aggregator +- id: command-launcher +- id: commons-compress-api +- id: commons-lang3-api +- id: commons-text-api +- id: config-file-provider +- id: configuration-as-code +- id: credentials +- id: credentials-binding +- id: declarative-pipeline-migration-assistant +- id: declarative-pipeline-migration-assistant-api +- id: display-url-api +- id: docker-commons +- id: docker-workflow +- id: durable-task +- id: echarts-api +- id: eddsa-api +- id: embeddable-build-status +- id: font-awesome-api +- id: git +- id: git-client +- id: github +- id: github-api +- id: github-branch-source +- id: gson-api +- id: handy-uri-templates-2-api +- id: htmlpublisher +- id: instance-identity +- id: ionicons-api +- id: jackson-annotations2-api +- id: jackson2-api +- id: jackson3-api +- id: jakarta-activation-api +- id: jakarta-mail-api +- id: jakarta-xml-bind-api +- id: javax-activation-api +- id: javax-mail-api +- id: jaxb +- id: jclouds-jenkins +- id: jdk-tool +- id: jjwt-api +- id: joda-time-api +- id: jquery3-api +- id: jsch +- id: json-api +- id: json-path-api +- id: junit +- id: ldap +- id: mailer +- id: mapdb-api +- id: metrics +- id: mina-sshd-api-common +- id: mina-sshd-api-core +- id: mina-sshd-api-scp +- id: mina-sshd-api-sftp +- id: nectar-license +- id: nectar-rbac +- id: netty-api +- id: okhttp-api +- id: operations-center-agent +- id: operations-center-client +- id: operations-center-context +- id: oss-symbols-api +- id: pipeline-graph-view +- id: pipeline-groovy-lib +- id: pipeline-input-step +- id: pipeline-maven +- id: pipeline-maven-api +- id: pipeline-model-api +- id: pipeline-model-definition +- id: pipeline-model-extensions +- id: pipeline-stage-step +- id: pipeline-stage-tags-metadata +- id: pipeline-utility-steps +- id: plain-credentials +- id: plugin-util-api +- id: prism-api +- id: publish-over +- id: publish-over-ssh +- id: pubsub-light +- id: scm-api +- id: script-security +- id: snakeyaml-api +- id: snakeyaml-engine-api +- id: ssh-credentials +- id: ssh-slaves +- id: sshd +- id: structs +- id: support-core +- id: timestamper +- id: token-macro +- id: trilead-api +- id: unique-id +- id: user-activity-monitoring +- id: variant +- id: woodstox-core-api +- id: workflow-api +- id: workflow-basic-steps +- id: workflow-cps +- id: workflow-durable-task-step +- id: workflow-job +- id: workflow-multibranch +- id: workflow-scm-step +- id: workflow-step-api +- id: workflow-support + diff --git a/jenkins-config-backup/rbac.yaml b/jenkins-config-backup/rbac.yaml new file mode 100644 index 0000000..26a8e84 --- /dev/null +++ b/jenkins-config-backup/rbac.yaml @@ -0,0 +1,59 @@ +removeStrategy: + rbac: SYNC +roles: +- filterable: true + permissions: + - hudson.model.Hudson.Manage + - hudson.model.Computer.Connect + - com.cloudbees.jenkins.plugins.casc.permissions.CascPermission.Item + - jenkins.metrics.api.Metrics.View + - com.cloudbees.jenkins.plugins.casc.permissions.CascPermission.Read + - nectar.plugins.rbac.groups.Group.Manage + - hudson.model.Hudson.Administer + - hudson.model.Item.Cancel + - com.cloudbees.plugins.credentials.CredentialsProvider.View + - hudson.model.Computer.Delete + - hudson.model.Item.Build + - hudson.model.Item.Move + - com.cloudbees.jenkins.plugins.casc.permissions.CascPermission.Administer + - com.cloudbees.plugins.credentials.CredentialsProvider.Update + - hudson.model.Item.Create + - com.cloudbees.plugins.credentials.CredentialsProvider.Delete + - hudson.model.Run.Replay + - jenkins.metrics.api.Metrics.ThreadDump + - hudson.model.View.Create + - hudson.model.Computer.Secure + - hudson.model.Computer.Configure + - nectar.plugins.rbac.roles.Role.Filter + - hudson.model.Run.Update + - hudson.model.View.Delete + - hudson.model.Run.Delete + - hudson.model.Computer.Create + - com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains + - hudson.model.View.Configure + - hudson.model.Item.Promote + - com.cloudbees.jenkins.support.SupportPlugin.DownloadBundle + - hudson.model.Computer.Build + - hudson.model.Item.Configure + - hudson.model.Item.Read + - jenkins.metrics.api.Metrics.HealthCheck + - nectar.plugins.rbac.groups.Group.Create + - hudson.scm.SCM.Tag + - hudson.model.Item.Discover + - hudson.model.Item.ViewStatus + - hudson.model.Hudson.Read + - nectar.plugins.rbac.roles.Role.View + - hudson.model.Item.Workspace + - hudson.model.Computer.Provision + - nectar.plugins.rbac.groups.Group.Configure + - nectar.plugins.rbac.groups.Group.Delete + - hudson.model.View.Read + - hudson.model.Item.Delete + - com.cloudbees.plugins.credentials.CredentialsProvider.Create + - hudson.model.Computer.Disconnect + - hudson.model.Item.Request + - nectar.plugins.rbac.groups.Group.View + name: authenticated +- filterable: true + name: anonymous + diff --git a/jenkins-config-backup/readme.md b/jenkins-config-backup/readme.md index 4e26a5c..4716e6a 100644 --- a/jenkins-config-backup/readme.md +++ b/jenkins-config-backup/readme.md @@ -1,57 +1,115 @@ +This is a backed up state of the Apache CouchDB Jenkins instance +(https://ci-couchdb.apache.org/, a CloudBees CI client controller attached to +the https://jenkins-ccos.apache.org/ operations center). -This is an attempt to have a backed up state of the Apache CouchDB Jenkins instance. +Last captured: 2026-07-27, controller version 2.541.2.35785-rolling, +immediately after the post-migration restore was verified green. -This became relevant since https://issues.apache.org/jira/browse/INFRA-27718 , when a Jenkins upgrade completely nerfed our CI pipeline and it took a bit of effort to restore it. Most of it was having to rediscover which plugins to reinstall and what configuration was now missing or erased. +How to capture +--- +Everything below is fetched while logged in to the controller. The one-stop +endpoint is the **CloudBees CasC bundle export**: -The files are: + https://ci-couchdb.apache.org/core-casc-export - * `jenkins.yml` : Dump of https://ci-couchdb.apache.org/manage/configuration-as-code/ with some license and credential removed - - * `system_information_plugins.md` : The list of plugins from Manage Jenkins > System Information > Plugins. Just a plain copy and paste from the browser interface into the file. - - -The general description of the main sections in Jenkins, in case the files above don't capture it: - - * `Controllers > CouchDB > ci-couchdb.apache.org > CouchDB > Main + Release > Configuration`: - What it does: Builder for main, x.y.* and jenkins-* branches +It returns a single text stream with `bundle.yaml`, `jenkins.yaml`, +`plugins.yaml`, `plugin-catalog.yaml`, `rbac.yaml` and `items.yaml` sections, +which are stored here split into files. (The OSS equivalent for just the +system config is `POST /manage/configuration-as-code/export`, also available +via Manage Jenkins > Configuration as Code > Download.) + +Job definitions are NOT included (`items.yaml` exports empty on this +controller). Those are captured separately in config.xml: + + https://ci-couchdb.apache.org/job/FullPlatformMatrix/config.xml + https://ci-couchdb.apache.org/job/PullRequests/config.xml + https://ci-couchdb.apache.org/job/Update%20Docker%20Containers/config.xml + +**IMPORTANT — redact before committing.** The exports contain secrets: + + * Cedential's `password:`/`secret:` value (encrypted with the + instance key, but still a secret — and the instance key itself lives in + the ops-center backups), + * The CloudBees `license:` section: the certificate and, in PLAINTEXT, the + license private key + * `operationsCenterRootAction.connectionDetails`. + +Replace all of these with `"...redacted..."` (grep for `{AQ`, `BEGIN RSA`, +`BEGIN CERTIFICATE`, `BEGIN CONNECTION DETAILS` before committing). + +The files +--- + + * `bundle.yaml`, `jenkins.yaml`, `plugins.yaml`, `plugin-catalog.yaml`, + `rbac.yaml`, `items.yaml` + * `jobs/*.xml` : raw config.xml of the three jobs. + +How to restore +--- + + * **Nodes**: The definitions live under `jenkins.nodes` in `jenkins.yaml`. + + * **Jobs**: POST the saved config.xml to `/createItem?name=<JobName>` + (`Content-Type: application/xml`) [note: untested yet] or create via the UI + following the structure in the XML. + +* **Credentials**: recreate under Manage Jenkins > Credentials > System > + Global with the SAME IDs (IDs are referenced by the Jenkinsfile/job + config and are immutable after creation). Currently required: + `dockerhub_creds` (Username with password; Docker Hub account + read-only + access token). The job configs pick out some hopefully available crds for fetching GitHub repos. + For example, `ASF CI for Github PRs`. + +General description of the jobs +--- + +The `jobs/*.xml` files have the details and this is a summary only + + * `Main + Release` (name `FullPlatformMatrix`): + Builds main, release and jenkins-* branches Branch Sources: - GitHub with `ASF CI for Github PRs etc` credential + GitHub with the `ASF CI for Github PRs etc` credential + (`5f95d117-...`, comes from the operations center) Repository URL: https://github.com/apache/couchdb.git Discover branches - Strategy > "Exclude branches that are also filed as PRs" + Strategy: "Exclude branches that are also filed as PRs" Filter by name: `main jenkins-* 3.5.*` Build configuration: by Jenkinsfile, script path: `build-aux/Jenkinsfile` Orphaned Item Strategy: Abort builds - Discard old items - Max # of old items to keep: `10` - - * `Controllers > CouchDB > ci-couchdb.apache.org > CouchDB > Pull Requests > Configuration`: - What it does: Builds pull requests + Discard old items, max # of old items to keep: `10` + + * `Pull Requests` (name `PullRequests`): + Builds pull requests against apache/couchdb Branch Sources: - GitHub with `ASF CI for Github PRs etc` credential + GitHub with the `ASF CI for Github PRs etc` credential Repository URL: https://github.com/apache/couchdb.git Discover pull requests from origin - Strategy > "Merging the pull request with the current target branch" + Strategy: "Merging the pull request with the current target branch" Discover pull requests from forks - Strategy > "Merging the pull request with the current target branch" + Strategy: "Merging the pull request with the current target branch" Trust: "From users with Admin or Write permissions" - Orphaned Item Strategy: - Abort builds + Build configuration: + by Jenkinsfile, script path: `build-aux/Jenkinsfile` + Orphaned Item Strategy: + Abort builds Discard old items Days to keep old items: `15` - Max # of old items to keep: `25` + Max # of old items to keep: `20` - * `Controllers > CouchDB > ci-couchdb.apache.org > CouchDB > Update Docker Containers` - What it does: Pull recent docker CI images to the nodes and prunes unused one. + * `Update Docker Containers`: + Pulls recent docker CI images to the nodes and prunes + unused ones. Weekly, Sundays 03:00-08:59 UTC. Build periodically: - Schedule: + Schedule: ``` TZ=UTC H H(3-8) * * 7 ``` + Discard old builds: 7 days + Pipeline speed/durability override: Performance-optimized Pipeline script: ``` def nodes = [:] @@ -68,10 +126,4 @@ The general description of the main sections in Jenkins, in case the files above } } } - - parallel nodes ``` - Pipeline speed/durability override: - Custom Pipeline Speed/Durability level: - Performance-optimized - diff --git a/jenkins-config-backup/system_information_plugins.md b/jenkins-config-backup/system_information_plugins.md deleted file mode 100644 index 9563423..0000000 --- a/jenkins-config-backup/system_information_plugins.md +++ /dev/null @@ -1,140 +0,0 @@ - -From https://ci-couchdb.apache.org/manage/systemInfo - -Name Version Enabled -``` -Amazon Web Services SDK 2 :: Core 2.33.4-62.vc1a_8df64b_4c9 true -Amazon Web Services SDK 2 :: EC2 2.33.4-62.vc1a_8df64b_4c9 true -Amazon Web Services SDK :: EC2 1.12.780-480.v4a_0819121a_9e true -Amazon Web Services SDK :: Minimal 1.12.780-480.v4a_0819121a_9e true -Apache HttpComponents Client 4.x API Plugin 4.5.14-269.vfa_2321039a_83 true -ASM API Plugin 9.9.1-189.vb_5ef2964da_91 true -Authentication Tokens API Plugin 1.144.v5ff4a_5ec5c33 true -AWS Credentials Plugin 254.v978a_5e206a_d7 true -Beekeeper Upgrade Assistant Plugin 2.1221 true -Bootstrap 5 API Plugin 5.3.8-895.v4d0d8e47fea_d true -bouncycastle API Plugin 2.30.1.82-277.v70ca_0b_877184 true -Branch API Plugin 2.1280.v0d4e5b_b_460ef true -Build Discarder Plugin 158.vce570d01ce4c true -Build Timestamp Plugin 1.1.1 true -Caffeine API Plugin 3.2.3-194.v31a_b_f7a_b_5a_81 true -Checks API plugin 402.vca_263b_f200e3 true -Cloud Statistics Plugin 377.vd8a_6c953e98e true -CloudBees Administrative Monitors Plugin 174 true -CloudBees Analytics Plugin 1.890 true -CloudBees Cache Step Plugin 342 true -CloudBees CasC Client Plugin 2.5478 true -CloudBees CasC Items API Plugin 2.5478 true -CloudBees CasC Shared Plugin 2.5478 true -CloudBees Folders Plus Plugin 3.535 true -CloudBees Jenkins Enterprise License Entitlement Check 675 true -CloudBees License Manager 1316 true -CloudBees License Tracker Plugin 1.1040 true -CloudBees Nodes Plus Plugin 245 true -CloudBees Pipeline (Deprecated) 1.9.1 true -CloudBees Pipeline Explorer 1.3939 false -CloudBees Platform Common Plugin 1.438 true -CloudBees Plugin Usage Analyzer Plugin 2.561 true -CloudBees Quiet Start Plugin 1.108 true -CloudBees Role-Based Access Control Plugin 1862 true -CloudBees SCM Reporting Plugin 1.871 true -CloudBees SSH Build Agents Plugin 377 true -CloudBees Unified UI Plugin 1.1141 true -CloudBees Update Center Data API 4.701 true -Command Agent Launcher Plugin 123.v37cfdc92ef67 true -Commons Compress API 1.28.0-2 true -commons-lang3 v3.x Jenkins API Plugin 3.20.0-109.ve43756e2d2b_4 true -commons-text API Plugin 1.15.0-210.v7480a_da_70b_9e true -Config File Provider Plugin 1006.vc7366c201f57 true -Configuration as Code Plugin 2036.v0b_c2de701dcb_ true -Credentials Binding Plugin 702.vfe613e537e88 true -Credentials Plugin 1480.v2246fd131e83 true -Declarative Pipeline Migration Assistant API 1.6.6 true -Dev Tools Symbols API Plugin 442.v99039087229b_ true -Display URL API 2.217.va_6b_de84cc74b_ true -Docker Commons Plugin 457.v0f62a_94f11a_3 true -Docker Pipeline 634.vedc7242b_eda_7 true -Durable Task Plugin 651.v1f5e074fc83f true -ECharts API Plugin 6.0.0-1165.vd1283a_3e37d4 true -EDDSA API Plugin 0.3.0.1-29.v67e9a_1c969b_b_ true -Folders Plugin 6.1079.vc0975c2de294 true -Font Awesome API Plugin 7.1.0-882.v1dfb_771e3278 true -Git client plugin 6.5.0 true -Git plugin 5.9.0 true -GitHub API Plugin 1.330-492.v3941a_032db_2a_ true -GitHub Branch Source Plugin 1967.vdea_d580c1a_b_a_ true -GitHub plugin 1.45.0 true -Gson API Plugin 2.13.2-173.va_a_092315913c true -Handy Uri Templates 2.x API Plugin 2.1.8-38.vcea_5d521d5f3 true -HTML Publisher plugin 427 true -Infrastructure plugin for Publish Over X 238.v1db_583004c9b_ true -Instance Identity 203.v15e81a_1b_7a_38 true -Ionicons API 94.vcc3065403257 true -Jackson 2 API Plugin 2.20.1-423.v13951f6b_6532 true -Jakarta Activation API 2.1.4-1 true -Jakarta Mail API 2.1.5-1 true -Jakarta XML Binding API 4.0.6-12.vb_1833c1231d3 true -Java JSON Web Token (JJWT) Plugin 0.11.5-120.v0268cf544b_89 true -JavaBeans Activation Framework (JAF) API 1.2.0-8 true -JavaMail API 1.6.2-11 true -JAXB plugin 2.3.9-143.v5979df3304e6 true -JClouds plugin 2.44 true -Joda Time API Plugin 2.14.0-177.vd7e9347b_e7d5 true -JQuery3 API Plugin 3.7.1-619.vdb_10e002501a_ true -JSch dependency plugin 0.2.16-95.v3eecb_55fa_b_78 true -JSON Api Plugin 20251224-185.v0cc18490c62c true -JSON Path API Plugin 2.10.0-202.va_9cc16c1e476 true -JUnit Plugin 1396.v095840ed8491 true -Mailer Plugin 525.v2458b_d8a_1a_71 true -MapDB API Plugin 1.0.9-44.va_1e1310c9118 true -Metrics Plugin 4.2.37-494.v06f9a_939d33a_ true -Mina SSHD API :: Common 2.16.0-167.va_269f38cc024 true -Mina SSHD API :: Core 2.16.0-167.va_269f38cc024 true -Mina SSHD API :: SCP 2.16.0-167.va_269f38cc024 true -Mina SSHD API :: SFTP 2.16.0-167.va_269f38cc024 true -OkHttp Plugin 4.12.0-195.vc02552c04ffd true -Operations Center Agent 3.28126 true -Operations Center Client Plugin 3.28126 true -Operations Center Context 3.28126 true -Oracle Java SE Development Kit Installer Plugin 83.v417146707a_3d true -OWASP Markup Formatter Plugin 173.v680e3a_b_69ff3 true -Pipeline Graph View Plugin 777.vdeb_113b_b_94da_ true -Pipeline Maven Integration Plugin 1611.v6a_00c04177b_b_ true -Pipeline Maven Plugin API 1611.v6a_00c04177b_b_ true -Pipeline Utility Steps 2.20.0 true -Pipeline: API 1398.v67030756d3fb_ true -Pipeline: Basic Steps 1098.v808b_fd7f8cf4 true -Pipeline: Declarative 2.2277.v00573e73ddf1 true -Pipeline: Declarative Extension Points API 2.2277.v00573e73ddf1 true -Pipeline: Groovy 4255.vd9c37f80fd8a_ true -Pipeline: Groovy Libraries 787.ve2fef0efdca_6 true -Pipeline: Input Step 540.v14b_100d754dd true -Pipeline: Job 1571.vb_423c255d6d9 true -Pipeline: Model API 2.2277.v00573e73ddf1 true -Pipeline: Multibranch 821.vc3b_4ea_780798 true -Pipeline: Nodes and Processes 1464.v2d3f5c68f84c true -Pipeline: SCM Step 466.va_d69e602552b_ true -Pipeline: Stage Step 322.vecffa_99f371c true -Pipeline: Stage Tags Metadata 2.2277.v00573e73ddf1 true -Pipeline: Step API 710.v3e456cc85233 true -Pipeline: Supporting APIs 1015.v785e5a_b_b_8b_22 true -Plain Credentials Plugin 199.v9f8e1f741799 true -Plugin Utilities API Plugin 6.1192.v30fe6e2837ff true -Prism API Plugin 1.30.0-703.v116fb_3b_5b_b_a_a_ true -Pub-Sub "light" Bus 1.19 true -Publish Over SSH 390.vb_f56e7405751 true -SCM API Plugin 724.v7d839074eb_5c true -Script Security Plugin 1399.ve6a_66547f6e1 true -SnakeYAML API Plugin 2.5-143.v93b_c004f89de true -SSH Build Agents plugin 3.1096.v0b_cc466e4323 true -SSH Credentials Plugin 361.vb_f6760818e8c true -SSH server 3.374.v19b_d59ce6610 true -Structs Plugin 362.va_b_695ef4fdf9 true -Support Core Plugin 1801.v76b_389d2deec true -Timestamper 1.30 true -Token Macro Plugin 477.vd4f0dc3cb_cf1 true -Trilead API Plugin 2.284.v1974ea_324382 true -Unique ID Library Plugin 2.125.vf125c93a_f982 true -User Activity Monitoring Plugin 2.436 true -Variant Plugin 70.va_d9f17f859e0 true -```
