我正在尝试通过使用Jenkins来改进一系列shell脚本(为了获得更多控制并允许不熟悉shell脚本的开发人员在需要时理解和更改过程)。
我对使用SVN基本上检查项目的脚本没有任何问题,使用Maven构建它并将war部署到我们的容器。
但是现在我正在尝试创建一个Jenkins工作来为我们的客户打包Linux,Linux x86_64和Windows安装程序。该脚本执行以下操作:
这个脚本太复杂了,Linux,Linux64和Windows文件夹之间有很多冗余。我想象一个改进的过程,我将使用以下文件夹结构:
libs
|-- unversioned-folder
|-- linux
| `-- specific linux files
|-- linux64
| `-- specific linux x86_64 files
`-- windows
`-- specific windows files
workspace
|-- main-project
`-- versioned-folder
|-- versioned-subfolder1
|-- versioned-subfolder2
|-- unversioned-folder (copied from libs)
| `-- main-project.war (built with Maven from the main-project)
`-- Linux or Linux64 or Windows specific folder (overwritten after each packaging)
这样,版本化的文件夹不会重复,我可以打包Linux,Linux64和Windows安装程序而不会有冗余,只需覆盖每个文件的特定文件。
我一直在尝试使用Jenkins,并在脚本的第一部分使用Publish Over CIFS插件。但是如果我继续使用相同的工作,我意识到这将太复杂,并且大多数步骤都会在构建后的部分发生。
理想的方法是将工作分解为更小的工作,就像在shell脚本中调用函数一样。现在我正在研究Multijob plugin。
我想知道是否可以在Jenkins中使用此层次结构,共享父作业的工作区:
如果父作业的工作空间无法在子作业之间共享,我怎样才能获得与Jenkins的shell脚本相同的结果?
答案 0 :(得分:0)
使用克隆工作区插件在各个作业中共享.war /文件:
https://wiki.jenkins-ci.org/display/JENKINS/Clone+Workspace+SCM+Plugin
使用构建流程来并行化特定于操作系统的子作业:
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin