Managing build infrastructure of a Debian derivative

Similar documents
Open Build Service in Debian It is impressive how much time and resources a team can save

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Debian & Yocto: State of the Art

Building Debian-Based Products: Experiences in Collaboration

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

How we added software updates to AGL

Isar. Build Debian-Based Products with BitBake. Baurzhan Ismagulov. Embedded Linux Conference Europe Oct 11-13, 2016 Berlin, Germany

Building CircuitPython

Keeping up with LTS Linux Kernel Functional Testing on Devices

Flatpak and your distribution. Simon McVittie

dgit Use the Debian archive as a git remote Debconf 15, Heidelberg

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Laboratorio di Programmazione. Prof. Marco Bertini

Composer Best Practices Nils Private Packagist

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

CSC 2700: Scientific Computing

How to make your application into a Flatpak

Roles and Responsibilities of Maintainers

Contributing to Automotive Grade Linux and GENIVI Development Platform

February 2 nd Jean Parpaillon

Software configuration management

The Automotive Grade Linux Build Service. ALS Tokyo '14, Jan-Simon Möller

django simple pagination Documentation

Github/Git Primer. Tyler Hague

Configuration Management

contribution-guide.org Release

Overview. 1. Install git and create a Github account 2. What is git? 3. How does git work? 4. What is GitHub? 5. Quick example using git and GitHub

Python Project Documentation

OTC Tools Development and Release process. Igor Stoppa & Eduard Bartosh & JF Ding V May 2013

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Flatpak. Apps on the Linux desktop. Alexander Larsson Red Hat

LINUX KERNEL UPDATES FOR AUTOMOTIVE: LESSONS LEARNED

Django MFA Documentation

Getting Perl modules into Debian

Frédéric Crozat SUSE Linux Enterprise Release Manager

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

OpenEmbedded in the Real World

Git Branching for Agile Teams

Mike McQuaid INCLUDES 66 TECHNIQUES. Foreword by Scott Chacon MANNING

Using GitHub to Share with SparkFun a

Multi-Arch Layered Image Build System

Intro to Github. Jessica Young

Review Version Control Concepts

Crosstoolchains in Debian

Using Git to Manage Source RTL

Continuous integration & continuous delivery. COSC345 Software Engineering

The Old World. Have you ever had to collaborate on a project by

Seven Habits of Highly Effective Jenkins Users

The ultimate guide to software updates on embedded Linux devices

Ubuntu Development Primer

Git and Gerrit Workflows. Enforcing Manual & Automated Review

Creating a profile from Tizen:Common. Stéphane Desneux Senior Software Engineer Eurogiciel

Tools for Distributed, Open Source Systems Administration

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

git-flow Documentation

Birds of a Feather Session - OSS Vancouver Eystein Stenberg, Mender.io

Zoneminder Debian Installation Manual New. Releases >>>CLICK HERE<<<

FAQ Q: Where/in which branch do I create new code/modify existing code? A: Q: How do I commit new changes? A:

TDF Infra Overview. from developers' perspective

MOOSE-Based Application Development on GitLab

COSC345 Software Engineering. Version Control

Version Control System GIT

meta-raspberrypi Documentation

New Contributor Tutorial and Best Practices

SECTION 2: HW3 Setup.

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

The Embedded Linux Problem

Submitting your Work using GIT

96Boards Enablement for opensuse

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

Version Control for Fun and Profit

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Belle II - Git migration

FPLLL. Contributing. Martin R. Albrecht 2017/07/06

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Releasing and Testing Free Opensource Graphics Drivers: the case of Mesa3D

Building a reference IoT product with Zephyr. Ricardo Salveti Michael Scott Tyler Baker

GUIDE TO MAKE A REAL CONTRIBUTION TO AN OPEN SOURCE PROJECT 1. 1

Nobody expects the Finnish Inquisition

A Survivor's Guide to Contributing to the Linux Kernel

Embedded. Connected. Aware. SW Delivery Process. February Inforce Computing. Do NOT Copy/Distribute without prior written permission

