batch-file - 在詹金斯管道中使用配置文件
问题描述
我有一个 Jenkins 管道作业,它是参数化的。它将接受一个字符串输入并将其传递给一个 bat 脚本。
输入:https ://jazz-test3.com/web/projects/ABC
我想包含一个配置文件,它应该放在一个位置(可能在本地的 Jenkins 机器中,或者最好的选择是什么?)。
示例配置文件:server_config.txt
收到用户输入后,作业应访问此文件并检查输入链接中的服务器是否存在于配置文件中。 如果存在则调用 bat 脚本,如果不存在则抛出错误,服务器不受支持。
预期结果:
输入 1:https
://jazz-test3.com/web/projects/ABC 作业应该运行输入 2:https
://jazz-test4.com/web/projects/ABC 作业应该失败并显示错误消息
实现这一目标的最佳方法是什么?
我们可以直接从管道中执行此操作,还是需要单独的脚本来执行此操作?
感谢您的帮助!!
解决方案
Jenkins 支持通过config-file-provider插件存储在控制器上的配置文件。请参阅管理 Jenkins | Managed Files用于托管配置文件的集合。
您可以添加一个 ID 为“test-servers”的 JSON 配置文件,用于存储您的测试服务器配置:
{
"test1":"https://jazz-test-1.com",
"test2":"https://jazz-test-1.com"
}
然后作业管道将执行以下操作:
servers = [:]
stage("Setup") {
steps {
configFileProvider([fileId:'test-servers', variable:'test_servers_json']) {
script {
// Read the json data from the file.
echo "Loading configured servers from file '${test_servers_json}' ..."
servers = readJSON(file:test_servers_json)
}
}
}
}
stage('Test') {
steps {
script {
// Check if 'server' is supported.
if (!servers.containsKey(params.server)) {
error "Unsupported server"
}
build job:'...', parameters:[...]
}
}
}
推荐阅读
- excel - 如何使用 VBA 打开格式错误的 csv?
- rust - 实现一个没有动态分配和编译时断言的简单状态机
- python - Python如何将pyaudio字节转换为虚拟文件?
- c# - 如何在 Unity 3D 中使用 goto 属性?
- asp.net-core - VS2019无法使用控制器模板
- reactjs - 如何在 react.js 中使用模板组件?
- asp.net-core - 如何获取适用于 OpenIddict ClientCredential 授权类型的基本身份验证中的客户端密码?
- google-analytics - 用户对此配置文件没有足够的权限谷歌分析
- r - 从 R 闪亮的 sql 中保存数据时出错
- php - php如何使用2个数组创建自定义数组