有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins运行持续集成构建。在每次提交之后,它确保在最终生成文档和发布包之前,所有内容都已编译,并执行单元和集成测试。
仍然存在无意中提交一些破坏构建的内容的风险。对于访问GitHub项目页面的用户来说,知道当前主程序处于该状态是很好的。
有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins运行持续集成构建。在每次提交之后,它确保在最终生成文档和发布包之前,所有内容都已编译,并执行单元和集成测试。
仍然存在无意中提交一些破坏构建的内容的风险。对于访问GitHub项目页面的用户来说,知道当前主程序处于该状态是很好的。
当前回答
这个插件应该可以工作:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
您应该能够将这样的徽章嵌入到README中。md文件:
其他回答
编辑:
我不再使用这种方法,请使用其他答案之一。
更新:对于我们的具体情况,我最终做了什么:(上面的答案很棒-谢谢!)
因为我们的构建服务器不在互联网上,我们有一个脚本来发布构建状态到github中的gh-pages分支。
开始构建戳记失败 构建结束,戳记成功 项目在主项目之后运行,以发布结果——>构建状态、API文档、测试报告和测试覆盖率。
GitHub缓存图像,因此我们创建了.htaccess文件,该文件指示构建状态图像有一个短的缓存超时。
把这个和build-status镜像放在一起:
ExpiresByType image/png "access plus 2 minutes"
下面是构建脚本。发布到gh-page的目标是'——publish.site.dry.run'
在少于400行的配置中,我们有:
编译检查 单元和集成测试 测试报告 代码覆盖率报告 API文档 发布到Github
。。这个脚本可以在Jenkins内部或外部运行,这样:
开发人员可以在提交之前运行这个脚本,从而减少了错误构建影响其他构建的可能性。 故障很容易在本地重现。
结果:
项目主页有构建状态,每次构建后都会更新,还有最新的API文档、测试结果和测试覆盖率。
我所做的很简单:
Install the Hudson Post Task Plugin Create a Personal Access Token here : https://github.com/settings/tokens Add a Post Task Plugin that always put success curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"success\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build has succeeded!\" }" Add a Post Task Plugin that will put failure if "marked build as failure" curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"failure\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build has failed!\" }" You can also add a call to pending at the beginning of tests curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"pending\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build is pending!\" }"
我按照亚历克斯的指示做了,而且成功了。
但是,对于GitHub企业,在将服务器添加到Jenkins时需要修改API URL。
例如,如果您的公司是creditcard.com,您的URL将是
https://github.creditcard.com/api/v3/
对于管道项目,你可以像这样使用post部分:
void setBuildStatus(String message, String state) {
step([
$class: "GitHubCommitStatusSetter",
reposSource: [$class: "ManuallyEnteredRepositorySource", url: "https://github.com/my-user/my-repo"],
contextSource: [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"],
errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]],
statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ]
]);
}
pipeline {
agent any
triggers {
githubPush()
}
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
post {
success {
setBuildStatus("Build succeeded", "SUCCESS");
}
failure {
setBuildStatus("Build failed", "FAILURE");
}
}
}
只需改变“https://github.com/my-user/my-repo”,以满足你的github回购。
参考资料:https://stackoverflow.com/a/47162309/4261333
还有这个插件,它会给你一个徽章的url,你可以在你的README中发布。Md,看起来像这样
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin