java 如何使用jenkins pipeline脚本替换文件中的字符串

yrdbyhpb  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(627)

我试图编辑一个文件package.json,并试图使用Jenkins管道脚本替换其中的字符串(“版本:1”)。我已经写了下面的脚本,但它不工作。

def readContent = readFile './package.json'

updatedProp = readContent.replaceAll("version:.*","version:${env.ReleaseNumber}.${BUILD_NUMBER},")
 
writeFile file: './package.json', text: "${updatedProp}"

package.json文件包含以下内容。

{
    "name": "application",
    "version": "1.0.0"
}

我请求纠正我并帮助我构建代码。

des4xlb0

des4xlb01#

检查以下代码。

def data = readJSON file: 'package.json'
String val = "${ReleaseNumber}"
data['version'] = val
writeJSON file: 'package.json', json: data,  overwrite: true

使用prettyfy更新

您必须导入JsonOutput,因此在管道之前添加import groovy.json.JsonOutput

def data = readJSON file: 'package.json'
String val = "${ReleaseNumber}"
data['version'] = val
def formtted = JsonOutput.prettyPrint(JsonOutput.toJson(data))
writeFile file: 'package.json', text: formtted,  overwrite: true
rslzwgfq

rslzwgfq2#

*Jenkins*插件内容替换也可与如下正则表达式一起使用

contentReplace(
  configs: [
    fileContentReplaceConfig(
      configs: [
        fileContentReplaceItemConfig(
          search: '(Version=)([0-9]+\\.[0-9]+\\.[0-9]+)',
          replace: '$11.0.${BUILD_ID}',
          matchCount: 1,
          verbose: false,
        )
      ],
      fileEncoding: 'UTF-8',
       'versions.txt'
    )
  ]
)

相关问题