Visualizing Git Workflows. A visual guide to 539 workflows

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Reducing the pain of Yocto development upgrades. Michael Brown NGM Firmware Lead Technologist Dell EMC Embedded Linux Conference 2017

Git for Subversion users

You Can t Move Forward Unless You Can Roll Back. By: Michael Black

Revision control. INF5750/ Lecture 2 (Part I)

SECTION 2: Loop Reasoning & HW3 Setup

Deb-o-Matic Documentation

Git Basi, workflow e concetti avanzati (pt2)

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

SFO17-315: OpenDataPlane Testing in Travis. Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro

USER GUIDE. MADCAP FLARE 2017 r3. Source Control: Git

SECTION 2: Loop Reasoning & HW3 Setup

Porting FreeBSD to AArch64

ci-management Release 1.0.0

ag.el Documentation Release 0.45 Wilfred Hughes

GIT TO DA REPO! VERSION CONTROL, GITLAB, AND ISU

Code Review for DevOps

Transcription:

Managing build infrastructure of a Debian derivative Andrej Shadura 4 February 2018

Presentation Outline Who am I Enter Apertis Build infrastructure Packaging workflows Image builds

Andrej Shadura contributing to Debian since 2007 Debian Developer since 2013 working for Collabora since 2015

Andrej Shadura contributing to Debian since 2007 Debian Developer since 2013 working for Collabora since 2015 doing packaging since 2010 never ran any real Debian infrastructure only used mini-dinstall to publish packages

Presentation Outline Who am I Enter Apertis Build infrastructure Packaging workflows Image builds

Apertis Debian derivative tailored for automotive needs originally developed for infotainment systems fit for a wide variety of electronic devices

Apertis code hosting code review tools package build services image generation services automated testing infrastructure

Apertis based mostly on Ubuntu takes several packages directly from Debian provides its own software packages, frameworks, APIs

Apertis systemd for application lifecycle tracking AppArmor for policy enforcement Wayland for graphics GStreamer for multimedia playback

Apertis + OSTree + Flatpak = Apertis app bundle format based on Flatpak original system updater used btrfs to ensure atomicity and enable recovery mode OSTree-based solution replaces an older btrfs-based updater

Apertis + OSTree + Flatpak = Drawbacks of the btrfs updater: significant maintenance effort bootloader doesn t support btrfs can t use on /boot requires initramfs directly manipulates btrfs volumes unsuitable for e.g. unprivileged containers testing is difficult btrfs itself has a lot of issues

Apertis + OSTree + Flatpak = OSTree: works with any filesystem stores multiple trees in the same repo no need for extra partitions for safe upgrades saves space less custom code works better with containers a full solution on its own, not just a building block

Why Ubuntu+Debian, not just Debian? the Universal operating system composed entirely of free software developed by a community of individuals

Why Ubuntu+Debian, not just Debian? stable moves too slowly, changes between releases are quite significant unstable breaks things a bit way too often until recently, releases had unpredictable timing, there wasn t an LTS release

Why Ubuntu+Debian, not just Debian? Advantages: large install base, so despite more frequent releases there s still a lot of testing Ubuntu is an upstream for AppArmor, on which we rely regularly timed releases and LTS ones too

Why Ubuntu+Debian, not just Debian? Downsides: being derivative of a derivative complicates upgrades/rebases we don t really need all patches Ubuntu applies (Mir, anyone?)

Presentation Outline Who am I Enter Apertis Build infrastructure Packaging workflows Image builds

Overview of the Apertis infrastructure

OBS Open Build Service builds packages in a fresh chroot every time all source packages are revision controlled provides fine-grained access control provides Subversion-style branching and merge review system For more information on OBS, please watch a talk by Andrew Lee at FOSDEM 2018: https://col.la/fosdem18obs

OBS: components split Component apertis:18.03:target apertis:18.03:development apertis:18.03:helper-libs apertis:18.03:hmi apertis:18.03:sdk apertis:18.03:snapshots Description Apertis target Apertis development Apertis helper libraries Apertis human machine interface packages Apertis SDK Apertis git snapshots Supported architechtures: amd64, armhf, arm64.

