【发布时间】:2026-01-11 14:25:02
【问题描述】:
我正在使用 Travis 进行持续构建和集成。
after_success:
- sbt publish
虽然我们希望 Travis 构建我们所有的分支和拉取请求,但我们只希望它在 master 分支上时用于 publish。
publishTo <<= version { (v: String) =>
val nexus = s"asdf"
/* Don't let Travis publish when building pull requests.
* $TRAVIS_PULL_REQUEST == "false" if it's not a pull request. So we wan't publishTo to be
* None when TRAVIS_PULL_REQUEST != false.
*/
if(Try(sys.env("TRAVIS_PULL_REQUEST")).getOrElse("false") != "false")
None
/* Don't let Travis publish except when building master. */
if(Try(sys.env("TRAVIS_BRANCH")).map(_ != "master").getOrElse(false))
None
else if(v.trim.endsWith("SNAPSHOT"))
Some("snapshots" at nexus + "snapshots")
// don't let Travis publish releases, either
else if(Try(sys.env("TRAVIS")).getOrElse("false") == "true")
None
else
Some("releases" at nexus + "releases")
})
这种方法的问题是 Travis 编译了两次分支,因为它在最后一步发布失败。
如何才能完全阻止 Travis 在非master 分支上运行sbt publish?
【问题讨论】:
-
是的,我们使用的是 sbt 0.13。