Jenkins + Maven - 如何在 release:perform 清理项目之前执行 shell 脚本
Jenkins + Maven - How to execute shell script before release:perform cleans the project
我有一个 Maven 项目,它在 mvn 包上使用 maven-assembly-plugin 生成一个 zip 文件
MyProy
|--pom
|--src/...
|--target
|---MyProy-something-1.0.0-SNAPSHOT-zip (contains /1.0.0-SNAPSHOT/...)
我创建了一个 Jenkins 作业并将 shell 脚本执行配置为 post 步骤。此脚本将 zip 文件复制到文件夹 (/something) 并解压缩
|-/something
|---1.0.0-SNAPSHOT
|---...
这适用于构建。但是,我想在发布版本时做同样的事情。我安装了 Jenkins 发布插件并在 "configure release build" 中添加了这个任务:
- 发布前构建 -> Maven 任务
mvn release:prepare
- 发布构建成功后->Maven任务
mvn release:perform
- 成功发布构建后 -> 执行 shell 脚本 - 复制 zip 并解压。
我看到 mvn release:perform
正确执行,例如版本 1.0.0 但问题是当脚本 (3.) 启动时它适用于下一个开发版本 (1.0.1-SNAPSHOT ) 而不是发布版本 (1.0.0)。
我是这样解决问题的:
发布构建前
- mvn release:prepare
发布构建成功后
- mvn release:perform
- mvc scm:checkout -DscmVersion=${releaseVersion} -DscmVersionType=tag
- -f ${WORKSPACE}/target/checkout 全新安装
- 执行 shell 脚本并复制并解压
总而言之,在 release:perform 我签出全新标签后,在下载标签的位置执行全新安装,最后我执行复制 zip 并解压缩的脚本。
我有一个 Maven 项目,它在 mvn 包上使用 maven-assembly-plugin 生成一个 zip 文件
MyProy
|--pom
|--src/...
|--target
|---MyProy-something-1.0.0-SNAPSHOT-zip (contains /1.0.0-SNAPSHOT/...)
我创建了一个 Jenkins 作业并将 shell 脚本执行配置为 post 步骤。此脚本将 zip 文件复制到文件夹 (/something) 并解压缩
|-/something
|---1.0.0-SNAPSHOT
|---...
这适用于构建。但是,我想在发布版本时做同样的事情。我安装了 Jenkins 发布插件并在 "configure release build" 中添加了这个任务:
- 发布前构建 -> Maven 任务
mvn release:prepare
- 发布构建成功后->Maven任务
mvn release:perform
- 成功发布构建后 -> 执行 shell 脚本 - 复制 zip 并解压。
我看到 mvn release:perform
正确执行,例如版本 1.0.0 但问题是当脚本 (3.) 启动时它适用于下一个开发版本 (1.0.1-SNAPSHOT ) 而不是发布版本 (1.0.0)。
我是这样解决问题的:
发布构建前
- mvn release:prepare
发布构建成功后
- mvn release:perform
- mvc scm:checkout -DscmVersion=${releaseVersion} -DscmVersionType=tag
- -f ${WORKSPACE}/target/checkout 全新安装
- 执行 shell 脚本并复制并解压
总而言之,在 release:perform 我签出全新标签后,在下载标签的位置执行全新安装,最后我执行复制 zip 并解压缩的脚本。