我正在尝试通过Jenkins Pipeline转换Dotnet 3.0测试项目的appsettings.json文件。 jenkins管道(取决于代理)将在设置文件中传递一个我想更改的特定IP地址,以便在构建和部署应用程序时使用新的IP地址。
Jenkinsfile
pipeline {
agent any
parameters {
string(name: 'SERVER_ADDRESS', defaultValue: '127.0.0.1', description: 'IP Address of Server');
}
stages {
stage('Change Appsettings') {
steps {
echo "Address is ${params.SERVER_ADDRESS}"
sed -i '/ServerGateway/c\ \"ServerGateway\": \"'+${params.SERVER_ADDRESS}+'\",' TestWebapi/appsettings.json
}
}
}
}
Appsettings.json
{
"ConnectionStrings": {
"ServerGateway": "127.0.0.1"
}
}
我真的不知道有什么更好的方法,也许有一个插件,但是我所知道的是我可以使用sed。
任何更好,更清洁的解决方案都值得赞赏。
答案 0 :(得分:0)
据我所知,您想修改ServerGateway的值 在 AppSettings.json 中。您可以这样做。
import groovy.json.JsonSlurper
def json = new JsonSlurper()
appSettings = json.parse(new File("path_to_AppSettings.json"))
然后分配您要使用的新值
appSettings['ConnectionStrings'].ServerGateway = Your New Value
println(appSettings['ConnectionStrings'].ServerGateway) // will have your new value stored.
import groovy.json.JsonSlurper
def cfg = ""
def storeNewValue(serverAdress) {
def json = new JsonSlurper()
appSettings = json.parse(new File("TestWebapi/appsettings.json"))
appSettings['ConnectionStrings'].ServerGateway = serverAdress
cfg = appSettings
//return appSettings['ConnectionStrings'].ServerGateway
}
pipeline {
agent any
parameters {
string(name: 'SERVER_ADDRESS', defaultValue: '127.0.0.1', description: 'IP Address of Server');
}
stages {
stage('Change Appsettings') {
steps {
echo "Address is ${params.SERVER_ADDRESS}"
storeNewValue(params.SERVER_ADDRESS)
}
}
}
}
此后,您可以使用cfg
答案 1 :(得分:0)
使用环境变量。
环境变量将覆盖appsettings.json
中指定的配置值,并且是在诸如Jenkins之类的CI环境中配置设置的最佳方法。如果您使用的是CreateDefaultBuilder(args)
,或者您使用的可能是Configuration.AddEnvironmentVariables
,它们都会这样做。
在当前情况下,您尝试覆盖以下设置:
{
"ConnectionStrings": {
"ServerGateway": "127.0.0.1"
}
}
您可以通过设置以下环境变量来做到这一点:ConnectionStrings:ServerGateway=connectionstring...
如果您的环境不支持冒号(:),可以用双下划线代替ConnectionStrings__ServerGateway=connectionstring...
。
您可以获取有关此方法from MSDN
的更多信息