发布库在我的项目中不是原子操作,因为该过程涉及在失败的情况下需要清理的许多副作用。由于超时、尝试发布已经存在的版本、暂存存储库已经存在、签名密钥问题等可能会发生错误。目前,我执行回滚拙劣版本的手动步骤包括
- 登录到Sonatype Nexus并删除临时存储库
- 删除版本增加提交:
git reset --hard sha
- 删除标签:
git tag -d name
有没有办法使发布过程原子化,以便所有更改在失败时自动恢复?
我的项目的发布过程类似于How to release a Scala library to Maven Central using sbt? 即
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
publishArtifacts,
setNextVersion,
commitNextVersion,
releaseStepCommand("sonatypeReleaseAll"),
pushChanges
)
哪里plugins.sbt
有
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.11")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.0.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.5")