OBS: components split Component apertis:18.03:target apertis:18.03:development apertis:18.03:helper-libs apertis:18.03:hmi apertis:18.03:sdk apertis:18.03:snapshots Description Apertis target Apertis development Apertis helper libraries Apertis human machine interface packages Apertis SDK Apertis git snapshots Supported architechtures: amd64, armhf, arm64.

OBS: how the packages are published OBS maintains internal package repositories, usually one per project internal repositories aren t in APT format, so reprepro is used to make packages available to APT it easy to do full rebuilds using more than one repository per project: add one more repository per project, rebuild depends on the main repository, non-publishing

OBS: how the packages are published

Packaging workflows: Ubuntu/Debian packages packages with no changes are imported unchanged directly to OBS packages with minimal changes are maintained in OBS mostly custom DEP-3 patches applied on top of the sources from Ubuntu local changes get co1 version suffixes a fork of Ubuntu s Merge-o-Matic called Merge-our-Misc, is used to pull new updates from Ubuntu LTS select packages are kept in Git

Packaging workflows: Git Non-Apertis packages: DEP-14: upstream/{latest,$version} branches with the upstream project code apertis/{master,$distro} branches for Apertis packaging apertis/$version tags (eg. apertis/2.48.0-1ubuntu4co1) git-buildpackage and gbp-pq to manage patches.

Packaging workflows: Git Native Apertis packages: master branch contains the sources for the current development release packaging metadata is also kept in master, not on a separate branch $distro branches (for instance, 17.12) contain the sources for past distro releases $version tags for upstream source releases (eg. 0.1803.1) apertis/$version tags for packaging releases (eg. apertis/0.1803.1co1)

Packaging workflows: Git Apertis Jenkins instance: builds every new commit in a controlled environment if the build succeeds, the source package is submitted to OBS for a clean rebuild in the :snapshots component for commits tagged as releases, Jenkins creates merge requests for the main component (:target, :development etc).

Packaging workflows: Git build-snapshot script by Simon McVittie is used by Jenkins to build packages and create source packages to be uploaded to OBS new patches submitted for review at Phabricator get built on top of the branch they apply to

Image builds Jenkins Linaro image tools Image builds multi-stage process separation of hardware-dependent and hardware-independent components

Image builds Jenkins Image builds Linaro image tools debos! multi-stage process separation of hardware-dependent and hardware-independent components

Image builds ospack hwpack image target-mx6q target-armhf mx6q target-rpi development-armhf rpi development-mx6q development-rpi

Image builds ospack hwpack image target-mx6q target-armhf mx6q target-rpi development-armhf rpi development-mx6q development-rpi

debos: Debian OS builder - action: debootstrap suite: "stretch" components: - main mirror: https://deb.debian.org/debian variant: minbase merged-usr: true

debos: Debian OS builder {{- if eq $type "target" "development" "sdk" }} - action: apt description: "Target packages" packages: - apertis-target - apertis-hmi - libegl1-mesa-drivers {{- end -}}

debos: Debian OS builder # add firmware - action: overlay origin: firmware source: firmware-{{ $firmware_version }}/boot destination: /boot/firmware https://github.com/go-debos/debos/ Sjoerd Simons <sjoerd@collabora.com> Denis Pynkin <d4s@collabora.com>

Image builds build ospacks combine ospacks and h/w-specific packages and data into images generate sysroots for the SDK trigger tests on LAVA scan the package changelog and close bugs fixed in the packages

Image builds

Challenges MoM can handle simple package merges, fails on conflicts Git workflows help, but you can t put a whole distro in Git removing old and obsolete packages OBS isn t sbuild, have to deal with occasional FTBFS OBS ignores Essential, needs manual overrides

Future plans use GitLab for Git hosting focus shift to become a common platform for automotive systems, not just infotainment

Interested? See also https://apertis.org https://collabora.co.uk

Managing build infrastructure of a Debian derivative Thanks! Q & A