Last modified: 2013-06-26 08:35:30 UTC
Assuming we do not yet have something like this, it'd be awesome if this Jenkins plugin could be installed: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin I want to be able to embed such a build status image on some website.
Installing that plugin won't be very useful because we use Jenkins pre-merge, not post-merge. The builds you see in Jenkins are for patch sets in Gerrit. The latest build of those jobs have no meaning in correlation to the state of a repository as those builds are just an arbitrary sequence of builds on proposed changes. The build status of our branches (incl. master) is always passing because you can't merge a change if it would result in the build failing. Thus we don't need a status badge because our workflow (unlike most typical projects with e.g. Travis-CI set up on GitHub) makes it impossible not to be passing because we force every change to be pushed for review first, and is only merged after it is Verified by a passing build[1]. [1] Unless someone with the appropriate user permissions bypasses Jenkins manually, which is frowned upon and would break Jenkins for every submitted patch set after that.
Note that due to the way we currently separate larger build steps into separate jobs, you'd need to display about a dozen status badges to have the complete picture (e.g. mediawiki-core-lint, mediawiki-core-jslint, mediawiki-core-phpunit-groupA, mediawiki-core-phpunit-groupB, mediawiki-core-databaseless etc.). If we do want to display this somewhere (for the unlikely event that someone bypassed Jenkins), we would need to have a post-merge job that runs on master only (so that it isn't affected by failing tests from proposed changes in Gerrit). The closest we have for that is the post-merge job for phpunit regressions: https://integration.wikimedia.org/ci/view/MediaWiki/job/mediawiki-core-regression-master/ This one only runs for master and only post-merge. Note though that this doesn't include phplint, jshint and qunit. Only phpunit.
As Timo said, this will only be useful for Jobs triggering only on merge events. In Zuul that is the 'postmerge' pipeline, its configuration is currently: Configured Pipeline Manager postmerge Events: <EventFilter types: change-merged> Projects: mediawiki/extensions/VisualEditor <Job mwext-VisualEditor-doc-publish> ^master$ operations/mediawiki-config <Job beta-mediawiki-config-update> ^master$ test/mediawiki <Job test-mediawiki-docgen> analytics/wikistats <Job analytics-wikistats> analytics/udp-filters <Job analytics-udp-filters> operations/puppet <Job operations-puppet-doc> analytics/webstatscollector <Job analytics-webstatscollector> analytics/libanon <Job analytics-libanon> mediawiki/extensions/Parsoid <Job parsoid-regressions> mediawiki/core <Job mediawiki-core-jslint> (?!REL1_19)^(\.jshint|.*\.(js|json)$) <Job mediawiki-core-lint> <Job mediawiki-core-jsduck-publish> ^(REL1_21|master)$^.*\.(js|json)$ <Job mediawiki-core-regression-master> ^master$ <Job mediawiki-core-regression-REL1_19> ^REL1_19$ <Job mediawiki-core-regression-REL1_20> ^REL1_20$ <Job mediawiki-core-regression-REL1_21> ^REL1_21 <Job mediawiki-core-regression-phpcs-HEAD> <Job mediawiki-core-doxygen-publish> mediawiki/extensions/Math <Job beta-recompile-math-texvc> integration/docroot <Job integration-docroot-deploy> ^master$ Some of those jobs are shared with over pipelines (such as mediawiki-core-lint) and are thus meaningless. The only candidates would be: mwext-VisualEditor-doc-publish beta-mediawiki-config-update beta-recompile-math-texvc test-mediawiki-docgen operations-puppet-doc parsoid-regressions mediawiki-core-regression-* integration-docroot-deploy If we wanted to do that for other repositories (such as mediawiki extensions), we will need to have JJB to create a new job and edit the Zuul template 'extensions-unittests' to have a postmerge pipeline. I need to restart Jenkins next week, so I will look at installing the plugin.
I have installed the plugin and restarted Jenkins. Please try it out, if it does not work simply reopen this bug :)