com.amazonaws.services.codedeploy.model.InvalidFileExistsBehaviorException: For Lambda, ECS and Kubernetes deployment, fileExistsBehavior can not be specified (Service: AmazonCodeDeploy; Status Code: 400; Error Code: InvalidFileExistsBehaviorException; Request ID: 31fec058-f220-4842-bb9c-bdef9ef4734c; Proxy: null)
What Operating System are you using (both controller, and any agents involved in the problem)?
Running this on jenkins node
Reproduction steps
Install pipeline-aws plugin on Jenkins
Create an Application, Deployment group in AWS Code Deploy.
Create a jenkins pipeline and furnish the details like below.
Code Deploy deployment should be created with appspec provided in reproduction steps.
Actual Results
Jenkins console output:
com.amazonaws.services.codedeploy.model.InvalidFileExistsBehaviorException: For Lambda, ECS and Kubernetes deployment, fileExistsBehavior can not be specified (Service: AmazonCodeDeploy; Status Code: 400; Error Code: InvalidFileExistsBehaviorException; Request ID: 31fec058-f220-4842-bb9c-bdef9ef4734c; Proxy: null)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1912)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1450)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1419)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1183)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:838)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:805)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:779)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:735)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:717)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:581)
at PluginClassLoader for aws-java-sdk-minimal//com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:559)
at PluginClassLoader for aws-java-sdk-codedeploy//com.amazonaws.services.codedeploy.AmazonCodeDeployClient.doInvoke(AmazonCodeDeployClient.java:4389)
at PluginClassLoader for aws-java-sdk-codedeploy//com.amazonaws.services.codedeploy.AmazonCodeDeployClient.invoke(AmazonCodeDeployClient.java:4356)
at PluginClassLoader for aws-java-sdk-codedeploy//com.amazonaws.services.codedeploy.AmazonCodeDeployClient.invoke(AmazonCodeDeployClient.java:4345)
at PluginClassLoader for aws-java-sdk-codedeploy//com.amazonaws.services.codedeploy.AmazonCodeDeployClient.executeCreateDeployment(AmazonCodeDeployClient.java:1609)
at PluginClassLoader for aws-java-sdk-codedeploy//com.amazonaws.services.codedeploy.AmazonCodeDeployClient.createDeployment(AmazonCodeDeployClient.java:1578)
at PluginClassLoader for pipeline-aws//de.taimos.pipeline.aws.code.deploy.CreateDeployStep$Execution.run(CreateDeployStep.java:166)
at PluginClassLoader for pipeline-aws//de.taimos.pipeline.aws.code.deploy.CreateDeployStep$Execution.run(CreateDeployStep.java:141)
at PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Finished: FAILURE
By default the code has set 'fileExistsBehavior' to 'DISALLOW' which need to be checked based on the platform of deployment and not AWS default value here.
Jenkins and plugins versions report
Getting InvalidFileExistsBehaviorException even though fileExistsBehavior is not specified.
Running the following block on Jenkins pipeline:
Getting following error:
What Operating System are you using (both controller, and any agents involved in the problem)?
Running this on jenkins node
Reproduction steps
Expected Results
Code Deploy deployment should be created with appspec provided in reproduction steps.
Actual Results
Jenkins console output:
Anything else?
No response
Are you interested in contributing a fix?
I would be happy to.
We have a check here which can extensively check which platform we are deploying on. https://github.com/jenkinsci/pipeline-aws-plugin/blob/ab51af4abbb17a476796804ab6eb9f54aff1ebb6/src/main/java/de/taimos/pipeline/aws/code/deploy/CreateDeployStep.java#L178
By default the code has set 'fileExistsBehavior' to 'DISALLOW' which need to be checked based on the platform of deployment and not AWS default value here.