在Jenkins中动态构建多个项目

时间:2016-01-15 23:57:54

标签: jenkins jenkins-plugins

我想使用Jenkins动态搜索*.sln个文件并触发每个文件的构建。

我有一个具有以下结构的git存储库:

\Project1\Project1.sln
\Project2\Project2.sln
\Project3\Project3.sln
..

我目前的解决方案是有两个项目。

家长项目:

  1. 添加构建步骤:“在其他项目上触发/调用构建”
  2. 添加ParameterFactory:“对于每个匹配的文件,调用一个构建”
  3. 搜索.sln个文件并触发每个匹配文件的构建,文件名设置为:SolutionFile
  4. 儿童项目:

    1. 使用环境变量“SolutionFile”创建解决方案文件的相对路径。
    2. 例如:Project1.sln变为Project1\Project1.sln

      1. 构建解决方案
      2. 有没有人对更好/更强大的解决方案有任何建议?

1 个答案:

答案 0 :(得分:0)

这是迄今为止我能够提出的最佳解决方案。

有两个项目:顶级负责识别解决方案文件,子项目构建解决方案文件。

顶级项目:

  1. 获取存储库
  2. 执行windows powershell脚本以搜索.sln个文件,并为每个文件创建一个属性文件:

    $solutions = Get-ChildItem ./ -recurse -include *.sln 
    
    foreach ($solution in $solutions) {
        Write-Host "Identified solution for build: $($solution.name)"
        Resolve-Path -Relative $solution | foreach { "SolutionFile=$_" -replace  '\\', '\\' | Out-File "$($solution.name).properties" -Encoding ASCII} 
    }
    

    注意:我必须使用编码类型ASCII,否则参数将包含额外的字符。

  3. 构建步骤:"在其他项目上触发/调用构建"使用参数/工厂"对于每个属性文件,调用一个构建"

  4. 文件模式:*.properties

    子项目:

    1. 使用参数:SolutionFile进行设置,该参数由属性文件
    2. 输入
    3. 获取存储库
    4. 构建解决方案文件