jenkins pipeline执行cmd svn status,无变化删除本次build
时间: 2023-08-19 17:03:52 浏览: 47
可以使用以下代码段在 Jenkins pipeline 中执行 `svn status` 命令,并在没有变化时删除构建:
```groovy
stage('Check SVN status') {
steps {
script {
def status = sh(
returnStdout: true,
script: 'svn status'
).trim()
if (status.isEmpty()) {
currentBuild.result = 'ABORTED'
error('No changes found. Build has been aborted.')
}
}
}
}
```
在该代码段中,我们使用 `sh` 命令执行 `svn status` 命令,并将输出保存在 `status` 变量中。如果 `status` 变量为空,说明没有变化,我们将当前构建的结果设置为 `ABORTED` 并抛出一个错误。这将导致 Jenkins 停止构建,并将其标记为“已取消”。
请注意,在这里,我们使用 `ABORTED` 构建结果将其标记为“已取消”,而不是使用 `SUCCESS` 或 `FAILURE`。这是因为取消构建是一种“正常”的操作,不应被认为是构建失败。
相关问题
jenkins pipeline执行svn status,无变化删除本次build
可以在Jenkins Pipeline中使用sh命令执行svn status,然后使用if语句检查输出结果是否为空。如果输出结果为空,则可以使用deleteDir()函数删除本次build的工作目录。具体代码如下:
```
stage('Check SVN status') {
steps {
sh 'svn status > svn_status.txt'
script {
def svnStatus = readFile('svn_status.txt')
if (svnStatus.trim().isEmpty()) {
deleteDir()
}
}
}
}
```
这段代码会在Pipeline中添加一个名为"Check SVN status"的阶段,其中使用sh命令执行svn status并将输出结果存储到svn_status.txt文件中。然后使用script块读取文件内容,使用trim()函数删除空白字符,并使用isEmpty()函数检查是否为空。如果为空,则使用deleteDir()函数删除本次build的工作目录。注意,deleteDir()函数会删除整个工作目录,包括所有生成的文件和子目录,所以请谨慎使用。
jenkins pipeline检查checkout svn后本地文件是否变化,不变化删除本次build
您可以使用Jenkins Pipeline的`changeset`函数来检查是否有本地文件的更改。如果没有更改,可以使用`currentBuild.result`将当前构建设置为ABORTED并在构建完成后删除它。
以下是一个简单的示例:
```groovy
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout([$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[credentialsId: 'svn-creds',
depthOption: 'infinity',
ignoreExternalsOption: true,
local: '.',
remote: 'svn://example.com/repo']],
workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage('Build') {
steps {
// your build steps here
}
}
}
post {
always {
script {
def changes = currentBuild.changeSets.findAll { it.kind == 'svn' }
if (changes.isEmpty()) {
currentBuild.result = 'ABORTED'
deleteDir()
}
}
}
}
}
```
在上面的示例中,`post`部分包含了检查本地文件更改的逻辑。如果没有更改,将构建结果设置为ABORTED,然后删除整个工作目录。