从当前工作空间中创建的 xml 文件中读取 jenkinsfile 中的数据
Read data in jenkinsfile from xml file created in current workspace
前段时间我尝试连接 jenkins 和 gerrit,并将 jenkins 的 cppcheck 输出作为评论发送到 gerrit:
- 我为 jenkins 和 gerrit 安装了适当的补丁(没关系,它可以工作)
- 在 jekinsfile 中,我尝试 运行 cppckeck 并将其输出保存到 xml 文件(有效)
问题出在这里,当我尝试读取 xml 文件时,我得到的信息是没有这样的文件。我看到该脚本有不同的根目录(我 groovy 我打印了目录)。我认为我的实验性 jenkinsfile 的代码解释了问题:
pipeline {
agent any
stages {
stage('Example') {
steps {
gerritReview labels: [Verified: 0]
sh 'pwd'
sh 'cppcheck --enable=all --inconclusive --xml --xml-version=2 *.c* 2> cppcheck.xml'
script {
def parser = new XmlParser()
def doc = parser.parse("cppcheck.xml"); // No xml file here because script {}
// is run in different place
}
}
}
post {
always {
gerritReview score: 1
step([$class: 'CppcheckPublisher', pattern: 'cppcheck.xml', ignoreBlankFiles: false, treshold: "0"])
}
} }
如何加载这个文件。或者我做的全错了?(我的意思是将 gerrit 与 jenkins 集成,目的是 运行 cppcheck 和 cpplint 并在 gerrit 中显示结果)。
如果文件在你的仓库中,你需要先检查仓库
https://www.jenkins.io/doc/pipeline/steps/workflow-scm-step/
pipeline {
agent any
stages {
stage('Example') {
steps {
checkout scm // ADD THIS LINE
gerritReview labels: [Verified: 0]
sh 'pwd'
sh 'cppcheck --enable=all --inconclusive --xml --xml-version=2 *.c* 2> cppcheck.xml'
script {
def parser = new XmlParser()
def doc = parser.parse("cppcheck.xml");
}
}
}
post {
always {
gerritReview score: 1
step([$class: 'CppcheckPublisher', pattern: 'cppcheck.xml', ignoreBlankFiles: false, treshold: "0"])
}
}
}
前段时间我尝试连接 jenkins 和 gerrit,并将 jenkins 的 cppcheck 输出作为评论发送到 gerrit:
- 我为 jenkins 和 gerrit 安装了适当的补丁(没关系,它可以工作)
- 在 jekinsfile 中,我尝试 运行 cppckeck 并将其输出保存到 xml 文件(有效)
问题出在这里,当我尝试读取 xml 文件时,我得到的信息是没有这样的文件。我看到该脚本有不同的根目录(我 groovy 我打印了目录)。我认为我的实验性 jenkinsfile 的代码解释了问题:
pipeline {
agent any
stages {
stage('Example') {
steps {
gerritReview labels: [Verified: 0]
sh 'pwd'
sh 'cppcheck --enable=all --inconclusive --xml --xml-version=2 *.c* 2> cppcheck.xml'
script {
def parser = new XmlParser()
def doc = parser.parse("cppcheck.xml"); // No xml file here because script {}
// is run in different place
}
}
}
post {
always {
gerritReview score: 1
step([$class: 'CppcheckPublisher', pattern: 'cppcheck.xml', ignoreBlankFiles: false, treshold: "0"])
}
} }
如何加载这个文件。或者我做的全错了?(我的意思是将 gerrit 与 jenkins 集成,目的是 运行 cppcheck 和 cpplint 并在 gerrit 中显示结果)。
如果文件在你的仓库中,你需要先检查仓库 https://www.jenkins.io/doc/pipeline/steps/workflow-scm-step/
pipeline {
agent any
stages {
stage('Example') {
steps {
checkout scm // ADD THIS LINE
gerritReview labels: [Verified: 0]
sh 'pwd'
sh 'cppcheck --enable=all --inconclusive --xml --xml-version=2 *.c* 2> cppcheck.xml'
script {
def parser = new XmlParser()
def doc = parser.parse("cppcheck.xml");
}
}
}
post {
always {
gerritReview score: 1
step([$class: 'CppcheckPublisher', pattern: 'cppcheck.xml', ignoreBlankFiles: false, treshold: "0"])
}
}
}