CloudBees 现在支持部署 Java 应用程序,是否可以使用 Jenkins 中的构建后操作“部署到 CloudBees”来部署您的应用程序?此外,我想使用 Maven assembly plugin's jar-with-dependencies目标,以便我可以直接通过 Jenkins 简单自动地将我的整个应用程序部署到 CloudBees。
最佳答案
虽然当前的 CloudBees 部署程序 Jenkins 插件似乎不支持此功能,但实际上它支持。以下是经过多次试验和错误后对我有用的步骤:
- 在您的 pom.xml 中包含 jar-with-dependencies maven 插件。我用了
<goal>single</goal>
和<descriptorRef>jar-with-dependencies</descriptorRef>
描述 here .这将在您的目标文件夹中放置一个额外的 jar 文件{artifactId}-{version}-jar-with-dependencies.jar
- 通过 CloudBees API 部署该 jar .本页的最后一行解释了如何做到这一点。指定您的可运行 jar,确保 runtimeContainer=java,以及要上传的 jar 文件,它应该部署。尽管 CloudBees 说要使用 zip 文件,但 jar 文件也能正常工作。
- 通过命令行部署一次后,您的应用程序 ID 现在会“记住”这些设置,因此只要您将 CloudBees 部署到同一个应用程序,就可以通过 Jenkins 完成。在您的 Jenkins 作业中,将“部署到 CloudBees”构建后操作添加到您的配置中。单击“添加 Web 应用程序”(很奇怪,我知道,因为它不是 Web 应用程序!CloudBees 说他们会努力改变它...),选择 First Match(即使它是 Maven 项目,也使用 First Match),输入您在第 2 步中将应用程序部署到的应用程序 ID,然后输入您的 jar 文件的全名并再次尝试构建。它应该上传您的 jar 文件并激活 CloudBees PaaS 中的实例。请注意,这仍然对 jar 文件中的版本进行硬编码 - 我正在研究如何为 jar 文件的版本设置一个变量,使其与 Maven 构建版本相对应。
关于cloudbees - 如何通过 CloudBees Jenkins "Deploy Now"功能部署非 Web Java 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400163/