KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf ·...

73
KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 1 / 73

Transcript of KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf ·...

Page 1: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

KaNaPiCo chcesz dziś zbudować?

Jacek Danecki && Kamil && Natalia

4 marca 2017

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 1 / 73

Page 2: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Agenda

Wstęp

Gdzie zainstalować?

Skąd pobrać?

Jak zbudować?

Jak testować?

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 2 / 73

Page 3: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Wstęp

5 lat KaNapi w 1 min.

”Source based” dystrybucje Linuksa?

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 3 / 73

Page 4: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

”Source based” dystrybucje Linuksa

Arch, KaOS, Chakra

Buildroot

Crux

Gentoo, Exherbo

Gobolinux

KaNaPi

LFS, BLFS, AryaLinux, Nutyx

Linuxbrew

NixOS, GuixSD

Open Embedded, Yocto

Pisilinux, Solus

Sorcerer, Lunar, Sorcemage

Void linux

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 4 / 73

Page 5: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Układ katalogów

FHS (Filesystem Hierarchy Standard)Arch, KaOS, Chakra, BuildrootCrux, Gentoo, Exherbo, LFS, BLFS, AryaLinux, NutyxOpen Embedded, Yocto, Pisilinux, SolusSorcerer, Lunar, Sorcemage, Void linux

Aplikacje w ”specjalnych” katalogachGobolinuxNixOS, GuixSDLinuxbrew

Bedrock

flatpak, appimage, 0install, snap, linstaller, limba, gclick2, cdepack,clickdocker

CoreOSRancherOS

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 5 / 73

Page 6: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Układ katalogów (cont.)

Slax01-core.sb 02-xorg.sb 03-kdeps.sb 04-kde.sb 05-kapps.sb 06-devel.sb07-ffox.sb 59-Polish.sb01-core.sb: Squashfs filesystem → loop deviceAUFShttps://www.slax.org/en/documentation.php

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 6 / 73

Page 7: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Gobolinux

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 7 / 73

Page 8: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

NixOS

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 8 / 73

Page 9: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

RancherOS

[root@rancher ~]# ps | grep docker1 root system-docker daemon --userland-proxy=false --restart=false \--storage-driver overlay --group root --graph /var/lib/system-docker \--host unix:///var/run/system-docker.sock --log-opt max-file=2 --log-opt \max-size=25m --config-file /etc/docker/system-docker.json --exec-root \/var/run/system-docker --pidfile /var/run/system-docker.pid

463 root {ros} docker-runc exec -- \ea06c5b9579d6367574454e1ccfda04a40dd5b4bb51957204648843311cbfe26 env \PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \HOSTNAME=rancher HOME=/ ros docker-init daemon --log-opt max-file=2 \--log-opt max-size=25m --group docker --host unix:///var/run/docker.sock \--storage-driver overlay

627 root dockerd --log-opt max-file=2 --log-opt max-size=25m --group docker \--host unix:///var/run/docker.sock --storage-driver overlay

645 root docker-containerd -l \unix:///var/run/docker/libcontainerd/docker-containerd.sock \--shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m \--state-dir /var/run/docker/libcontainerd/containerd \--runtime docker-runc

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 9 / 73

Page 10: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

RancherOS

[root@rancher ~]# docker infoContainers: 1Running: 0Paused: 0Stopped: 1Images: 1Server Version: 1.12.6Storage Driver: overlayBacking Filesystem: extfsLogging Driver: json-fileCgroup Driver: cgroupfsPlugins:Volume: localNetwork: bridge null host overlaySwarm: inactiveRuntimes: runcDefault Runtime: runcSecurity Options: seccompKernel Version: 4.9.9-rancherOperating System: RancherOS v0.8.0-rc11OSType: linux

Architecture: x86_64CPUs: 1Total Memory: 993.9 MiBName: rancherID: OLBF:7JGY:AWWZ:ELFF:URL2:UQWG:EKCS:H7QW:UQVV:DZZL:JB5K:DEBPDocker Root Dir: /var/lib/dockerDebug Mode (client): falseDebug Mode (server): falseRegistry: https://index.docker.io/v1/Insecure Registries:127.0.0.0/8

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 10 / 73

Page 11: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

KaNaPi

chroot na montowanym FS dla dockera

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 11 / 73

Page 12: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

KaNaPi - układ katalogów

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 12 / 73

Page 13: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

KaNaPi - overlayFS

/dev/sda2 on /kanapi_packages-old type ext4 (ro,noatime,commit=60,data=ordered)

