Gerrit@Libreoffice

Gerrit@Libreoffice

Gerrit @ LibreOffice David Ostrovsky 1 Gerrit User Summit, Mountain View, 2014 Outline Motivation to introduce Gerrit Decentralized CI Inrastructure Add Gerrit to CI Infrastructure Gerrit plugin API Gerrit Buildbot plugin 2 Gerrit User Summit, Mountain View, 2014 Introduction of Gerrit for LibreOffice: Motivation 3 Gerrit User Summit, Mountain View, 2014 Patches Lost in Space: the old workflow A patch is intended to: Be mailed to the dev-@mailinglist Being picked up by a developer with commit rights and be Checked for a valid license Reviewed for Goodness Applied, Build, Tested and Pushed Reported back to the mailing list that this is in now Reality: fdo#40946 4 Gerrit User Summit, Mountain View, 2014 http://upload.wikimedia.org/wikipedia/commons/7/71/US_Navy_100627-N-5319A-218_Sailors_and_Marines_leap_from_the_well_deck_of_the_amphibious_transport_dock_ship_USS_New_Orleans_%28LPD_18%29_after_participating_in_the_Crossing_the_L ine_ceremony.jpg 5 By US Navy and thus public domain Gerrit User Summit, Mountain View, 2014 Does it hurt? Duplication of work Frustration Scaring away newcomers Makes some kinds of work very hard or painful for everyone 6 Gerrit User Summit, Mountain View, 2014 How does Gerrit help? Automatic Patch Uploads Integration in a wide range of communication channels Human Review Bot Verification Thus: Find errors early and before they cause too much pain 8 Gerrit User Summit, Mountain View, 2014 Gerrit@LibreOffice Gerrit version: 2.8.3 one core project many other pojects (cpp unit, ...) 80 committers review workflow is optional on master review workflow is mandatory for release branches 9 Gerrit User Summit, Mountain View, 2014 LibreOffice CI Infrastructure 11 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure Independent tinderboxes that periodically check master and release branches Multiple checks for the same commits on the same platforms possible Build and configuration logic is located locally in tinbuild2 script Report results to tinderbox master per fire and forget Buildbot server presents results in a web page In failure case spam all committers from all changes since last successful build 12 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure Tinderbox_1 Tinderbox_2 Web page Buildbot Server Repository Tinderbox_... Tinderbox_n 13 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure 14 Gerrit User Summit, Mountain View, 2014 15 Gerrit User Summit, Mountain View, 2014 http://upload.wikimedia.org/wikipedia/commons/1/18/US_Navy_091212-N-3404S-106_Navy_defensive_end_Jabaree_Tuani_%28%5E98%29_and_nose_guard_Chase_Burge_%28%5E93%29_stop_Army_slot_back_Patrick_Mealy_%28%5E5%29_dur ing_the_first_quarter_of_the_110th_Army-Navy_college_football_game.jpg By US Navy and thus public domain Tinderboxes ... Tinderboxes have different speeds. Tinderboxes know nothing of each other. Tinderboxes cannot communicate or coordinate. The slowest and rarest tinderboxes (Windows) are the most valuable. 16 Gerrit User Summit, Mountain View, 2014 17 Gerrit User Summit, Mountain View, 2014 http://upload.wikimedia.org/wikipedia/commons/d/d3/Broken_window_large.jpg CC-BY-SA3 by Tomas Castelazo LibreOffice CI Infrastructure with Gerrit 18 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure with gerrit 1/3 Queue manager is needed to distribute build jobs between tinderboxes One patch set must be checked only once for each platform Tinbuild2 must be teached to talk to queue manager Results from all tinderboxes are gathered and combined result is reported back to gerrit A patch set is approved only when all check jobs were successful 19 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure with gerrit 2/3 Tinderbox_1 Tinderbox_2 Queue manager gerrit Tinderbox_... Tinderbox_n 20 Gerrit User Summit, Mountain View, 2014 Decentralized CI Infrastructure with gerrit 3/3 Reusing existing infrastructure Buildbot teached to talk to queue manager Different strategies for gerrit patch verification vs. master check Prefer gerrit verification Prefer master check Tinderbox_1 Tinderbox_2 Web page Tinderbox Master Repository Tinderbox_... Tinderbox_n gerrit Queue manager 21 Gerrit User Summit, Mountain View, 2014 Queue manager's feature set Consumption gerrit-stream events Communication API/protocol for tinderboxes Job scheduler Build log publication and visualization Queue pipeline visualization Documentation Nice to have: Gerrit UI integration/extension dedicated channel for patch set verifications during review process specific configuration can be selected to be checked, i. e. with-java 22 Gerrit User Summit, Mountain View, 2014 Gerrit Plugin Architecture 23 Gerrit User Summit, Mountain View, 2014 Gerrit Plugin Architecture Extension points for gerrit plugin: SSH commands under plugin's own namespace ssh gerrit plugin-name some-really-cool-command --foo bar baz Servlets under plugin's own namespace https://review.gerrit.net/plugins/plugin-name/page.html UiAction (since 2.8) JS API / Html fragments (since 2.9) 24 Gerrit User Summit, Mountain View, 2014 Gerrit Buildbot Plugin 25 Gerrit User Summit, Mountain View, 2014 Build Trigger strategies Patch set created event Positive review from member of specific group Manually The one actually used in LO set up 26 Gerrit User Summit, Mountain View, 2014 Buildbot plugin in a nutshell Schedule a build per SSH command or UI: ssh gerrit buildbot schedule --project core <sha1> Poll the queue per SSH command: ssh gerrit buildbot get --project core --platform linux Report result and publish log per SSH command: cat result.log.gz | ssh gerrit buildbot put --ticket 4711 --failed Show queue content per SSH command or UI: ssh gerrit buildbot show --project core 27 Gerrit User Summit, Mountain View, 2014 Gerrit Buildbot Plugin 28 Gerrit User Summit, Mountain View, 2014 Documentation: per SSH Documentation: per SSH ssh logerrit buildbot put --help buildbot put [--] [--failed (-f)] [--help (-h)] [--log (-l) -|LOG] [-- succeed (-s)] --ticket (-t) TICKET -- : end of options --failed (-f) : specify this option if job failed --help (-h) : display this help text --log (-l) -|LOG : url of the job log page or - for standard input --succeed (-s) : specify this option if job was successfull --ticket (-t) TICKET : ticket of the job 29 Gerrit User Summit, Mountain View, 2014 Documentation per web UI Documentation: web page 30 Gerrit User Summit, Mountain View, 2014 Using reviewer channel for patch set verification firehose Results are presented in gerrit's comment table Nice to have: Show CI verification status table on gerrit's change screen: don't mix human reviews and bot verifications 31 Gerrit User Summit, Mountain View, 2014 Dedicated communications channel for patch set verifications Talk later today to implement this as a core feature or as a plugin 32 Gerrit User Summit, Mountain View, 2014 Log file publication modes Buildbot publish mode: local directory / servlet Doesn't play nice with multi-master Jenkins publish mode: delegate publishing to Jenkins instance external–monitor–job 33 Gerrit User Summit, Mountain View, 2014 Buildbot publish mode: Local directory and servlet 34 Gerrit User Summit, Mountain View, 2014 Jenkins publish mode 1/2 Submit a job per RPC New SSH command contributed to Jenkins 35 Gerrit User Summit, Mountain View, 2014 Jenkins publish mode 2/2 36 Gerrit User Summit, Mountain View, 2014 Broken Buildbot/Jenkins bridge or why code review can be dangerous 37 Gerrit User Summit, Mountain View, 2014 Future development Persistence Presents results in own table on CS2 Allow platforms to be configurable Idle timeout Engaged time out 39 Gerrit User Summit, Mountain View, 2014 Questions ? All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy. 41 Gerrit User Summit, Mountain View, 2014.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    37 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us