在 Jenkins 作业中设置来自 build.sbt 的变量值
Setting the value of a variable from build.sbt in the Jenkins job
我是 Jenkins 和 Sbt 的新手,我想在 build.sbt 中声明的 jenkins 中设置一个变量的值。
为了解释,我正在尝试在 artifactory 存储库中发布 jar。
我有两个存储库,一个用于发布,另一个用于快照。
在 build.sbt 中:
publishTo := Some("Artifactory Realm" at "https://artifactory.mycloud.something.com/artifactory/sbt-handlereleases")
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
resolvers += "Artifactory" at "https://artifactory.mycloud.something.com/artifactory/sbt-handlereleases/"
在 Jenkins 作业中(构建 > 执行 shell):
sbt clean compile package publish
此代码使我能够在 artifactory 的发布存储库中发布 jar。
但是,如果我想在快照存储库中发布,我将不得不为快照存储库 (https://artifactory.mycloud.something.com/artifactory/sbt-handlesnapshots).
修改 build.sbt 和正确的 url。
我如何在 build.sbt ($URL_REPO) 中设置变量并通过为快照或发布分配 url 来指定它在 jenkins 作业中的值?
任何帮助是极大的赞赏。
谢谢
要定义存储库,您应该使用 publishTo
设置。这是来自 Publishing docs:
的示例
// in build.sbt
publishTo := {
val nexus = "https://my.artifact.repo.net/"
if (isSnapshot.value)
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
}
快照和发布存储库之间的这种切换基于 isSnapshot
设置,通常只检查 version
设置是否具有 -SNAPSHOT
后缀。
如果这适用于您的用例,这就是可行的方法。如果没有,你需要根据一些外部因素(例如你如何触发你的 Jenkins 管道)来切换它,你可以在 Jenkins 中引入一个环境变量并在 publishTo
定义中检查它:
// in build.sbt
publishTo := {
if (sys.env.get("IS_SNAPSHOT").isDefined)
Some("snapshots" at "...")
else
Some("releases" at "...")
}
或者如果您想动态设置 URL:
publishTo := sys.env.get("URL_REPO").map{ url =>
"publishing repository" at url
}
我是 Jenkins 和 Sbt 的新手,我想在 build.sbt 中声明的 jenkins 中设置一个变量的值。 为了解释,我正在尝试在 artifactory 存储库中发布 jar。 我有两个存储库,一个用于发布,另一个用于快照。 在 build.sbt 中:
publishTo := Some("Artifactory Realm" at "https://artifactory.mycloud.something.com/artifactory/sbt-handlereleases")
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
resolvers += "Artifactory" at "https://artifactory.mycloud.something.com/artifactory/sbt-handlereleases/"
在 Jenkins 作业中(构建 > 执行 shell):
sbt clean compile package publish
此代码使我能够在 artifactory 的发布存储库中发布 jar。 但是,如果我想在快照存储库中发布,我将不得不为快照存储库 (https://artifactory.mycloud.something.com/artifactory/sbt-handlesnapshots).
修改 build.sbt 和正确的 url。我如何在 build.sbt ($URL_REPO) 中设置变量并通过为快照或发布分配 url 来指定它在 jenkins 作业中的值? 任何帮助是极大的赞赏。 谢谢
要定义存储库,您应该使用 publishTo
设置。这是来自 Publishing docs:
// in build.sbt
publishTo := {
val nexus = "https://my.artifact.repo.net/"
if (isSnapshot.value)
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
}
快照和发布存储库之间的这种切换基于 isSnapshot
设置,通常只检查 version
设置是否具有 -SNAPSHOT
后缀。
如果这适用于您的用例,这就是可行的方法。如果没有,你需要根据一些外部因素(例如你如何触发你的 Jenkins 管道)来切换它,你可以在 Jenkins 中引入一个环境变量并在 publishTo
定义中检查它:
// in build.sbt
publishTo := {
if (sys.env.get("IS_SNAPSHOT").isDefined)
Some("snapshots" at "...")
else
Some("releases" at "...")
}
或者如果您想动态设置 URL:
publishTo := sys.env.get("URL_REPO").map{ url =>
"publishing repository" at url
}