在构建应用程序之前,如何在Jenkins中编辑文件?

时间:2018-10-20 17:48:39

标签: jenkins

当前在我的Jenkins管道脚本中,我有这个:

stage ('get_repo'){

checkout([$class: 'GitSCM', 
          branches: [[name: '*/master']], 
          doGenerateSubmoduleConfigurations: false, 
          extensions: [], 
          submoduleCfg: [], 
          userRemoteConfigs: [[credentialsId: 'git', url: 'git@bitbucket.org:myrepo/myrepo.git']]])

}
stage ('build'){
    bat "npm install @angular-devkit/build-angular"
    bat 'C:\\Users\\user1\AppData\\Roaming\\npm\\ng.cmd build --aot'
}
stage ('create artifact'){
 archiveArtifacts 'dist//**'
 }}}

我想实现的是这样:

  1. 存储库中有一个名为env.ts的文件,但它具有一些静态IP地址。静态IP地址仅适用于我们的分支机构之一。我希望能够在运行下一个阶段(即构建阶段)之前,编辑该env.ts文件以包含该构建的正确IP地址。我在Windows jenkins节点上运行它。文件内容如下:

export const environment = {   apiServer:“ http://1.1.1.1:80”,   生产:真实,   分页限制:10, };

我想将apiServer的值从1.1.1.1更改为2.2.2.2

  1. 文件内容更改后,我希望将文件重命名为environment.ts

我该如何实现?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

有很多方法可以实现您想要的。我看到您使用的是Windows,因此我会选择Powershell,它使此类操作变得容易。您可以设置正则表达式或简单地用2.2.2.2替换1.1.1.1。重命名文件也非常容易(Rename-Item cmdlet)。 jenkins管道也支持Powershell。

powershell脚本示例:

$path = "C:\env.ts"
$content = Get-Content -Path $path
$content -replace [regex]::escape("1.1.1.1"),"2.2.2.2" | Out-File $path
Rename-Item -Path $path -NewName "environment.ts"

Here,您有显示如何从Jenkins管道调用powershell代码的示例。

答案 1 :(得分:0)

如果您正在使用Jenkins,并且它在Windows机器上。您可以使用PowerShell更改文件内容并重命名

在此示例中,

(Get-Content C:\proj\Jenkins\workspace\QA\env.ts).replace('1.1.1.1', '2.2.2.2') | Set-Content C:\proj\Jenkins\workspace\QA\env.ts
Rename-Item -Path "C:\proj\Jenkins\workspace\QA\env.ts" -NewName "environment.ts"

谢谢, xyzcoder.github.io