将环境变量传入SBT的正确方法是什么,以便可以使用Specs2进行访问? (然后检索Specs2中的值。)环境变量将包含用于测试的API密钥。
它需要是一个环境变量才能使用Travis CI的加密环境变量功能[1]
我的设置:
编辑奖励积分。必须有几个!
答案 0 :(得分:1)
我猜您可以使用travis api加密密钥并获取:
xxxEncryptedxxx
然后,您可以使用CommandLineArguments
特征将SBT中命令行的参数传递给您的规范。
在.travis.yml
sbt ++$TRAVIS_SCALA_VERSION testOnly *MySpec* -- key xxxEncryptedxxx
在MySpec.scala
class MySpec extends mutable.Specification with CommandLineArguments {
"this is an API test" >> {
arguments.commandLine.value("key").map { k =>
callApi(k) must beOk
}.getOrElse(ko("you need to pass a key on the command line"))
}
}
答案 1 :(得分:0)
从您的问题来看,我认为您希望使用Travis's built-in support for encryption传递安全的环境变量?
如果是,则在运行SBT之前设置环境变量,因此它应该可供所有进程使用。我不使用Specs,但获取环境变量的标准JVM方法是使用System.getenv(String)
。 可能 sbt在运行Specs之前删除环境变量;如果这是真的那么必须以某种方式在build.sbt中完成修复,并且不是特定于Travis。