我在 Jenkins 中绝对是新的,我有以下问题。
我有两个代表彼此相关的不同项目的工作。
特别是我有以下情况:
我有一个名为 main-project 的主项目:这是一个Java EE项目。然后我有一个名为 client-project 的Flex项目,代表上一个项目的Web客户端。
这两个项目都存储在特定的 GIT 存储库中(因此我有一个特定的GIT存储库用于主项目 Java EE项目和另一个特定的存储库客户项目)。
2个项目(在我的本地机器上)以下列方式相关:
主项目包含 .swf 文件,该文件代表客户端项目的编译版本。
这样的事情:
\main-project\src\main\webapp\Main.swf
因此,您可以看到我的**主项目的 \ src \ main \ webapp **目录被手动推送代表的 Main.swf 文件Flex 客户端项目的编译。
好的,我的问题是:我有2个与这些项目相关的 Jenkins 工作。
1) main-project-job:这是在主项目项目上编译和部署的Jenkins作业。
2)客户 - 项目 - 工作:这项工作我认为应该什么都不做(它只检索客户端项目项目的最新编译版本。
我必须以这种方式自动化构建过程:
之后,开发人员推动 GIT 新版主项目项目 main-project-job 编译并部署它在服务器上。当此作业结束时,启动 client-project-job ,将 Main.swf 文件替换为** \ DEPLOYED-PROJECT \ src \ main \ webapp **路径我在服务器上部署的项目。
如何使用Jenkins做这样的事情?这是一个干净的解决方案,以保持同步最新版本的主项目和客户端项目?
答案 0 :(得分:1)
>如何使用Jenkins做这样的事情?
听起来像我可以用Parametrized Trigger Plugin或类似的东西轻松完成。
只需将构建后步骤Trigger/call builds on other projects
添加到 main-project-job ,这将启动 client-project-job 。
如果由于某种原因这还不够,请在需要的工作流程中添加更多详细信息。
答案 1 :(得分:0)
这里有一些您可能想要探索的线索。
由于您的主项目似乎在很大程度上依赖于您的swf文件(它可能不应该在没有swf文件的情况下部署),您是否只能获取并将swf文件作为已编译的主项目的一部分神器?您部署的主项目在部署时已经包含了swf文件,这似乎是合乎逻辑的。
使用Jenkins管道,这样的事情很容易做到:
stage("Build main project") {
// your build step
}
stage("Copy client project to main webapp") {
git 'your-git/client-project'
sh "cp client-project/generated-swf /main-project/src/main/webapp/Main.swf"
}
stage("Deploy main project") {
// your deploy step
}
如果在部署之前无法将swf文件直接集成到主项目中,您仍然可以使用相同的工作来执行此操作,如果主项目严重依赖于swf文件,您可能希望将其复制为部分这份工作。在这种情况下,只有复制步骤会发生变化,您需要使用一些scp
命令将swf文件复制到远程服务器上的已部署应用程序。
这些方面的东西:
stage("Build main project") {
// your build step
}
stage("Copy client project to main webapp") {
git 'your-git/client-project'
sh "scp client-project/generated-swf user@deployServer:/main-project/src/main/webapp/Main.swf"
}
stage("Deploy main project") {
// your deploy step
}
如果您确定要将复制操作作为另一个作业的一部分(让我们说,如果您有时需要手动触发作业以在正在运行的Web应用程序中复制已修改的swf文件,则服务器),您只需从main-project-job触发另一个作业:
主要项目在职强>
stage("Build main project") {
// your build step
}
stage("Deploy main project") {
// your deploy step
}
stage("Copy client project to main webapp") {
build job: copy-client-project
}
复制-客户项目强>
stage("Copy client project to main webapp") {
git 'your-git/client-project'
sh "scp client-project/generated-swf user@deployServer:/main-project/src/main/webapp/Main.swf"
}
最后一个细节:如果您决定使用单独的作业进行复制,我建议不要调用该作业" client-project-job"这通常意味着标准的构建/部署工作,而不是我将它命名为#34; copy-client-files"或类似的东西。