Last modified: 2013-06-26 08:35:30 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T52022, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 50022 - Jenkins: Provide build status images
Jenkins: Provide build status images
Status: RESOLVED FIXED
Product: Wikimedia
Classification: Unclassified
Continuous integration (Other open bugs)
wmf-deployment
All All
: Unprioritized normal (vote)
: ---
Assigned To: Nobody - You can work on this!
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-06-22 14:54 UTC by Jeroen De Dauw
Modified: 2013-06-26 08:35 UTC (History)
3 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Jeroen De Dauw 2013-06-22 14:54:35 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.
Comment 1 Krinkle 2013-06-23 11:19:28 UTC
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.
Comment 2 Krinkle 2013-06-23 11:28:29 UTC
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.
Comment 3 Antoine "hashar" Musso (WMF) 2013-06-23 18:27:00 UTC
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.
Comment 4 Antoine "hashar" Musso (WMF) 2013-06-26 08:35:30 UTC
I have installed the plugin and restarted Jenkins. Please try it out, if it does not work simply reopen this bug :)

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links