从管道中的git提交消息中删除特殊字符



我正在编写jenkins管道我需要获得提交消息,并从这些消息中删除文件名的非法符号

stages {
stage('Get_commit_msg') {
steps {
script {
git_commit_msg= sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
}
}
}
stage ('3 - Database backup') {
steps {
script {
sshPublisher(
continueOnError: false, failOnError: true,
publishers: [
sshPublisherDesc(
configName: "${env.SSH_CONFIG_NAME}",
verbose: true,
transfers: [
sshTransfer(
sourceFiles: "",
removePrefix: "",
remoteDirectory: "",
execTimeout: "1200000",
execCommand:
"""
sudo mysqldump -u ${env.DATABASE_USER} ${env.DATABASE_NAME} --result-file=before_${git_commit_msg}_${env.DATE}.sql
"""
)
]
)
]
)
}
}
}
}

我有一个错误

bash:-c:第1行:意外令牌(' bash: -c: line 1:附近的语法错误sudo mysqldump-u根时间表--结果文件=before_Th(is(i#s t$e%st m^&e{}[]ss!年龄_$(日期'+%F'(.sql'SSH:EXEC:在401毫秒后完成

如果我使用

steps {
script {
sh "git_commit_msg=echo $git_commit_msg | tr -d '[:cntrl:]'"
}
}
}```
get error
/var/jenkins_home/workspace/pipeline@tmp/durable-aded948a/script.sh: line 1: syntax error: unexpected "("
please help

tr可以帮助您用占位符替换所有非字母数字字符:

git_commit_msg = sh(
script: 'git log -1 --pretty=%B ${GIT_COMMIT} | tr -c "[[:alnum:]]" @', 
returnStdout: true
).trim()

您可以根据需要进行调整:

TR(1(名称tr-翻译或删除字符概要tr[选项]。。。SET1[SET2]说明翻译、压缩和/或删除标准输入中的字符,写入标准输出。-c、 -c,--补码使用SET1的补码。。。[:铝:]所有字母和数字…

最新更新