我正在尝试使用Cloudbees为Spring Boot应用程序设置CI。设置Jenkins Maven工作没问题。代码从github存储库中提取,Jenkins构建并成功部署应用程序。
但我正在学习Gradle。当我创建Gradle Jenkins作业时,它会成功构建项目,但看起来Jenkins CloudBees Deployer插件无法找到war文件。
我将作业创建为“构建自由式软件项目”并使用Gradle Wrapper调用gradle脚本。该项目构建正常,我希望Jenkins也部署它,但部署按钮不显示。
在Jenkins作业的RUN @ Cloud设置中,显示错误消息“没有存档的工件”(参见图像)。
如果我查看工作区,我可以在/build/libs/myApp.war中看到war文件。
我可以使用Gradle CloudBees Plugin直接部署应用程序,正如Sean Gilligan在SpringBoot CloudBees Sample中解释的那样,但我宁愿让Jenkins为我做这件事:)。
P.S。使用Ant匹配** / *添加post构建操作.war在构建后成功部署应用程序。哪个对我来说足够好。所以问题只在于“一键部署”功能。这是一个错误吗?
P.S.2 像Valentina建议的那样,添加一个后期构建操作来存档工件并构建应用程序一次,然后“一键部署”按钮变为可用。 但是,部署失败并出现以下错误:
[cloudbees-deployer] Deploying via API server at https://api-eu.cloudbees.com/api
[cloudbees-deployer] 0 MB
[cloudbees-deployer] 1 MB
[cloudbees-deployer] 2 MB
[cloudbees-deployer] 3 MB
[cloudbees-deployer] 4 MB
[cloudbees-deployer] 5 MB
[cloudbees-deployer] 6 MB
[cloudbees-deployer] 7 MB
[cloudbees-deployer] 8 MB
[cloudbees-deployer] 9 MB
[cloudbees-deployer] 10 MB
[cloudbees-deployer] 11 MB
[cloudbees-deployer] 12 MB
[cloudbees-deployer] 13 MB
[cloudbees-deployer] 14 MB
[cloudbees-deployer] 15 MB
[cloudbees-deployer] 16 MB
[cloudbees-deployer] 17 MB
com.cloudbees.plugins.deployer.exceptions.DeployException: Server.InternalError - Deployment type not supported: war
at com.cloudbees.plugins.deployer.engines.Engine.process(Engine.java:180)
at com.cloudbees.plugins.deployer.engines.Engine.perform(Engine.java:112)
at com.cloudbees.plugins.deployer.DeployNowRunAction$Deployer.perform(DeployNowRunAction.java:588)
at com.cloudbees.plugins.deployer.DeployNowRunAction.run(DeployNowRunAction.java:500)
at com.cloudbees.plugins.deployer.DeployNowTask$ExecutableImpl.run(DeployNowTask.java:158)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:246)
Caused by: hudson.util.IOException2: Server.InternalError - Deployment type not supported: war
at com.cloudbees.plugins.deployer.impl.run.RunEngineImpl$DeployFileCallable.invoke(RunEngineImpl.java:363)
at com.cloudbees.plugins.deployer.impl.run.RunEngineImpl$DeployFileCallable.invoke(RunEngineImpl.java:270)
at com.cloudbees.plugins.deployer.engines.Engine$FingerprintingWrapper.invoke(Engine.java:252)
at com.cloudbees.plugins.deployer.engines.Engine.process(Engine.java:174)
... 6 more
Caused by: com.cloudbees.api.BeesClientException: Server.InternalError - Deployment type not supported: war
at com.cloudbees.api.BeesClient.readResponse(BeesClient.java:1794)
at com.cloudbees.api.BeesClient.applicationDeployArchive(BeesClient.java:732)
at com.cloudbees.plugins.deployer.impl.run.RunEngineImpl$DeployFileCallable.invoke(RunEngineImpl.java:355)
... 9 more
Duration: 8.8 sec
Finished: FAILURE
删除post build archive操作后,再次使用post build deploy操作再次成功部署。
P.S.3 问题发生在我的build.gradle中(我应该先发布它):
cloudBees {
apiKey = cloudbeesApiKey
apiSecret = cloudbeesApiSecret
appId = 'myAppId'
archiveType = 'jar'
archiveFile = war.archivePath
deltaDeploy = true
parameters = [containerType: "java", 'runtime.class': springBootWarLauncherClassName]
}
archiveType = 'jar'
必须是archiveType = 'war'
我认为我的build.gradle的一部分没有任何区别,因为我评论了cloudbees插件行:
apply plugin: 'war'
// apply plugin: 'cloudbees'
war {
baseName = 'myApp'
version = '0.0.1-SNAPSHOT'
}
答案 0 :(得分:0)
我试图重现你的案子。
首先,如果要启用"立即部署"必须使用后期构建操作配置自由式工作来存档工件。按钮。
在构建工作之前,分叉项目并将包类型更改为" war"在build.gradle中。 您可以在这里引用我自己的版本https://github.com/valentina1987/springboot-gradle-cloudbees-sample,我在其中更改了build.gradle中的archiveType,来自" jar"到"战争"。
现在它应该工作:)