我通过使用
调用maven来启动jenkins的发布过程-Dresume=false clean release:prepare release:perform
由于我想在准备过程完成之前更改源代码(添加目录和文件并将它们提交到git),我想运行一个配置文件' doAtPrepare'仅在发布时:准备阶段。该配置文件已在正确的位置工作,但不幸的是两次调用。一旦发布:准备和发布一次:执行阶段。当提交到一个分离的头部时,后者会产生错误。在git。
要在发布时运行配置文件:仅执行阶段,配置选项' releaseProfiles'在maven-release-plugin中有效。但我反过来需要它,到目前为止还没有找到解决方案。
我尝试使用profile.activation.properties(profile =!doAtPrepare),尝试设置变量(-D)并使用profile.activation.properties检查它们,尝试检查profile.activation.file中的现有文件(因为文件名包含$ {version}参数,因此尝试在jenkins命令行使用-P(在两个阶段触发配置文件)等等,因此无法正常工作。
有谁可以帮我找到合适的解决方案?
答案 0 :(得分:0)
我找到了解决方法,但不是真正的解决方案。仍然欢迎更好的建议。
首先,添加一个完成所需工作的配置文件:
<profile>
<id>createNextDir</id>
<build>
<plugins>
<plugin>
<!-- whatever you want -->
</plugin>
</plugins>
</build>
</profile>
接下来,在配置文件中添加一个作业,在目标目录中创建一个具有固定文件名的虚拟文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>createNextDir1</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<propertyfile file="target/done.lock" comment="Version ${project.version}">
</propertyfile>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
最后一步是仅在文件不存在时激活配置文件。请注意,在发布期间:执行基目录是target / checkout / yourproject,因此需要引用正确的文件../../../ yourproject / target / done.lock
<profile>
<id>createNextDir</id>
<activation>
<file>
<missing>../../../yourproject/target/done.lock</missing>
</file>
</activation>
<!-- Rest of profile -->
</profile>