overlay on /kanapi_build/kanapi_local/kanapi_packages/merged type overlay (rw,relatime,lowerdir=/kanapi_packages-old,upperdir=/kanapi_build/kanapi_local/kanapi_packages/upper,

overlay on /kanapi_build/kanapi_local/kanapi_0.9/merged type overlay (rw,relatime,lowerdir=/kanapi_packages-old/KANAPI_0.8/kanapi_0.8_rootfs,upperdir=/kanapi_build/kanapi_local/kanapi_0.9/upper,

/kanapi_0.8 -> /kanapi_build/kanapi_local/kanapi_0.9/merged/kanapi_0.9 -> kanapi_0.8/kanapi_packages -> /kanapi_build/kanapi_local/kanapi_packages/merged

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 13 / 73

Page 14: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

chroot/qemu

chrootdistroname (nutyx)distroname komenda (fedora lsb release -a)distroname-game komenda (arch64-game /bin/bash)distroname-start (void-start)dystrybucje: arch32, arch64, crux, debian, exherbo, fedora, gentoo,gobolinux, lunar mint, nutyx, opensuse, void

qemudistroname-qemudystrybucje: debian-64, fedora-32, gobolinux, guix, lunar, nixos-64,nutyx, pisilinux, rancher-os, slax, solus

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 14 / 73

Page 15: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Przykład: bash

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 15 / 73

Page 16: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

KaNaPi - dystrybucje dodatkowe

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 16 / 73

Page 17: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Źródła oprogramowania

Źródło Ilość pakietówgithub.com 52 000 000

sourceforge.net 419 240rubygems.org/gems 249 210

search.cpan.org 178 213pypi.python.org/pypi 99 044

launchpad.net 39 890kdeapps.com 6 277

osdn.net 6 157www.ctan.org 5 273

savannah.gnu.org/savannah.nongnu.org 3 783

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 17 / 73

Page 18: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Katalogi oprogramowania

http://directory.fsf.org/wiki/Main Page 15 931 pakietów

https://www.openhub.net/tags?names=linux 6 566 pakietów dlaLinuksa

https://www.apache.org/index.html#projects-list 300 projektów

https://fossies.org

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 18 / 73

Page 19: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Inne pakiety

https://libraries.io 2,145,475 pakietów

pm Język Ilość pakietów pm Język Ilość pakietówGo Go 629 000 Emacs Emacs Lisp 2 140

npm JavaScript 264 000 Pub Dart 1 910Packagist PHP 126 000 Cran R 1 810Rubygems Ruby 81 500 WordPress PHP 1 800

Maven java 48 500 Sublime Python 1 200Pypi Python 45 600 Carthage Swift 1 030

Bower Java Script 41 800 Dub D 960Clojars Clojure 10 100 PlatforIO C++ 827CPAN Perl 8 820 Julia Julia 758Meteor JavaScript 8 120 Haxelib Haxe 755Cargo Rust 6 910 Elm Elm 722

Hackage Haskell 5 110 Homebrew C 456Atom CoffeeScript 3 840

SwiftPM Swift 3 030Hex Elixir 2 750

razem 1 299 448, vim (5400)

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 19 / 73

Page 20: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

github.com - pakiety w wybranych językach

Język Ilość pakietówJavaScript 1 304 724

Java 1 089 660Ruby 729 556

Python 637 109PHP 544 431CSS 390 648C++ 340 126

C 304 889HTML 300 643

C# 272 306Go 58 490

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 20 / 73

Page 21: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Dystrybucje Linuksa

Źródło Ilość pakietów Źródło Ilość pakietówFedora 64 123 Soucemage 8 071Arch 64 000 Void Linux 7 769Mint 54 634 Pisilinux 6 000

Debian 43 000 Solus 5 478OpenSuse 30 900 LinuxBrew 5 400

Gentoo 19 500 GuixSD 4 900Gobolinux 12 000 Exherbo 4 500

NixOS 11 922 Crux 4 025

Lunar: 3 477

Nutyx: 1 500

KaNaPi: 1 000

www.freedesktop.org/software/appstream/docs

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 21 / 73

Page 22: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Ściąganie źródeł

nazwa pakietu, URL formatGobolinux: Recipe

url="http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz"

Arch: PKGBUILD

pkgname=bash_basever=4.4source=(https://ftp.gnu.org/gnu/bash/bash-$_basever.tar.gz{,.sig}

KaNaPi: bash.kanapi

PACKAGE_NAME=bashVER=4.4URL="GNU"EXT=tar.gz

Exherbo: bash.exlib

%MY_PNV=${PNV%_p*}%DOWNLOADS+=" ftp://ftp.cwru.edu/pub/${PN}/${MY_PNV}.tar.gz"

mirrors

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 22 / 73

Page 23: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Ściąganie źródeł

Lunar: DETAILS

MODULE=bashVERSION=4.4SOURCE=$MODULE-$VERSION.tar.gzSOURCE_URL[0]=$GNU_URL/$MODULESOURCE_URL[1]=ftp://ftp.gnu.org/pub/gnu/$MODULESOURCE_URL[2]=ftp://ftp.cwru.edu/pub/$MODULE

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 23 / 73

Page 24: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Przygotowanie źródeł

proxy, cache, mount -o bind, nfs

różne formaty kompresji, file, bsdtar/tar -xa/busybox tar

rozpakowanie we wspólnym katalogu lub w katalogu tymczasowym,overlayfs/aufs

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 24 / 73

Page 25: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Konfiguracja

programy: autotools, cmake, setup.py, scons, Makefile.PL, pkg-config,ruby, waf, xmkmfkonfiguracja w katalogu wyników lub w katalogu ze źródłami, chroot,overlays/aufsprogramy do konfigurowania i budowania

Dystrybucja program JęzykArch makepkg bash

Void linux xbps-src bashGentoo emerge Python

Gobolinux Compile bashSourcemage cast bash

Lunar lin, lvu bashCrux pkgmk, prt-get bash, c++

Nutyx pkgmk, cards c++Exherbo cave c++KaNaPi pkg kanapi, make bash, Makefile’s

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 25 / 73

Page 26: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Skrypty do budowania pakietów

skrypty w dystrybucjach: bash, python, yaml, ruby, guile

Dystrybucja przygotowanie konfiguracja budowanie instalacjaKaNaPi pkg prepare() pkg configure() pkg build() pkg install()

Arch prepare() build () build() package()Gentoo src prepare() src configure() src compile()

Gobolinux configure options recipe typeVoid Linux pre configure

Exherbo src prepare src configure src compileCrux build() build() build() build()

Nutyx build() build() build() build()

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 26 / 73

Page 27: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Budowanie i instalacja

programy do budowania: waf, rebar, qmake, gem, ninja, make, cmake

ccache, distcc

programy do instalacji: make, install.py, gem, install

Dystrybucja Budowanie Instalacja Budowanie InstalacjaCrux pkgmk -if -d pkgadd pakiet KPAK IPAK

Nutyx pkgmk pkgadd pakiet KPAK IPAKLunar lin -c pakiet KPAK

SourceMage cast -c pakiet /usr/src/pakietVoid ./xbps-src pkg pakiet xbps-install pakiet chroot IPAK

GoboLinux Compile Pakiet InstallPackage Pakiet KPAK + UFS IPAKArch makepkg pacman -U pakiet KPAK IPAK

KPAK - katalog programuIPAK - instalacja z pakietuUFS - unionFS, fuse, overlayFS

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 27 / 73

Page 28: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Budowanie i instalacja w KaNaPi

budowanie w katalogu programupkg kanapi nazwa.kanapi buildpkg kanapi nazwa.kanapi install

instalowanie w systemie lub katalogu domowymbudowanie z zależnościami

make pakiet ACTION=install./build nazwa pakietu./install nazwa pakietu./rebuild install nazwa pakietu./reinstall nazwa pakietu

programy do zarządzania pakietami: pkg, pkg dev

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 28 / 73

Page 29: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Budowanie KaNaPi

w aktualnym systemie → pełny systemkompilatory, rootfs, BBS (36 pakietów)pozostałe pakiety

w aktualnym systemie → wersja minimumkompilatory, rootfs, FBS (6 pakietów)SBS (bootstrap, stage3)

składany z: kompilatory + rootfs + FBS

CI - onlineBBSapps txt, devel, sound

chroot z SBSBBS + pozostałe pakiety

JenkinsFBS, SBS, BBSpozostałe pakietyminimalne testy SBS

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 29 / 73

Page 30: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Jenkins dla KaNaPi

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 30 / 73

Page 31: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Wybrana maszyna w Jenkinsie

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 31 / 73

Page 32: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Maszyny w Jenkinsie

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 32 / 73

Page 33: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

CI dla KaNaPi

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 33 / 73

Page 34: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Jenkins pipeline

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 34 / 73

Page 35: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Jenkins pipeline skrypt

node (’zbook’) {stage(’build BBS’) {sh ’’’#!/bin/bashcd /kanapi_build/kanapimake bbs’’’

}stage(’build ALL’) {sh ’’’#!/bin/bashcd /kanapi_build/kanapimake all’’’

}stage(’cleanup’) {sh ’’’#!/bin/bashcd /kanapi_build/kanapi./configure umount-src && ./configure umount-ccache’’’

}}

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 35 / 73

Page 36: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Jenkins pipeline steps

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 36 / 73

Page 37: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Integracja z github.com

github.com/integrations

IDE

code review

code coverage

tłumaczenia

dokumentacja

komunikacja

CI

deployment

zarządzanie projektem

monitorowanie jakości projektu

zarządzanie błędami

CLI/GUI

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 37 / 73

Page 38: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Github dla KaNaPi

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 38 / 73

Page 39: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Serwisy CI dla KaNapi

travis.orgbudowanie równoległe

codeship.combudowanie szeregowedostęp ssh100 buildów/miesiąc

circleci.combudowanie równoległedostęp ssh

app.shippable.combudowanie szeregowe

semaphoreci.combudowanie szeregowedostęp ssh

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 39 / 73

Page 40: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Konfiguracja systemów CI dla KaNapi

CI mem disk cpu’s user gcc OS czas [min]travis 62GB 14GB 32 travis 4.6.3 ubuntu 12.04.5 25

codeship 16GB 30GB 36 rof 4.8.4 ubuntu 14.04.5 30circleci 62GB 609GB 32 ubuntu 4.8.4 ubuntu 14.04.4 43

shippable 4GB 39GB 2 root 5.3.0 ubuntu 14.04.3 50semaphoreci 32GB 10GB 8 runner 4.8.4 ubuntu 14.04.2 23-34

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 40 / 73

Page 41: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Travis

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 41 / 73

Page 42: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Travis builds

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 42 / 73

Page 43: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Travis build log

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 43 / 73

Page 44: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Codeship

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 44 / 73

Page 45: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Codeship build

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 45 / 73

Page 46: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Codeship build log

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 46 / 73

Page 47: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Circle CI

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 47 / 73

Page 48: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Circle CI build

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 48 / 73

Page 49: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Circle CI build log

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 49 / 73

Page 50: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Shippable

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 50 / 73

Page 51: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Shippable builds

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 51 / 73

Page 52: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Shippable build

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 52 / 73

Page 53: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Shippable build log

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 53 / 73

Page 54: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Semaphore

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 54 / 73

Page 55: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Semaphore builds

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 55 / 73

Page 56: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Semaphore build

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 56 / 73

Page 57: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Semaphore build log

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 57 / 73

Page 58: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Konfiguracja CI

Travis → .travis.yml

language: ccompiler:- gcc

Codeshipkonfiguracja przez www

CircleCIcircle.ymlkonfiguracja przez www

Shippable → shippable.yml

language: ccompiler:- gcc

SemaphoreCIkonfiguracja przez www

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 58 / 73

Page 59: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Testowanie

testy instalacyjne w KaNaPilinker test dla programów i bibliotek dynamicznychinterpreter skryptów

instalacja w ”piaskownicy” w Gobolinux, Void Linuxqemu tests w KaNaPi

prepare kanapi image arm, prepare kanapi image i686,prepare kanapi image x86 64qemu-tests-arm, qemu-tests-i686, qemu-tests-arm-console,qemu-tests-x86 64

https://www.opengroup.org/testing/linux-testLSB (FHS) testsposix conformance testspthread conformance testsLinux system calls tests

Fuego - nakładka na Jenkinsa

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 59 / 73

Page 60: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Testowanie (cont.)

Phoronix test suite

Linux Test Projectkomendykernelsiećopen posix testsuite: conformance, functional, stressrealtime

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 60 / 73

Page 61: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Qemu tests

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 61 / 73

Page 62: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Fuego

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 62 / 73

Page 63: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Fuego - wszystkie testy

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 63 / 73

Page 64: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Fuego - functional tests

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 64 / 73

Page 65: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Fuego - benchmarks

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 65 / 73

Page 66: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Fuego - benchmarks - wyniki

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 66 / 73

Page 67: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoronix test suite

uruchomienie testu: phoronix-test-suite benchmark smallpt

webui: phoronix-test-suite start-phoromatic-server

dodanie maszyny: phoronix-test-suite phoromatic.connectip:port/token

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 67 / 73

Page 68: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoromatic

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 68 / 73

Page 69: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoromatic - maszyna testowa

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 69 / 73

Page 70: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoromatic - maszyna testowa - szczegóły

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 70 / 73

Page 71: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoromatic - przygotowanie testu

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 71 / 73

Page 72: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Phoromatic - wyniki

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 72 / 73

Page 73: KaNaPi - Co chcesz dzis zbudowac?zimowisko.linux.gda.pl › 2017 › papers › kanapi.pdf · KaNaPi Co chcesz dziś zbudować? Jacek Danecki && Kamil && Natalia 4 marca 2017 Jacek

Dziękuję

Jacek Danecki && Kamil && Natalia KaNaPi 4 marca 2017 73 / 73