我有一个简单的Maven项目,必须产生伪像,例如some-artifact我也在Jenkins工作,将简单的maven部署到我们的内部Nexus存储库 . 这是Jenkins在"Maven goals and options"字段中为作业设置的值:
clean source:jar deploy
让我们假设我的maven模块的版本是1.0:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>some.group</groupId>
<artifactId>some-artifact</artifactId>
<version>1.0</version>
</project>
现在,我想要实现的是检测SCM中的工件版本是否已更改,并在每次更改版本号时构建此作业,例如,设置为1.1后:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>some.group</groupId>
<artifactId>some-artifact</artifactId>
<version>1.1</version>
</project>
The final goal is to have last version of some-artifact deployed on Nexus as soon as possible.
是否有任何配置或Jenkins插件允许这样的检测和作业触发?
2 回答
我不知道它是否可以帮助,有几个插件集成了maven和Jenkins,所以也许其中一个将有一个构建int功能来完成你需要的...
顺便说一下,如果没有特定的插件,有很多方法..你可以使用$ 变量,它是随着
https://issues.jenkins-ci.org/browse/JENKINS-18272
然后将它与前一个版本,先前版本或历史记录等进行比较......这样,只要版本已更改,您就可以运行该作业 .
您还可以将此参数与 parameterized trigger plugin 结合使用:
https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin
或者你可以使用SVN钩子实现这一点,如果版本已被更改触发Jenkins作业,可能有很多方法可以手动执行此操作...非常糟糕这最后一个选项!但它有效..
让我们尝试以标准方式“user2310395”执行此操作...
你如何释放神器? Maven发布插件还是其他什么?
我问这个是因为我认为标准的“工作流程”应该如下所示:
使用maven发布插件将一个工件(1.00-SNAPSHOT)发布到(1.00) . 现在你知道了,这就是要调用Maven的目标,那么为什么不使用Jenkins工作来完成这个呢?并且你有插件可以帮助你,以防万一你需要,例如:Jenkins Release插件
一旦Release作业运行,您将不需要任何其他工作,因为Maven发布插件本身会将新版本工件关注到Nexus标记存储库中 .
那么我缺少什么,为什么你不能只遵循标准的工作流程?