Giter VIP home page Giter VIP logo

rancher-plugin's Introduction

Jenkins Rancher Plugin

Note: This plugin only support Rancher1

Enables Jenkins to deploy or upgrade Rancher stack service instance

Rancher is an open source software platform that enables organizations to run containers in production. With Rancher, organizations no longer have to build a container services platform from scratch using a distinct set of open source technologies. Rancher supplies the entire software stack needed to manage containers in production.

You can learn more on the Rancher Website

Features

  • Deploy docker image to Rancher
  • Upgrade exist service instance in Rancher
  • Support options to finish the upgrade automatically
  • Support build environment variable as docker image tag, e.q. busybox:${BUILD_NUMBER}

Potential upcoming features

  • provision rancher stack with docker-compose and rancher-compose file

General information

Jenkins Rancher Plugin Support Deploy or Upgrade Service Instance in Rancher.

Requirements

Jenkins

Jenkins version 2.11 or newer is required.

Rancher

Rancher version 1.2.2 or newer is required.

Setup

Install plugin

Install this plugin via the Jenkins plugin manager. Or Download the latest version of plugin from [releases][https://github.com/jenkinsci/rancher-plugin/releases].

Create Rancher API Key

  1. To enable access to your rancher server, you must create a account api key:
  2. Siigin in to rancher server dashboard
  3. Select Menu → API
  4. Click "Add Account API Key"
  5. Give the api key any name and description you like, e.g "Jenkins"
  6. Click the "Create Key"
  7. Save the "Access Key" and "Secret Key" any way you like, we will use it later
  8. You can now close the dialog

Add the Rancher API Key to Jenkins:

  1. Navigate to your Jenkins instance
  2. Select "Credentials" from the Jenkins sidebar
  3. Choose a credentials domain and click "Add Credentials"
  4. From the "Kind" drop-down, choose "Username with password"
  5. Enter a description for the credential — the actual value is not important
  6. Click "OK" to create the credential

Per-job configuration

Freestyle job configuration

Deploy or Upgrade Service Instance

  1. Create a new free-style project
  2. Ensure. via whatever build steps you need, that the Docker image you want to deploy to Rancher will be available in the docker registry
  3. Add "Deploy/Upgrade Rancher Service" post-build action
  4. Enter the target Rancher Service API endpoint, e.g 'http://rancher-server/v2-beta'
  5. Select the credential name from the drop-down list
  6. Enter the target rancher environment id, e.g '1a5558'
  7. Enter the target service name, e.g 'stack/service'
  8. Enter the docker image name, e.g 'busybox' (image name support current build environment variable like 'busybox:${BUILD_NUMBER}' to support dynamic image tag)
  9. Optionally choose "Auto Confirm" to finish the upgrade automatically
  10. Optionally choose "Public Ports" to export service ports. mutil port shoule be split be ",". e.g 8080:80,9191:91
  11. Optionally choose "Environment variables" to config service environment. mutil variable should be split by ",". e.g AAA:aaa,BBB:bbb (Note: The old environment of service will be merge)
  12. Optionally choose "Timeout" to config timeout seconds when wait rancher service status change.

Development Testing

For your convenience, this repository includes a docker-compose configuration for running jenkins, rancher-server, and a rancher agent. It also includes a bootstrapping script which will configure a Rancher service and Jenkins job using the plugin from build/libs/rancher.hpi. To use this test harness simply run the following:

./gradlew jpi
cd test/
docker-compose up -d --build

Rancher, Jenkins, and an Echo Server will be run on ports 8080, 8081, and 8082 respectively. You can simply visit the jenkins web UI and run the "test" job to test the plugin.

Version history

Version 1.0.0 (July 13, 2017)

  • Initial release

Version 1.0.1 (July 17, 2017)

  • Fixed dependencies info missing issue.

Version 1.0.2 (August 04 2017)

  • Preserves the log config while upgrading a service.

Version 1.0.3 (September 03 2017)

  • Support export service ports.

Version 1.0.4 (September 12 2017)

  • Support export environment variable.

Version 1.0.5 (October 10 2017)

  • Support health check serialization.

Version 1.0.7 (December 11 2017)

  • Support custom timeout, and build variable in all fields.

Version 1.0.8 (December 21 2017)

  • Fixed issue of timeout logic.

Version 1.0.10 (April 25 2018)

  • Fixed issues.

Version 1.0.13 (Dec 31 2018 )

  • Support start before stop options
  • Fixed network config missing

rancher-plugin's People

Contributors

70995781 avatar bkconrad avatar dicardopegb avatar jlaird avatar megwill4268 avatar sc-mld avatar yunlzheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rancher-plugin's Issues

CI build failed

Has the project build been broken for a while, do you still maintain it?

I only noticed when I tried to use a change that was made in the last pull request, is the java8-gradle image private?

Thank you.

Deploy setting memory limit

Hello there!
I'm using jenkins and have a job to deploy an app on rancher, but I set memory limit on container.
Before jenkins deploy the app this limit gones out
Exist any way to make jenkins keep the setings on container? Or set memory limit through plugin?

Rancher service not upgrading

I am trying to upgrade a service in the stack in rancher. I am running in to the following issue.
I uninstalled the plugin and manually upgraded to 1.0.9 but still the version shows as 1.0.8-SNAPSHOT. I used the plugin at the link below.
https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/rancher/1.0.9/rancher-1.0.9.hpi

Deploy/Upgrade image[docker:image-name:tag] to service [stack/service] to rancher environment [http://xxxxxxxxxxxx:8080/v2-beta/projects/xxxx]
Stack already exist. skip
ERROR: Build step failed with exception
java.lang.RuntimeException: Some Error Happen statusCode 404 response: {"id":"60b01c4d-de6f-404b-a338-ffae04b585de","type":"error","links":{},"actions":{},"status":404,"code":"Not Found","message":"Not Found","detail":null,"baseType":"error"}
at jenkins.plugins.rancher.HttpClient.execute(HttpClient.java:72)
at jenkins.plugins.rancher.HttpClient.get(HttpClient.java:31)
at jenkins.plugins.rancher.RancherClient.services(RancherClient.java:39)
at jenkins.plugins.rancher.RancherBuilder.perform(RancherBuilder.java:94)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1727)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Build step 'Deploy/Upgrade Rancher Service' marked build as failure
Finished: FAILURE

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

I've got this error in jenkins log
I've tried putting unsigned ssl cert into java keystore and didn't work
I also tried with lets encrypt SSL and no matter what whenever i try to connect to rancher 2 i get this error.

Two questions:
1- Does this plugin work with rancher 2?
2- Is there any workaround to get past this error.

Unable to finish upgrade with upgrade.

I have a job configured to upgrade and "Auto Confirm" selected. When it runs it performs the upgrade but will not finish.

Rancher plugin version : 1.0.8-SNAPSHOT (private-12/14/2017 16:59-zhengyunlong)

Here is the jenkins log:
12:42:19 Deploy/Upgrade image[docker:id/cont:latest] to service [id/cont] to rancher environment [http://rancher.company.com:50070/v2-beta/projects/1a5]
12:42:19 Stack already exist. skip
12:42:19 Upgrading service instance
12:42:19 service submanage current state is active
12:42:29 waiting service state to be upgraded (timeout:10s)ERROR: Build step failed with exception
12:42:29 java.lang.RuntimeException: Some Error Happen statusCode 422 response: {"id":"1d087db0-97c6-4b01-be98-5f6151513324","type":"error","links":{},"actions":{},"status":422,"code":"ActionNotAvailable","message":null,"detail":null,"fieldName":"action","baseType":"error"}
12:42:29 at jenkins.plugins.rancher.HttpClient.execute(HttpClient.java:72)
12:42:29 at jenkins.plugins.rancher.HttpClient.post(HttpClient.java:47)
12:42:29 at jenkins.plugins.rancher.RancherClient.finishUpgradeService(RancherClient.java:60)
12:42:29 at jenkins.plugins.rancher.RancherBuilder.upgradeService(RancherBuilder.java:145)
12:42:29 at jenkins.plugins.rancher.RancherBuilder.perform(RancherBuilder.java:93)
12:42:29 at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
12:42:29 at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
12:42:29 at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
12:42:29 at hudson.model.Build$BuildExecution.build(Build.java:206)
12:42:29 at hudson.model.Build$BuildExecution.doRun(Build.java:163)
12:42:29 at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
12:42:29 at hudson.model.Run.execute(Run.java:1724)
12:42:29 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
12:42:29 at hudson.model.ResourceController.execute(ResourceController.java:97)
12:42:29 at hudson.model.Executor.run(Executor.java:421)
12:42:29 Build step 'Deploy/Upgrade Rancher Service' marked build as failure
12:42:29 Finished: FAILURE

Check start before stop in the rancher plug-in advanced options, then save the job task, and enter the job task again to check that start before stop is not checked.

Jenkins and plugins versions report

Environment
Paste the output here

What Operating System are you using (both controller, and any agents involved in the problem)?

Jenkins 2.240
rancher 1.0.13 plug-in

Reproduction steps

Check start before stop in the rancher plug-in advanced options, then save the job task, and enter the job task again to check that start before stop is not checked.
image

Expected Results

Check start before stop in the rancher plug-in advanced options, then save the job task, and enter the job task again to check that start before stop is not checked.

Actual Results

Check start before stop in the rancher plug-in advanced options, then save the job task, and enter the job task again to check that start before stop is not checked.

Anything else?

No response

Are you interested in contributing a fix?

No response

Start First Always Fales

There is no default value and I don't see a way to pass in an option to set startFirst to true.

The logic below looks correct, if a port is set it would cause a confect if it's on the same server using start first.

inServiceStrategy.setStartFirst(false);

Doesn't work with Jenkins 2.387.1

Jenkins and plugins versions report

Environment
Jenkins: 2.387.1
OS: Linux - 4.4.0-1128-aws
Java: 11.0.18 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
adoptopenjdk:1.5
ansicolor:1.0.2
ant:481.v7b_09e538fcca
antisamy-markup-formatter:159.v25b_c67cd35fb_
apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5
authentication-tokens:1.4
aws-credentials:191.vcb_f183ce58b_9
aws-java-sdk:1.12.406-374.v4cdf53953691
aws-java-sdk-cloudformation:1.12.406-374.v4cdf53953691
aws-java-sdk-codebuild:1.12.406-374.v4cdf53953691
aws-java-sdk-ec2:1.12.406-374.v4cdf53953691
aws-java-sdk-ecr:1.12.406-374.v4cdf53953691
aws-java-sdk-ecs:1.12.406-374.v4cdf53953691
aws-java-sdk-efs:1.12.406-374.v4cdf53953691
aws-java-sdk-elasticbeanstalk:1.12.406-374.v4cdf53953691
aws-java-sdk-iam:1.12.406-374.v4cdf53953691
aws-java-sdk-logs:1.12.406-374.v4cdf53953691
aws-java-sdk-minimal:1.12.406-374.v4cdf53953691
aws-java-sdk-sns:1.12.406-374.v4cdf53953691
aws-java-sdk-sqs:1.12.406-374.v4cdf53953691
aws-java-sdk-ssm:1.12.406-374.v4cdf53953691
basic-branch-build-strategies:71.vc1421f89888e
blueocean:1.27.3
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.3
blueocean-commons:1.27.3
blueocean-config:1.27.3
blueocean-core-js:1.27.3
blueocean-dashboard:1.27.3
blueocean-display-url:2.4.1
blueocean-events:1.27.3
blueocean-git-pipeline:1.27.3
blueocean-github-pipeline:1.27.3
blueocean-i18n:1.27.3
blueocean-jira:1.27.3
blueocean-jwt:1.27.3
blueocean-personalization:1.27.3
blueocean-pipeline-api-impl:1.27.3
blueocean-pipeline-editor:1.27.3
blueocean-pipeline-scm-api:1.27.3
blueocean-rest:1.27.3
blueocean-rest-impl:1.27.3
blueocean-web:1.27.3
bootstrap4-api:4.6.0-5
bootstrap5-api:5.2.2-2
bouncycastle-api:2.27
branch-api:2.1071.v1a_188a_562481
build-failure-analyzer:2.4.1
build-time-blame:64.vd8f4018a2bbe
build-timeout:1.28
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:2.0.0
cloudbees-bitbucket-branch-source:800.va_b_b_9a_a_5035c1
cloudbees-folder:6.815.v0dd5a_cb_40e0e
codebuilder-cloud:1.0.1
command-launcher:90.v669d7ccb_7c31
commons-httpclient3-api:3.1-3
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-36.vc008c8fcda_7b_
config-file-provider:3.11.1
credentials:1224.vc23ca_a_9a_2cb_0
credentials-binding:523.vd859a_4b_122e6
cucumber-perf:2.0.9
data-tables-api:1.13.3-3
database:191.vd5981b_97a_5fa_
database-mysql:1.4
display-url-api:2.3.7
docker-commons:419.v8e3cd84ef49c
docker-workflow:563.vd5d2e5c4007f
durable-task:504.vb10d1ae5ba2f
ec2:2.0.6
ec2-fleet:2.5.2
echarts-api:5.4.0-3
email-ext:2.95
favorite:2.4.1
font-awesome-api:6.3.0-2
git:5.0.0
git-client:4.2.0
git-parameter:0.9.18
git-server:99.va_0826a_b_cdfa_d
github:1.37.0
github-api:1.303-417.ve35d9dd78549
github-branch-source:1703.vd5a_2b_29c6cdc
github-oauth:0.39
google-login:1.7
gradle:2.3.2
h2-api:1.4.199
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.31
http_request:1.16
instance-identity:142.v04572ca_5b_265
ionicons-api:45.vf54fca_5d2154
jackson2-api:2.14.2-319.v37853346a_229
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.8-1
jdk-tool:63.v62d2fd4b_4793
jenkins-design-language:1.27.3
jersey2-api:2.39.1-1
jira:3.9
jjwt-api:0.11.5-77.v646c772fddb_0
jnr-posix-api:3.1.16-2
jquery:1.12.4-1
jquery3-api:3.6.4-1
jsch:0.1.55.61.va_e9ee26616e7
junit:1189.v1b_e593637fa_e
junit-realtime-test-reporter:102.v3f020960a_646
ldap:671.v2a_9192a_7419d
lockable-resources:1131.vb_7c3d377e723
mailer:448.v5b_97805e3767
mapdb-api:1.0.9-28.vf251ce40855d
matrix-auth:3.1.6
matrix-project:785.v06b_7f47b_c631
mercurial:1260.vdfb_723cdcc81
metrics:4.2.13-420.vea_2f17932dd6
mina-sshd-api-common:2.9.2-62.v199162f0a_2f8
mina-sshd-api-core:2.9.2-62.v199162f0a_2f8
node-iterator-api:49.v58a_8b_35f8363
nodejs:1.6.0
okhttp-api:4.10.0-132.v7a_7b_91cef39c
openJDK-native-plugin:1.6
pam-auth:1.10
pipeline-build-step:487.va_823138eee8b_
pipeline-github:2.8-138.d766e30bb08b
pipeline-github-lib:42.v0739460cda_c4
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:629.vb_5627b_ee2104
pipeline-input-step:466.v6d0a_5df34f81
pipeline-maven:1279.v5d711113020f
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2125.vddb_a_44a_d605e
pipeline-model-definition:2.2125.vddb_a_44a_d605e
pipeline-model-extensions:2.2125.vddb_a_44a_d605e
pipeline-npm:49.v9c8598493533
pipeline-rest-api:2.32
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2125.vddb_a_44a_d605e
pipeline-stage-view:2.32
pipeline-utility-steps:2.15.1
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.2.0
popper-api:1.16.1-3
popper2-api:2.11.6-2
pubsub-light:1.17
rancher:1.0.13-SNAPSHOT (private-12/31/2018 16:31-yunlong)
resource-disposer:0.21
scm-api:631.v9143df5b_e4a_a
script-security:1229.v4880b_b_e905a_6
simple-theme-plugin:146.v0e67db_a_9052e
slack:631.v40deea_40323b
snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4
sonar:2.15
sse-gateway:1.26
ssh-credentials:305.v8f4381501156
ssh-slaves:2.877.v365f5eb_a_b_eec
sshd:3.275.v9e17c10f2571
structs:324.va_f5d6774f3a_d
timestamper:1.23
token-macro:321.vd7cc1f2a_52c8
trilead-api:2.84.v72119de229b_7
variant:59.vf075fe829ccb
workflow-aggregator:596.v8c21c963d92d
workflow-api:1208.v0cc7c6e0da_9e
workflow-basic-steps:1010.vf7a_b_98e847c1
workflow-cps:3653.v07ea_433c90b_4
workflow-durable-task-step:1241.v1a_63e465f943
workflow-job:1289.vd1c337fd5354
workflow-multibranch:733.v109046189126
workflow-scm-step:408.v7d5b_135a_b_d49
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.44

What Operating System are you using (both controller, and any agents involved in the problem)?

Linux

Reproduction steps

  1. Run a rancher deployment
  2. See the error java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod

Expected Results

The deployment runs

Actual Results

java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
	at java.base/java.lang.ClassLoader.findClass(ClassLoader.java:719)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
	at hudson.util.MaskingClassLoader.loadClass(MaskingClassLoader.java:80)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at hudson.PluginFirstClassLoader2.loadClass(PluginFirstClassLoader2.java:69)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
Also:   java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
		at java.base/java.lang.ClassLoader.findClass(ClassLoader.java:719)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
		at hudson.util.MaskingClassLoader.loadClass(MaskingClassLoader.java:80)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
		at hudson.PluginFirstClassLoader2.loadClass(PluginFirstClassLoader2.java:69)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	Caused: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
Caused: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
	at jenkins.plugins.rancher.RancherBuilder.newRancherClient(RancherBuilder.java:138)
	at jenkins.plugins.rancher.RancherBuilder.initializeClient(RancherBuilder.java:130)
	at jenkins.plugins.rancher.RancherBuilder.perform(RancherBuilder.java:91)
	at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Finished: FAILURE

Anything else?

No response

Set always pull image

Hello,

Is it possible to set the "Always pull image when creating" flag with this plugin? Or to set the io.rancher.container.pull_image label?

Private Docker Host

We use a private Docker host, so it will be fine to specify when needed the docker host.

Thanks

Start Before Stop

Hi there. Thanks a lot for the great work with this plugin. I'm a bit confused wether the feature implemented in PR #22
is already available in a release or if one is planned? Or do I have to build the plugin myself if I need it?

Best Regards,
Johannes

[Feature Request] Finish upgrade as a separate step

Thank you for creating this plugin! It has saved me a lot of time.

One feature I think would be useful is to finish the upgrade as a separate step.

Use Case: deploy the service, run some tests, then finish the upgrade if they pass (and rollback if they fail)

Leave ports as optional

Some containers do not have exposed ports so it is necessary to leave the ports as optional.

Allow urls as environment variables.

It appears as though environment variables are found by splitting the string by a colon (:). This becomes problematic when actual environment variables are expected to contain colons. The most obvious example is a url. When using this as my environment variables:
environments: 'CONFIG_SERVER_URL:http://config:8888'
My environment variable actually gets set as just "http". If there could be a way to escape colons, that would be very useful.

Warning when using with jenkins version 2.60.1

I am unable to install plugin and get below warning with Jenkins version 2.60.1
Warning: the new version of this plugin claims to use a different settings format than the installed version. Jobs using this plugin may need to be reconfigured, and/or you may not be able to cleanly revert to the prior version without manually restoring old settings. Consult the plugin release notes for details.

Double( : ) parameters in Environment Variables Cannot be Applied in Rancher

For environment variables that require two or more (:) pass the inappropriate variables to the rancher api upgradeService or createService plugin.

Example, docker-compose-->
[
volumes:
- /ABC:/ABC
labels:
io.rancher.scheduler.affinity:host_label: dev01=01
]

To change plugin Enviroment variable-->
[
volumes:/ABC:/ABC,io.rancher.scheduler.affinity:host_label:dev01=01
]

Result-->
[
-launchConfig: {
type: "launchConfig",
-environment: {
io.rancher.scheduler.affinity: "host_label",
volumes: "/ABC"
},
]

May be, source here seems to be a issue.
https://github.com/jenkinsci/rancher-plugin/blob/master/src/main/java/jenkins/plugins/rancher/RancherBuilder.java
in private Map<String, Object> customEnvironments(String environments) {

how to setup development env

Summary

I was running it on my local with :

  • gradle-7.3

  • oracle java - 11

but when I reload your gradle project. It gives me below error:

Reference

Build file '/Users/rockjing/IdeaProjects/rancher-plugin/build.gradle' line: 16

A problem occurred evaluating root project 'rancher-plugin'.

Failed to apply plugin 'org.jenkins-ci.jpi'.
No such property: TEST_COMPILE_CONFIGURATION_NAME for class: org.gradle.api.plugins.JavaPlugin

  • Try:

Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'rancher-plugin'.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
    at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:79)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
    at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
    at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:366)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:393)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:365)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:42)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
    at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:35)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:100)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:366)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:426)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:426)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:407)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:365)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:751)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:151)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.ensureConfigured(DefaultProjectStateRegistry.java:339)
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:55)
    at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:48)
    at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:64)
    at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
    at org.gradle.initialization.VintageBuildModelController.lambda$prepareProjects$1(VintageBuildModelController.java:93)
    at org.gradle.internal.build.StateTransitionController.lambda$doTransition$1(StateTransitionController.java:222)
    at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
    at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:221)
    at org.gradle.internal.build.StateTransitionController.transitionIfNotPreviously(StateTransitionController.java:190)
    at org.gradle.initialization.VintageBuildModelController.prepareProjects(VintageBuildModelController.java:93)
    at org.gradle.initialization.VintageBuildModelController.doBuildStages(VintageBuildModelController.java:77)
    at org.gradle.initialization.VintageBuildModelController.getConfiguredModel(VintageBuildModelController.java:58)
    at org.gradle.internal.build.StateTransitionController.notInStateIgnoreOtherThreads(StateTransitionController.java:89)
    at org.gradle.internal.build.DefaultBuildLifecycleController.getConfiguredBuild(DefaultBuildLifecycleController.java:98)
    at org.gradle.internal.build.AbstractBuildState.ensureProjectsConfigured(AbstractBuildState.java:65)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildToolingModelController.locateBuilderForTarget(DefaultBuildTreeModelCreator.java:90)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildToolingModelController.locateBuilderForDefaultTarget(DefaultBuildTreeModelCreator.java:82)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController$DefaultTargetModel.locate(DefaultBuildController.java:239)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getToolingModelBuilder(DefaultBuildController.java:184)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:98)
    at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter$2.getModel(InternalBuildActionAdapter.java:74)
    at org.gradle.tooling.internal.consumer.connection.BuildControllerAdapter.getModel(BuildControllerAdapter.java:62)
    at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.findModel(AbstractBuildController.java:65)
    at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.findModel(AbstractBuildController.java:49)
    at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.findModel(AbstractBuildController.java:34)
    at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:102)
    at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:41)
    at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:77)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.runAction(AbstractClientProvidedBuildActionRunner.java:131)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.beforeTasks(AbstractClientProvidedBuildActionRunner.java:99)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator.beforeTasks(DefaultBuildTreeModelCreator.java:57)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$1(DefaultBuildTreeLifecycleController.java:72)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:103)
    at org.gradle.internal.build.StateTransitionController.lambda$transition$0(StateTransitionController.java:145)
    at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
    at org.gradle.internal.build.StateTransitionController.transition(StateTransitionController.java:145)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:100)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel(DefaultBuildTreeLifecycleController.java:71)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:43)
    at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:53)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
    at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
    at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:114)
    at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
    at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:155)
    at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
    at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
    at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65)
    at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
    at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:38)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:38)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
    at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:100)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:88)
    at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
    at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
    Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin 'org.jenkins-ci.jpi'.
    at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:173)
    at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:146)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:167)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:43)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:98)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:190)
    at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:49)
    at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:37)
    at org.gradle.api.Script$apply$2.callCurrent(Unknown Source)
    at build_ahoa7makzn4eugwrw782i1oel.run(/Users/rockjing/IdeaProjects/rancher-plugin/build.gradle:16)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
    ... 160 more
    Caused by: groovy.lang.MissingPropertyException: No such property: TEST_COMPILE_CONFIGURATION_NAME for class: org.gradle.api.plugins.JavaPlugin
    at org.jenkinsci.gradle.plugins.jpi.JpiPlugin.configureConfigurations(JpiPlugin.groovy:268)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.jenkinsci.gradle.plugins.jpi.JpiPlugin.apply(JpiPlugin.groovy:128)
    at org.jenkinsci.gradle.plugins.jpi.JpiPlugin.apply(JpiPlugin.groovy)
    at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:43)
    at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:51)
    at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:187)
    at org.gradle.api.internal.plugins.DefaultPluginManager.access$100(DefaultPluginManager.java:52)
    at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:282)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.api.internal.plugins.DefaultPluginManager.lambda$doApply$0(DefaultPluginManager.java:167)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
    at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:166)
    ... 170 more

