├── .dockerignore ├── .gitattributes ├── .github └── release-drafter.yml ├── .gitignore ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.md ├── Makefile ├── README.md ├── jenkins.yaml └── plugins.txt /.dockerignore: -------------------------------------------------------------------------------- 1 | work 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Treat all text files without a CR (as we have Docker) 2 | * text eol=lf 3 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | #### 2 | # MIT License 3 | # 4 | # Copyright (c) 2019 Jenkins contributors and CloudBees, Inc. 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in all 14 | # copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | # SOFTWARE. 23 | #### 24 | 25 | # This file is based on https://github.com/jenkinsci/.github/blob/master/.github/release-drafter.yml used in the Jenkins project 26 | 27 | name-template: $NEXT_MINOR_VERSION 28 | tag-template: $NEXT_MINOR_VERSION 29 | version-template: $MAJOR.$MINOR 30 | 31 | # Emoji reference: https://gitmoji.carloscuesta.me/ 32 | categories: 33 | - title: 🚨 Removed 34 | label: removed 35 | - title: ⚠️ Deprecated 36 | label: deprecated 37 | - title: 🚀 New features and improvements 38 | labels: 39 | - enhancement 40 | - feature 41 | - title: 🐛 Bug Fixes 42 | labels: 43 | - bug 44 | - fix 45 | - bugfix 46 | - regression 47 | - title: 📝 Documentation updates 48 | label: documentation 49 | # Default label used by Dependabot 50 | - title: 📦 Dependency updates 51 | label: dependencies 52 | - title: 👻 Maintenance 53 | label: chore 54 | # TODO: consider merging category or changing emojis 55 | - title: 🚦 Internal changes 56 | label: internal 57 | - title: 🚦 Tests 58 | labels: 59 | - test 60 | - tests 61 | exclude-labels: 62 | - reverted 63 | - no-changelog 64 | - skip-changelog 65 | - invalid 66 | 67 | template: | 68 | 69 | $CHANGES 70 | replacers: 71 | - search: 'CJD' 72 | replace: 'CloudBees Jenkins Distribution' 73 | - search: 'JCasC' 74 | replace: 'Jenkins Configuration-as-Code' 75 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | work -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Proposing changes 4 | 5 | If you want to improve the image, please submit a pull request to the repository. 6 | 7 | ## Building the image 8 | 9 | * Ensure that Docker and Make are installed on your machine 10 | * Checkout the repository 11 | * Run `make build` 12 | 13 | It will produce a local `cloudbees/cjd-jcasc-demo:rolling` image. 14 | 15 | ## Testing the local image 16 | 17 | Use the `make run-devel` command. 18 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jenkins/jenkins:2.190 as install_scripts_source 2 | FROM cloudbees/cloudbees-jenkins-distribution:2.176.2.3 3 | COPY --from=install_scripts_source /usr/local/bin/jenkins-support /usr/local/bin/jenkins-support 4 | COPY --from=install_scripts_source /usr/local/bin/install-plugins.sh /usr/local/bin/install-plugins.sh 5 | 6 | ENV JENKINS_UC http://jenkins-updates.cloudbees.com 7 | ENV JENKINS_INCREMENTALS_REPO_MIRROR https://repo.jenkins-ci.org/incrementals 8 | 9 | # Set the war 10 | ENV JENKINS_WAR /usr/share/cloudbees-jenkins-distribution/cloudbees-jenkins-distribution.war 11 | 12 | # Startup all plugins included into the CloudBees Jenkins Distribution bundle 13 | ENV JAVA_OPTS "-Dcom.cloudbees.jenkins.cjp.installmanager.CJPPluginManager.allRequired=true" 14 | 15 | # Install extra plugins 16 | ENV REF=/usr/share/cloudbees-jenkins-distribution/ref 17 | COPY plugins.txt $REF/plugins.txt 18 | RUN bash /usr/local/bin/install-plugins.sh < $REF/plugins.txt 19 | 20 | # Apply JCasC 21 | COPY jenkins.yaml /cfg/jenkins.yaml 22 | ENV CASC_JENKINS_CONFIG /cfg/jenkins.yaml 23 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | ## The MIT License 2 | 3 | Copyright (c) 2019 CloudBees, Inc. and other contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | IMAGE_TAG=cloudbees/cjd-jcasc-demo 2 | DEVEL_SUFFIX=devel 3 | IMAGE_DEVEL_TAG=${IMAGE_TAG}:${DEVEL_SUFFIX} 4 | DOCKER_BUILD_FLAGS?= 5 | 6 | clean: 7 | @if docker images ${IMAGE_TAG} | awk '{ print $$2 }' | grep -q -F ${IMAGE_DEVEL_TAG}; then docker image rm --force ${IMAGE_DEVEL_TAG} ; false; fi 8 | 9 | build: 10 | docker build -t ${IMAGE_DEVEL_TAG} ${DOCKER_BUILD_FLAGS} . 11 | 12 | run: 13 | docker run --rm -p 8080:8080 ${IMAGE_TAG} 14 | 15 | run-devel: 16 | rm -rf work 17 | mkdir work 18 | docker run --rm -p 8080:8080 \ 19 | -e VERBOSE=true \ 20 | -v $(CURDIR)/work:/var/cloudbees-jenkins-distribution/ \ 21 | ${IMAGE_DEVEL_TAG} 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JCasC Demo on CloudBees Jenkins Distribution 2 | 3 | [![GitHub release](https://img.shields.io/github/release/cloudbees-oss/cjd-jcasc-demo.svg?label=release)](https://github.com/cloudbees-oss/cjd-jcasc-demo/releases/latest) 4 | [![Docker Pulls](https://img.shields.io/docker/pulls/cloudbees/cjd-jcasc-demo?logo=cloudbees)](https://hub.docker.com/r/cloudbees/cjd-jcasc-demo) 5 | 6 | | WARNING: This is a demo repository and image, it is not supported by CloudBees for production use | 7 | | --- | 8 | 9 | This demo demonstrates usage of the [Jenkins Configuration-as-Code Plugin](https://github.com/jenkinsci/configuration-as-code-plugin) plugin with 10 | [CloudBees Jenkins Distribution (CJD)](https://www.cloudbees.com/products/cloudbees-jenkins-distribution). 11 | The demo is based on the official Cloudbees Jenkins Distribution image available on Docker Hub 12 | ([here](https://hub.docker.com/r/cloudbees/cloudbees-jenkins-distribution)). 13 | 14 | By default, all bundled plugins from CJD are loaded. 15 | The configuration YAML file presets all of the configuration fields which are currently supported. 16 | Note, this is a demo only and it doesn't configure a full production instance of CJD which is able to run production CI/CD pipelines. 17 | 18 | ## Usage 19 | 20 | ### Running 21 | 22 | * Run the image using the `docker run --rm -p 8080:8080 cloudbees/cjd-jcasc-demo` command 23 | * You can also run a specific version using a release tag from [Docker Hub](https://hub.docker.com/r/cloudbees/cloudbees-jenkins-distribution) 24 | * Navigate to `http://localhost:8080` 25 | * Login with the _admin/admin_ username/password pair 26 | * **Register CloudBees Jenkins Distribution** screen. 27 | Select the _Activate online_ option and register your CJD instance. 28 | It is free, but you need to accept the license agreement 29 | * **Customize CloudBees Jenkins Distribution** screen. 30 | Use the the _Select plugins to install_ option, 31 | * Select _None_ in the top panel of the window to unselect all plugins. Then click _Install_ 32 | * Plugins are already installed by CloudBees Assurance Program and Docker packaging, 33 | so selection of additional plugins is not needed here 34 | * This manual UI action is temporary step 35 | * Your CloudBees Jenkins Distribution is ready and configured via Jenkins Configuration as Code plugin! 36 | Just start using it 37 | 38 | ### Advanced run options 39 | 40 | * To disable booting of `fat` plugins, `-e INCLUDE_FAT_PLUGINS=false` can be passed to the Makefile 41 | * Use `-e VERBOSE=true` to enable verbose mode with more debug information 42 | * It is possible to munt a local workspace as a volume by `-v ${WORKSPACE_ABOLUTE_PATH}:/var/jenkins_home/` 43 | for troubleshooting purposes. Note that the workspace should be empty on startup. 44 | 45 | ## Changelog 46 | 47 | See [GitHub Releases](https://github.com/cloudbees-oss/cjd-jcasc-demo/releases/latest). 48 | 49 | -------------------------------------------------------------------------------- /jenkins.yaml: -------------------------------------------------------------------------------- 1 | jenkins: 2 | agentProtocols: 3 | - "JNLP2-connect" 4 | - "JNLP4-connect" 5 | - "Ping" 6 | #TODO: Switch to Matrix Auth once 2.4 is in the envelope 7 | authorizationStrategy: 8 | loggedInUsersCanDoAnything: 9 | allowAnonymousRead: false 10 | crumbIssuer: 11 | standard: 12 | excludeClientIPFromCrumb: false 13 | disableRememberMe: false 14 | globalNodeProperties: 15 | - envVars: 16 | env: 17 | - key: "COMPANY_NAME" 18 | value: "CloudBeers" 19 | markupFormatter: 20 | rawHtml: 21 | disableSyntaxHighlighting: true 22 | mode: NORMAL 23 | myViewsTabBar: "standard" 24 | numExecutors: 2 25 | primaryView: 26 | all: 27 | name: "all" 28 | projectNamingStrategy: 29 | pattern: 30 | description: "My naming strategy" 31 | forceExistingJobs: false 32 | namePattern: ".*" 33 | quietPeriod: 5 34 | remotingSecurity: 35 | enabled: true 36 | scmCheckoutRetryCount: 5 37 | securityRealm: 38 | local: 39 | allowsSignup: false 40 | enableCaptcha: false 41 | users: 42 | - id: "admin" 43 | password: "admin" 44 | slaveAgentPort: 50000 45 | systemMessage: "

