如何在Heroku创建slug前通过Gradle任务运行指定测试?
可行性说明
你提到的两种方案均可正常实现需求,以下是具体操作步骤:
方案一:修改默认构建命令(优先推荐,无需维护自定义buildpack)
heroku/gradle官方buildpack原生支持自定义构建任务,无需调整buildpack代码,操作成本最低:
- 在Jenkins任务的环境变量配置项中新增
GRADLE_TASK变量,值设置为build taskName -x check即可。gradle会自动按依赖顺序执行build和你的自定义task,比拼接&&执行效率更高 - 如果你更偏好使用配置文件声明,也可以在项目根目录新建
system.properties文件,添加如下内容:gradle.task=build taskName -x check
注意:如果你的测试任务依赖Docker环境,请确保Jenkins运行构建的agent节点已经开启Docker服务、且执行构建的用户拥有Docker操作权限,避免测试执行时报错。
方案二:自定义buildpack(适合有大量定制化构建需求的场景)
如果你后续还有其他定制化的构建逻辑需要集成,可以基于官方buildpack做二次开发:
- 拉取官方heroku/gradle buildpack源码到你的代码托管平台
- 找到源码中
bin/build脚本内执行gradle命令的代码段,将默认的./gradlew build -x check替换为./gradlew build -x check && ./gradlew taskName - 在Jenkins调用buildpack的配置处,将原官方buildpack地址替换为你自定义的buildpack仓库地址即可
内容的提问来源于stack exchange,提问作者AstroNomad
相关产品推荐
相关产品推荐

