【发布时间】:2018-03-04 20:32:01
【问题描述】:
我有一个 SBT 项目和一个 CD 管道,我想要执行以下步骤序列:
- 从 git repo 中签出我的项目
- 标记提交
- 运行测试
- 打包我的应用
现在我还不想发布任何东西,因为我会将二进制文件提升到另一个环境以运行端到端测试。只有当它们成功完成时,我才想推送 git 标签并将我的人工制品上传到远程人工制品存储库。我真正想要实现的是能够首先运行sbt prepereRelease,然后我将提升到我的测试环境,然后,如果一切顺利,再运行sbt doRelease。所以我想要在我的 build.sbt 中有类似的东西:
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
setNextVersion,
commitNextVersion
)
commands += Command.command("prepareRelease")((state:State) => {
val newState = Command.process("release",state)
println("Release called from prepareRelease...")
newState
})
releaseProcess := Seq[ReleaseStep](
publishArtifacts,
setNextVersion,
commitNextVersion,
pushChanges
)
commands += Command.command("doRelease")((state:State) => {
val newState = Command.process("release",state)
println("Release called from doRelease...")
newState
})
我几乎觉得我必须定义两个自定义命令,每个命令都必须使用不同的 releaseProcess 设置从 sbt-release 插件调用原始发布命令 - 这就是我不知道该怎么做的地方去吧。不幸的是,上述设置不起作用,因为releaseProcess 设置会累积步骤,而您最终仍然会同时执行所有步骤。
【问题讨论】:
标签: scala sbt sbt-release