scheduling parameters are removed if plugin is used to upgrade service

image

Information about scheduling from rancher service is removed after using jenkins job with plugin. (iamge shows configuration with tells that service should work on specific host).
Work as intended if upgrade is started from rancher dashboard.

Expected effect: Should preserve configuration when upgrade job is started from jenkins.

Request to record a tutorial video about this plugin [Jenkins Chinese Community]

Hi team, I'm wondering if you can record a tutorial video about this plugin. We already have a bunch of videos. You can find it on bilibili. Also, we will publish it on the Jenkins Official WeChat Account.

Goals

We hope that all the Jenkins users can find the tutorials from one place. No matter they met the problems about how to use or config a plugin. We'd be happy to hear your response. Please see the details about this plugin in the below link.

jenkins-zh/jenkins-zh#345

Let assume you can understand and speak Chinese because we need a Chinese tutorial.

Can not update docker container

ERROR: Build step failed with exception
java.lang.NullPointerException
	at jenkins.plugins.rancher.RancherBuilder.getStack(RancherBuilder.java:192)
	at jenkins.plugins.rancher.RancherBuilder.perform(RancherBuilder.java:79)
	at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:736)
	at hudson.model.Build$BuildExecution.build(Build.java:206)
	at hudson.model.Build$BuildExecution.doRun(Build.java:163)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:496)
	at hudson.model.Run.execute(Run.java:1724)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:419)

