Cha*_*adi 5 jenkins jenkins-pipeline
考虑一个詹金斯管道有两个阶段,A阶段则B阶段。
在阶段 B 中,是否可以针对某些特定文本解析阶段 A 的日志?
用于tee将输出拆分为 stdout 和文件。接下来解析文件中的文本。
STAGE_A_LOG_FILE = 'stage_a.log'
pipeline {
agent any
stages {
stage('Stage A') {
steps {
script {
// tee log into file
tee(STAGE_A_LOG_FILE) {
echo 'print some Stage_A log content ...'
}
}
}
}
stage('Stage B') {
steps {
script {
// search log file for 'Stage_A'
regex = java.util.regex.Pattern.compile('some (Stage_A) log')
matcher = regex.matcher(readFile(STAGE_A_LOG_FILE))
if (matcher.find()) {
echo "found: ${matcher.group(1)}"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
管道输出:
print some Stage_A log content ...
found: Stage_A
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)
7月28日起有更新!
正如这个答案中提到的,从Pipeline: Nodes and Processes 2.4 版本开始,您可以使用:
def out = sh script: 'command', returnStdout: true
Run Code Online (Sandbox Code Playgroud)
至少它比输出到文件然后读取文件要简单和干净得多。
| 归档时间: |
|
| 查看次数: |
7249 次 |
| 最近记录: |