CloudBees Jenkins Distribution with Configuration-as-Code


Technical preview" 46 | updateCenter: 47 | sites: 48 | - id: "cap-cloudbees-jenkins-distribution" 49 | url: "https://jenkins-updates.cloudbees.com/update-center/envelope-cloudbees-jenkins-distribution/update-center.json" 50 | - id: "cloudbees-jenkins-distribution-offline" 51 | url: "file:/var/jenkins_home/war/WEB-INF/plugins/update-center.json" 52 | views: 53 | - list: 54 | columns: 55 | - "status" 56 | - "weather" 57 | - "jobName" 58 | - "lastSuccess" 59 | - "deployNowColumn" 60 | - "favoriteColumn" 61 | - "lastBuildPromotionStatusColumn" 62 | includeRegex: ".*" 63 | name: "My View 2" 64 | - all: 65 | name: "all" 66 | viewsTabBar: "standard" 67 | nodes: 68 | - permanent: 69 | labelString: "jnlp" 70 | launcher: 71 | jnlp: 72 | workDirSettings: 73 | disabled: false 74 | failIfWorkDirIsMissing: false 75 | internalDir: "remoting" 76 | workDirPath: "C:\\J\\AW" 77 | name: "Inbound Agent (JNLP)" 78 | nodeDescription: "Agent that initiates its own connection to Jenkins" 79 | numExecutors: 3 80 | remoteFS: "C:\\J\\AA" 81 | retentionStrategy: "always" 82 | - permanent: 83 | launcher: 84 | sSHLauncher: 85 | credentialsId: "exampleuser-creds-id" 86 | host: "myunixagents.example.com" 87 | maxNumRetries: 5 88 | port: 22 89 | retryWaitTime: 30 90 | sshHostKeyVerificationStrategy: "knownHostsFileKeyVerificationStrategy" 91 | name: "SSH Build Agent - by SSH Slaves Plugin" 92 | numExecutors: 2 93 | retentionStrategy: "always" 94 | - permanent: 95 | labelString: "wmi" 96 | launcher: 97 | managedWindowsServiceLauncher: 98 | account: 99 | anotherUser: 100 | password: "{AQAAABAAAAAQrFzG4eivzoRgjLSQ4b2EO+B/N4fMTAPWba9WXwrvVIM=}" 101 | userName: "admin" 102 | host: "mywindowshost.example.com" 103 | password: "{AQAAABAAAAAQd9xCwocDRwcJ1cxFJjzXzoWM77CODd79aokmxCWR8rE=}" 104 | userName: "EXAMPLE/Admin" 105 | name: "WMI Windows Agent" 106 | numExecutors: 2 107 | retentionStrategy: "always" 108 | clouds: 109 | - amazonEC2: 110 | cloudName: "EC2-sample-config" 111 | credentialsId: "example-aws" 112 | privateKey: "Stub: EC2PrivateKey" 113 | instanceCapStr: "8" 114 | templates: 115 | - ami: "windows64x" 116 | amiType: 117 | windowsData: 118 | password: "{AQAAABAAAAAQtIAG0C6hQhDx3wnlr6dCxhrxfHkeVT2mQLWGnVh62Qo=}" 119 | useHTTPS: false 120 | associatePublicIp: false 121 | connectBySSHProcess: false 122 | deleteRootOnTermination: false 123 | description: "Windows Slave" 124 | ebsOptimized: false 125 | idleTerminationMinutes: "30" 126 | mode: NORMAL 127 | monitoring: false 128 | numExecutors: 1 129 | remoteFS: "/remote/root" 130 | stopOnTerminate: false 131 | t2Unlimited: false 132 | type: T3Nano 133 | useDedicatedTenancy: false 134 | useEphemeralDevices: false 135 | useInstanceProfileForCredentials: false 136 | - kubernetes: 137 | connectTimeout: 5 138 | containerCapStr: "10" 139 | credentialsId: "exampleuser-creds-id" 140 | jenkinsUrl: "http://localhost:8080" 141 | maxRequestsPerHostStr: "32" 142 | name: "kubernetes" 143 | namespace: "example" 144 | readTimeout: 15 145 | serverCertificate: "Stub: Kubernetes server certificate key" 146 | serverUrl: "https://k8s/example.com" 147 | templates: 148 | - containers: 149 | - args: "cat" 150 | command: "/bin/sh -c" 151 | image: "jenkins/jnlp-slave" 152 | livenessProbe: 153 | failureThreshold: 1 154 | initialDelaySeconds: 2 155 | periodSeconds: 3 156 | successThreshold: 4 157 | timeoutSeconds: 5 158 | name: "jnlp" 159 | ttyEnabled: true 160 | - args: "cat" 161 | command: "/bin/sh -c" 162 | image: "elasticsearch" 163 | livenessProbe: 164 | failureThreshold: 1 165 | initialDelaySeconds: 2 166 | periodSeconds: 3 167 | successThreshold: 4 168 | timeoutSeconds: 5 169 | name: "elasticsearch" 170 | ttyEnabled: true 171 | instanceCap: 5 172 | instanceCapStr: "5" 173 | label: "linux stub" 174 | name: "Test Pod" 175 | namespace: "example" 176 | workspaceVolume: 177 | emptyDirWorkspaceVolume: 178 | memory: false 179 | aws: 180 | awsCredentials: 181 | region: "us-east-1" 182 | s3: 183 | container: "s3.example.com" 184 | prefix: "myjenkins/" 185 | credentials: 186 | system: 187 | domainCredentials: 188 | - credentials: 189 | - usernamePassword: 190 | description: "Sample credentials of exampleuser" 191 | id: "exampleuser-creds-id" 192 | password: "{AQAAABAAAAAQ1/JHKggxIlBcuVqegoa2AdyVaNvjWIFk430/vI4jEBM=}" 193 | scope: GLOBAL 194 | username: "exampleuser" 195 | - string: 196 | description: "Secret Text Credentials" 197 | id: "exampleuser-secret-text" 198 | scope: GLOBAL 199 | secret: "{AQAAABAAAAAQxuhfaykd2s1lucCuLUTqoxvb4JkekOIM1Iq2gsCUBbE=}" 200 | - aws: 201 | accessKey: "example-access-id" 202 | description: "Example AWS credentials" 203 | id: "example-aws" 204 | scope: GLOBAL 205 | secretKey: "{AQAAABAAAAAg2VHmB3ITxGN6robkgkhC9hMk+dD/DYRhmDfsShtKgNDFAUjKf0eXl7taORsKKgVq}" 206 | security: 207 | apiToken: 208 | creationOfLegacyTokenEnabled: false 209 | tokenGenerationOnCreationEnabled: false 210 | usageStatisticsEnabled: true 211 | downloadSettings: 212 | useBrowser: false 213 | sSHD: 214 | port: 1234 215 | unclassified: 216 | bitbucketEndpointConfiguration: 217 | endpoints: 218 | - bitbucketCloudEndpoint: 219 | enableCache: true 220 | manageHooks: false 221 | repositoriesCacheDuration: 60 222 | teamCacheDuration: 120 223 | contentFilters: 224 | enabled: true 225 | experimentalPlugins: 226 | enabled: false 227 | extendedEmailPublisher: 228 | adminRequiredForTemplateTesting: true 229 | allowUnregisteredEnabled: false 230 | charset: "UTF-8" 231 | debugMode: false 232 | defaultBody: "$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:\r\n\r\nCheck\ 233 | \ console output at $BUILD_URL to view the results." 234 | defaultContentType: "text/plain" 235 | defaultRecipients: "users@example.com" 236 | defaultSubject: "$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!" 237 | defaultSuffix: "@example.com" 238 | maxAttachmentSize: -1 239 | maxAttachmentSizeMb: 10 240 | precedenceBulk: false 241 | smtpServer: "smtp.example.com" 242 | useSsl: false 243 | watchingEnabled: false 244 | gitHubConfiguration: 245 | endpoints: 246 | - apiUri: "https://api.github.example.com" 247 | name: "Test GitHub Enterprise Server" 248 | gitHubPluginConfig: 249 | configs: 250 | - name: "GitHub origin" 251 | hookUrl: "http://localhost:8080/github-webhook/" 252 | gitSCM: 253 | createAccountBasedOnEmail: true 254 | globalConfigEmail: "username@example.com" 255 | globalConfigName: "username" 256 | globalDefaultFlowDurabilityLevel: 257 | durabilityHint: PERFORMANCE_OPTIMIZED 258 | globalLibraries: 259 | libraries: 260 | - defaultVersion: "1.2.3" 261 | name: "Test Git Lib" 262 | retriever: 263 | legacySCM: 264 | scm: 265 | git: 266 | branches: 267 | - name: "*/myprodbranch" 268 | browser: 269 | assemblaWeb: 270 | repoUrl: "assembla.example.com" 271 | buildChooser: "default" 272 | doGenerateSubmoduleConfigurations: false 273 | extensions: 274 | - "cleanCheckout" 275 | - "gitLFSPull" 276 | - checkoutOption: 277 | timeout: 60 278 | - userIdentity: 279 | email: "customuser@example.com" 280 | name: "custom user" 281 | - preBuildMerge: 282 | options: 283 | mergeRemote: "myrepo" 284 | mergeStrategy: RECURSIVE 285 | mergeTarget: "master" 286 | gitTool: "Default" 287 | submoduleCfg: 288 | - submoduleName: "submodule-1" 289 | branches: 290 | - "mybranch-1" 291 | - "mybranch-2" 292 | - submoduleName: "submodule-2" 293 | branches: 294 | - "mybranch-3" 295 | - "mybranch-4" 296 | userRemoteConfigs: 297 | - credentialsId: "exampleuser-creds-id" 298 | url: "https://git.example.com/testgitlib.git" 299 | # GitHub Source 300 | - defaultVersion: "master" 301 | name: "jenkins-pipeline-lib" 302 | retriever: 303 | modernSCM: 304 | scm: 305 | github: 306 | id: "e43d6600-ba0e-46c5-8eae-3989bf654055" 307 | repoOwner: "jenkins-infra" 308 | repository: "pipeline-library" 309 | traits: 310 | # BUG: https://issues.jenkins-ci.org/browse/JENKINS-57557 311 | # - branchDiscoveryTrait: 312 | # strategyId: 1 313 | # - originPullRequestDiscoveryTrait: 314 | # strategyId: 1 315 | # - forkPullRequestDiscoveryTrait: 316 | # strategyId: 1 317 | # trust: "trustPermission" 318 | jiraGlobalConfiguration: 319 | sites: 320 | - url: "https://issues.jenkins-ci.org" 321 | - url: "http://jira.codehaus.org/" 322 | location: 323 | adminAddress: "address not configured yet " 324 | url: "http://localhost:8080/" 325 | mailer: 326 | adminAddress: "address not configured yet " 327 | charset: "UTF-8" 328 | defaultSuffix: "@example.com" 329 | smtpHost: "smtp.example.com" 330 | useSsl: false 331 | metricsAccessKey: 332 | accessKeys: 333 | - canHealthCheck: true 334 | canMetrics: true 335 | canPing: true 336 | canThreadDump: false 337 | description: "Dummy Key 1" 338 | key: "oovyDNmeZZ1I7p_H_sXAws0KVP9eZ3fNwr7lOtjElKUId6wHAnlCR08wb6nAmLYa" 339 | origins: "*" 340 | - canHealthCheck: false 341 | canMetrics: false 342 | canPing: false 343 | canThreadDump: true 344 | description: "Dummy Key 2 for Thread dumps" 345 | key: "lI2OHTJDi-G9AhmRE7roaPjHD5zrtKAGSeyVUqYpzA5DC_lhFAh13AF67iZYcvFP" 346 | origins: "thread dumps" 347 | pipeline-model: 348 | dockerLabel: "docker" 349 | registry: 350 | url: "https://index.docker.io/v1/" 351 | pollSCM: 352 | pollingThreadCount: 10 353 | shell: 354 | shell: "bash" 355 | globalConfigFiles: 356 | configs: 357 | - globalMavenSettings: 358 | comment: "global settings" 359 | content: "\n\n\n \n \n \n\n" 364 | id: "2ec14627-7057-474e-b0af-d16ce92b0ea0" 365 | isReplaceAll: true 366 | name: "MyMavenSettingsFile" 367 | providerId: "org.jenkinsci.plugins.configfiles.maven.GlobalMavenSettingsConfig" 368 | - groovyTemplate: 369 | content: "echo \"Hello!\"" 370 | id: "test-groovy-template" 371 | name: "Groovy Email Template" 372 | - custom: 373 | content: "Whatever test content" 374 | id: "test-custom-file" 375 | name: "MyCustom" 376 | providerId: "org.jenkinsci.plugins.configfiles.custom.CustomConfig" 377 | tool: 378 | dockerTool: 379 | installations: 380 | - name: "docker-latest" 381 | properties: 382 | - installSource: 383 | installers: 384 | - docker: 385 | version: "latest" 386 | - home: "/tools/docker" 387 | name: "docker-zip" 388 | properties: 389 | - installSource: 390 | installers: 391 | - zip: 392 | label: "linux" 393 | url: "https://storage.example.com/docker.zip" 394 | git: 395 | installations: 396 | - home: "git" 397 | name: "Default" 398 | # BUG - https://issues.jenkins-ci.org/browse/JENKINS-57326 399 | # - home: "jgit" 400 | # name: "jgit" 401 | # - home: "jgitapache" 402 | # name: "jgitapache" 403 | gradle: 404 | installations: 405 | - name: "Gradle-default" 406 | properties: 407 | - installSource: 408 | installers: 409 | - gradleInstaller: 410 | id: "5.4" 411 | - zip: 412 | label: "arm" 413 | subdir: "gradle-1.2.3/arm" 414 | url: "https://share.example.com/tools/gradle/1.2.3" 415 | - name: "Gradle-5.5.6" 416 | properties: 417 | - installSource: 418 | installers: 419 | - gradleInstaller: 420 | id: "5.4" 421 | - zip: 422 | subdir: "gradle-5.5.6" 423 | url: "https://share.example.com/tools/gradle/5.56" 424 | jdk: 425 | installations: 426 | - name: "loca-jdk" 427 | properties: 428 | - installSource: 429 | installers: 430 | - command: 431 | command: "echo \"Tool installation magic NOOP\"" 432 | label: "linux || windows" 433 | toolHome: "/tools/jdk" 434 | maven: 435 | installations: 436 | - name: "mvn-3.6.1" 437 | properties: 438 | - installSource: 439 | installers: 440 | - maven: 441 | id: "3.6.1" 442 | ant: 443 | installations: 444 | - name: "Ant 1.10.5" 445 | # BUG: JENKINS-57561 - missing "home" export by default? 446 | home: "/tools/ant" 447 | properties: 448 | - installSource: 449 | installers: 450 | - antFromApache: 451 | id: "1.10.5" 452 | msTestInstallation: 453 | installations: 454 | - defaultArgs: "test param" 455 | home: "C:\\opt\\tools\\mstest" 456 | name: "MSTest Tool" 457 | omitNoIsolation: true 458 | msbuild: 459 | installations: 460 | - defaultArgs: "helloWorld" 461 | home: "C:\\opt\\tools\\msbuild" 462 | name: "MSBuild Test" 463 | -------------------------------------------------------------------------------- /plugins.txt: -------------------------------------------------------------------------------- 1 | configuration-as-code:1.27 2 | # https://issues.jenkins-ci.org/browse/JENKINS-57559 3 | credentials:2.2.0 4 | # https://issues.jenkins-ci.org/browse/JENKINS-57603 5 | git:3.10.1 6 | # https://issues.jenkins-ci.org/browse/JENKINS-57562 and other compatibility issues 7 | ec2:1.44.1 8 | # https://issues.jenkins-ci.org/browse/JENKINS-52906 9 | jira:3.0.7 10 | # Transitive dependency 11 | script-security:1.58 12 | --------------------------------------------------------------------------------