Я использую Travis для непрерывной сборки и интеграции.
after_success:
- sbt publish
Пока мы хотим, чтобы Тревис построил все наши ветки и набрал запросы, мы хотим только publish
, когда на ветке master
.
publishTo <<= version { (v: String) =>
val nexus = s"asdf"
/* Don't let Travis publish when building pull requests.
* $TRAVIS_PULL_REQUEST == "false" if it 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 дважды компилирует ветки, потому что он не публикует публикации на самом последнем этапе.
Как может Тревис полностью предотвратить запуск sbt publish
, когда на ветке не master
?