Jenkins CloudBees Deployer插件找不到gradle cloudbees插件生成的war文件

时间:2014-05-07 11:04:41

标签: jenkins gradle continuous-integration cloudbees spring-boot

我正在尝试使用Cloudbees为Spring Boot应用程序设置CI。设置Jenkins Maven工作没问题。代码从github存储库中提取,Jenkins构建并成功部署应用程序。

但我正在学习Gradle。当我创建Gradle Jenkins作业时,它会成功构建项目,但看起来Jenkins CloudBees Deployer插件无法找到war文件。

我将作业创建为“构建自由式软件项目”并使用Gradle Wrapper调用gradle脚本。该项目构建正常,我希望Jenkins也部署它,但部署按钮不显示。

在Jenkins作业的RUN @ Cloud设置中,显示错误消息“没有存档的工件”(参见图像)。 There are no archived artifacts

如果我查看工作区,我可以在/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'
}

1 个答案:

答案 0 :(得分:0)

我试图重现你的案子。

首先,如果要启用"立即部署"必须使用后期构建操作配置自由式工作来存档工件。按钮。

在构建工作之前,分叉项目并将包类型更改为" war"在build.gradle中。 您可以在这里引用我自己的版本https://github.com/valentina1987/springboot-gradle-cloudbees-sample,我在其中更改了build.gradle中的archiveType,来自" jar"到"战争"。

现在它应该工作:)