no upgrade operation was performed

Upgrade the specified service by calling the rancher API through the Jenkins pipeline, result is error message:

Deploy/Upgrade image[docker:<image_url>:<image_tagid>] to service [<stack_name>/<server_name>] to rancher environment [http://<rancher_api_host>:<rancher_api_port>/v2-beta/projects/<project_id>]
Stack already exist. skip
Upgrading service instance
service <server_name> current state is active

In fact, no upgrade operation was performed.

java.lang.RuntimeException: Some Error Happen statusCode 422 response

jenkins:2.117
rancher:1.6.17
rancher plugin:1.0.11
console:
Stack already exist. skip
Upgrading service instance
service xxxxxx current state is active
ERROR: Build step failed with exception
java.lang.RuntimeException: Some Error Happen statusCode 422 response: {"id":"e054b38d-002a-4839-a2e4-5c3581fc052b","type":"error","links":{},"actions":{},"status":422,"code":"InvalidOption","message":null,"detail":null,"fieldName":"StartFirst option can't be used for service with retainIp field set","baseType":"error"}
at jenkins.plugins.rancher.HttpClient.execute(HttpClient.java:72)
at jenkins.plugins.rancher.HttpClient.post(HttpClient.java:42)
at jenkins.plugins.rancher.RancherClient.upgradeService(RancherClient.java:56)
at jenkins.plugins.rancher.RancherBuilder.upgradeService(RancherBuilder.java:168)
at jenkins.plugins.rancher.RancherBuilder.perform(RancherBuilder.java:107)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1727)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Build step 'Deploy/Upgrade Rancher Service' marked build as failure
Finished: FAILURE

Choice NetWorking

deploy or upgrad a service ,can config NetWorking by jenkins-rancher plugin

support build variables in all fields

Hi, I would like to suggest allowing build variables (and also, of course parameter values) for all fields - such as service, environment and target environment variables

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.