Puppet + Jenkins:如何调用顶级 Maven 目标

Puppet + Jenkins: how to invoke top-level Maven target

我正在尝试使用 Puppet 在虚拟机上设置 Jenkins 作业,将此虚拟机作为 Puppet 中的代理,另一台作为主机。我想要做的是让 Puppet 下载并安装 Jenkins 和所有必要的包来完成这项工作,设置工作并构建它。我已经能够完成其中的大部分工作,但现在我需要在 Jenkins 的构建过程中调用 Maven 的目标,而且我不知道如何让 Puppet 配置它。所以问题是:是否有人知道如何做到这一点?谢谢。

PS:我从一周开始就开始学习 Jenkins 和 Puppet "by doing",所以我显然是他们的新手!

您是否考虑过使用官方 Jenkins Puppet 模块?

https://github.com/jenkinsci/puppet-jenkins

您应该可以添加此代码:

puppet module install rtyler/jenkins
puppet apply -e 'include jenkins'

然后,如果您想管理 jenkins 作业,请执行以下操作:

jenkins::job { 'test-build-job':
 config => template("${templates}/test-build-job.xml.erb"),
}

您可以在哪里将给定的作业定义为 XML 文件

为了使用 puppet-jenkins 项目创建工作:(https://github.com/jenkinsci/puppet-jenkins),我创建了这样的工作:

          jenkins::job {
          'build' :
              config => '<?xml version=\'1.0\' encoding=\'UTF-8\'?>
      <project>
      <actions/>
      <description></description>
      <keepDependencies>false</keepDependencies>
      <properties></properties>
      <scm class="hudson.scm.NullSCM"/>
      <canRoam>true</canRoam>
      <disabled>false</disabled>
      <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
      <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
      <triggers/>
      <concurrentBuild>false</concurrentBuild>
      <builders/>
      <publishers/>
      <buildWrappers/>
      </project>';
      }

在 运行 vagrant up 并进入你的 jenkins 之后,你会看到这个作业被读取到构建。

我发现最简单的是,使用 jenkins::job::present jenkins::job

的意图
  jenkins::job::present { 'testjob':
    config_file => '/var/testjob.xml',
    require     => File['testjobxml'],
  }