我正在尝试自动测试 Jenkins groovy dsl 脚本,如下所示:
https://github.com/sheehan/job-dsl-gradle-example
我认为这个想法非常简单,我遇到的问题是为虚拟Jenkins设置环境变量。我遵循这里的说明:
https://wiki.jenkins-ci.org/display/JENKINS/Unit测试
特别是“如何设置环境变量”部分,并将以下内容添加到我的测试执行器中:
import hudson.slaves.EnvironmentVariablesNodeProperty
import hudson.EnvVars
/**
* Tests that all dsl scripts in the jobs directory will compile.
*/
class JobScriptsSpec extends Specification {
@Shared
@ClassRule
JenkinsRule jenkinsRule = new JenkinsRule()
EnvironmentVariablesNodeProperty prop = new EnvironmentVariablesNodeProperty();
EnvVars envVars = prop.getEnvVars();
@Unroll
void 'test script #file.name'(File file) {
given:
envVars.put("ENVS", "dev19");
jenkinsRule.jenkins.getGlobalNodeProperties().add(prop);
JobManagement jm = new JenkinsJobManagement(System.out, [:], new File('.'))
when:
new DslScriptLoader(jm).runScript(file.text)
then:
noExceptionThrown()
where:
file << jobFiles
}
但是,当我为其中一个脚本运行实际测试时,我仍然看到以下内容:
Failed tests
test script Build.groovy
Expected no exception to be thrown, but got 'javaposse.jobdsl.dsl.DslScriptException'
at spock.lang.Specification.noExceptionThrown(Specification.java:118)
at com.dslexample.JobScriptsSpec.test script #file.name(JobScriptsSpec.groovy:40)
Caused by: javaposse.jobdsl.dsl.DslScriptException: (script, line 3) No such property: ENVS for class: script
脚本Build.groovy使用变量“${ENVS}”(就好像它是由Jenkins种子作业中的参数提供的),当实际在Jenkins中运行时,它会按预期工作…那么有什么方法可以在测试詹金斯上下文中设置这些“参数”或环境变量呢?
我如何在Build.groovy中使用ENVS变量的例子:
def envs = '-'
"${ENVS}".eachLine{
def env = it
envs+=env+'-'
}
envs.substring(0,envs.length()-1)
job('Build'+envs) {
...
}
JenkinsJobManagement
构造函数的第二个参数是环境变量映射,它将在 DSL 脚本中可用。
Map<String, String> envVars = [
FOO: 'BAR'
]
JobManagement jm = new JenkinsJobManagement(System.out, envVars, new File('.'))
问题内容: 我正在尝试设置脚本以增加Xcode项目的内部版本号。我进行了一次API调用以获取当前的内部版本号,然后我希望对其进行递增,然后将该新的版本号用作环境变量,以便Xcode插件可以使用它。 我安装了EnvInject插件,但是我不知道如何将var从我的shell脚本中获取到环境变量中。 这设置为我需要的值,但是如何将其分配给环境变量,以便以后在工作中访问它? 问题答案: 添加一个构建步骤以
问题内容: 我有一个bash脚本,用于设置环境变量并运行命令 现在,我想使用python代替bash,因为我想计算传递给命令的一些参数。 我试过了 和 其次是 但由于未设置LD_LIBRARY_PATH,因此程序总是放弃。 我怎样才能解决这个问题? 感谢帮助! (如果我在调用python脚本之前导出LD_LIBRARY_PATH,则一切正常,但我希望python确定路径并将环境变量设置为正确的值)
问题内容: 我有一个脚本来设置交叉编译所需的所有变量。这只是其中的一部分: 如果这样做,所有环境变量都将导入到当前的Shell会话中,并且可以编译我的示例。 是否可以在cmake中导入这些变量?如果是,怎么办? 更多细节: 我正在使用ELDK v 5.4,它的安装脚本生成一个脚本,该脚本设置所有环境变量 我找到了本教程,该教程说明了如何手动设置交叉编译,但没有说明如何使用脚本来设置所有内容 如果我
问题内容: 在我的项目文件夹中,创建了venv文件夹。 当我在VS Code中运行命令时,我的venv文件夹未显示。我像这里建议的那样上了一层,但是VS Code没有看到我的虚拟解释器。 我错过了什么? 问题答案: PS: 我已经使用vs代码已有一段时间了,发现了另一种在vs代码中显示虚拟环境的方法。 通过命令提示符转到上级文件夹。 键入并回车。[为我在Windows和Linux上工作。] 这也应
自己用django搭了一个网站,用subprocess调用了相同目录下的一个python文件, 调用的是一个GAN模型,views.py规定如下 服务器正常启动。 django编写的整个服务器调用的是pycharm创建的虚拟环境,但是调用单个脚本时调用默认运行环境,求教如何解决 试过向views.py和settings.py添加代码,并且已经注释掉了
Yii 2 官方兼容 Codeception 测试框架, 你可以创建以下类型的测试: 单元测试 - 验证一个独立的代码单元是否按照期望的方式运行; 功能测试 - 在浏览器模拟器中以用户视角来验证期望的场景是否发生 验收测试 - 在真实的浏览器中以用户视角验证期望的场景是否发生。 Yii 为包括 yii2-basic 和 yii2-advanced 在内的应用模板脚手架提供全部三种类型的即用测试套件