Upgrade to Pro — share decks privately, control downloads, hide ads and more …

YaST: from the repository to the distributions

YaST: from the repository to the distributions

In this talk we will briefly explore all the mechanisms and workflows used by the YaST developers in order to share as much code as possible between all the SUSE and openSUSE distributions, while ensuring the quality of all the different YaST modules.

Learn how Rake, unit tests, Github, Jenkins, Travis, OBS and even Docker are used to deliver the developer's work to the already released products (via maintenance updates), to the ones still to be released and to our rolling distribution Tumbleweed.

Ancor Gonzalez Sosa

May 27, 2017
Tweet

More Decks by Ancor Gonzalez Sosa

Other Decks in Programming

Transcript

  1. Ancor González Sosa YaST Team [email protected] YaST: from the repository

    to the distributions Continuous testing and delivery, the YaST way
  2. Developer → Github • Pull request (only sane code checked

    into the relevant branches) – Peer review – Automated checks with Travis • Unit tests + other quality checks: spell check, licenses, rubocop… • Travis: why? – Perfect integration with Github’s pull requests – Seamless integration with Coveralls, CodeClimate, Inch CI... • Travis: how? – Rake tasks in docker containers
  3. Github → Build Service • Code committed to devel project

    (automated tests run again) • From devel project submitted to Factory • Jenkins – Rake tasks to automate the above for every change – Just in case, extra check/submission once a day – In addition, AutoYaST integration tests – Bonus: trigger generation of Docker images for Travis
  4. Build Service → Tumbleweed • Factory submission goes through openQA

    • Pre-integration tests (staging projects) • Post-integration tests (full ISO) • Green openQA = binary released
  5. Continuous testing • http://yastgithubio.readthedocs.io/en/latest/how-to-write-tests • Unit tests on every pull

    request and package build • Pre-integration tests with openQA • AutoYaST integration tests continously run in Jenkins • Post-integration tests with openQA • Tests for the CLI with TAP (run during post-integration in openQA) • Manual QA and bugs catched by the user