当前位置: 首页 > 面试题库 >

如何在Jenkins中将环境变量传递到sbt测试构建步骤?

杜俊爽
2023-03-14
问题内容

在我的Scala测试中,我通过读取了一个环境变量sys.props.getOrElse("cassandra.test.host", DEFAULT_CASSANDRA_TEST_HOST)

测试通过詹金斯进行。

我添加了一个Build using sbt作为构建步骤。

通过查看SO上的类似问题,我想到了这个解决方案-即将“操作”字段设置为:

'; set javaOptions += "-Dcassandra.test.host=XX.XXX.XXX.XXX"; test'

但它不起作用。Properties.envOrElse执行时未设置任何变量。

Jenkins控制台输出包含:

[...] [util-sessionizer] $ java -jar /usr/local/bin/sbt-launch.jar '; set javaOptions += "-Dcassandra.test.host=XX.XXX.XXX.XXX"; test' [info] Loading project definition from /jenkins/workspace/util-sessionizer/project/project [info] Loading project definition from /jenkins/workspace/util- sessionizer/project [info] Set current project to util-sessionizer (in build file:/jenkins/workspace/util-sessionizer/) [info] Defining *:javaOptions [info] The new value will be used by *:runner, compile:run::runner and 4 others. [info] Runlastfor details. [info] Reapplying settings... [...]


问题答案:

如果您不使用新的JVM执行测试,则设置javaOptions不会执行任何操作。SBT摘录:

> help javaOptions
Options passed to a new JVM when forking.

这解释了为什么javaOptions不进行分叉测试时不使用您的代码

您基本上有两种解决方案:

  • 无论哪种设置fork in Test := true都可以在派生的JVM中运行测试
  • 或将您的系统属性传递给SBT本身:

sbt -Dcassandra.test.host=XX.XXX.XXX.XXX test



 类似资料:
  • 在容器中,我希望获得正常的jenkins构建环境变量,如 到目前为止,在上面的代码中,在中,它没有传统的构建变量。 有什么解决方案可以在容器中获得这些变量吗?

  • 在构建docker映像时,可以将环境变量作为文件传递给Dockerfile吗? 我按照这里的建议使用了,但由于我有多个参数,我更喜欢使用一个文件。 我也尝试使用方法,但我需要在构建时添加这些参数。 提前感谢。

  • 问题内容: 我正在尝试使用单个,几个文件和几个文件为多个环境创建配置。我需要它为每个环境使用具有python依赖关系的其他文件。 假设我们在两个环境中创建服务:和。为此,我创建了以下文件结构: 目的是在容器的过程中实例化文件的专有名称。根据文档,我尝试了这种天真的方法,这种方法似乎不起作用: 将名称定义为环境变量: envs / dev.env: envs / prod.env: 在 Docker

  • 问题内容: 我正在使用Scriptler插件,因此可以在构建步骤中运行groovy脚本。我的Jenkins奴隶正在服务模式下的Windows上运行。使用脚本编辑器,我不需要使用Windows批处理脚本。 但是我很难在构建步骤中获取环境变量。 哪里是将env-瓦尔对詹金斯启动部分。但是,我想得到 如果要添加“执行Windows批处理命令”构建步骤: 有用。如果要添加具有相同设置的脚本程序脚本作为构建

  • 我使用脚本插件,所以我可以运行一个Groovy脚本作为构建步骤。我的Jenkins奴隶在服务模式下的窗口上运行。有了脚本,我不需要使用窗口批处理脚本。 但是我很难在构建步骤中获取环境变量…这是有效的: 其中 是 enkins 初创公司 env-vars 的一部分。但是,我想得到 如果我添加“执行 Windows 批处理命令”构建步骤: 它起作用了。如果我添加一个脚本脚本作为具有相同设置的构建步骤:

  • 问题内容: 我正在尝试将有角度的应用程序从gulp转换为webpack。在gulp中,根据NODE_ENV,我使用gulp- preprocess替换html页面中的某些变量(例如,数据库名称)。使用webpack达到类似结果的最佳方法是什么? 问题答案: 有两种基本方法可以实现此目的。 定义插件 请注意,这只会按原样替换匹配项。这就是字符串具有其格式的原因。您可能有一个更复杂的结构,例如那里的一