Subtitles for LinuxDays 2016 - Building a free software based development environment - F. Preinstorfer

14   0   0  
  Pause sub
så takk for at du kom til min
Presentasjonen jeg kommer til å snakke om
bygge en fri programvareutvikling
miljø eller rørledning for en liten
Selskapet utgangspunktet det er noe av det vi
har vi bygget under siste tre
år ved vår bedrift
mitt navn er voksende planter tøffere jeg er en
systemer ingeniør ved en liten østerriksk
oppstart selskap og vi gjør laboratorium
testing av utstyr for treforedlings
industrien så i utgangspunktet vi bygge enheter
som vi selger til kunder og de som
kunder bruker den til å teste visse aspekter
av for eksempel papir så en test
ville være hvor mye vann kan et stykke
papir absorberer den type anordninger ingenting
spesielt fancy fra en teknologi punkt
perspektiv vi bruker stort sett c ++ så mest
av den myke å tredjedel av det som er skrevet i
c ++ så er det en Python 3 og
åpenbart glukose som du trenger
overalt ville i utgangspunktet lidenskap og
all 15
visste du før du ønsker å faktisk
snakke om rørledningen vil jeg gjerne
presentere noen av de krav som
vi hadde, og de er bare noen av dem
Jeg tror det er viktig å få
følelse av hva som kreves i det minste
for vår bruk tilfelle så en viktig
Kravet var å ha offline-støtte
vårt selskap hovedkontor ligger i
Østerrike på landsbygda, og det er
faktisk fint hvis du ser på vinduet
og dette kan du se grønt gress i
fjell og i utgangspunktet det er tilfelle
men det er ikke gunstig i tilfelle du ønsker
skikkelig internettforbindelse så vi har en
langsom internettforbindelse og heller
flick du vil, slik at vi bedre ikke stole
for mye på internett som ville være
det ville være bra for oss
en annen ting som vi kjenner fra fortiden
Det som er ganske gunstig å ikke
avhengig av noen enkelt utbygger maskin
et sted jeg er sikker på at de fleste av dere har
hørt
historiene eller har sett det med din
egne øyne at noen laptop noen maskin
i noen kontor fra noen utbygger er
faktisk det viktigste aspektet av
selskapet fordi uten dem
uten denne bærbare enkelte produkter kan
bygges hvor som helst
Jeg vet ikke om noen er slik at alle ting
sånn, men jeg har sett dem, og de er
ikke så flott å ha så vi bedre
forberede seg på det
en annen ting er det skal være lett å
bruke og lett å bruke midler vi skal bruke
verktøy og vi bør gi utviklere
verktøy som de er komfortable med
så hvis vi bruker får det ville være flott
hvis utvikleren kan samhandle med en
rørledning og organisere rørledningen eller
det meste av rørledningen ved hjelp av bare get
greit nok
og en annen ting er det skal være
forståelig jeg tror det er ganske
viktig for et miljø som inne
at brukerne kan forstå det de ikke gjør det
trenger å få få all evighet stor
detaljer om det, men du bør ta en titt
på det og de bør si ok jeg vet jeg
bygget denne pakken, og det gikk fra dette
maskin til denne maskinen denne maskinen, og
dette skjedde det ville være som ville
være greit nok
og som også har en forståelig
rørledning betyr at det er også en hackable ett
så det kan være kan enkelt endres og
den justeres etter behov jeg ønsker å gi
du en svært minimal oversikt over hva vi
ha
det er langt unna å være ferdig, men det
inneholder de viktigste aspektene som
er nødvendig for denne 20 minutters tale så
Jeg skal gi en kort introduksjon til
alle delene her og deretter jeg vil
gi deg noen brukstilfeller i orden
å få følelsen av hva som er
mulig slik at vi ønsker å starte på
nederst til venstre her hvor vi har en
utbygger laptop kan være noe som
Linux-maskin windows boks mac boks
Uansett er det ingen visst krav
på en slik maskin i utgangspunktet utviklerne
skal føle seg komfortabel
med å få sitt arbeid gjort så kanskje 90
kanskje kanskje max og noen versjonskontroll
system ville være ville være nok til å få
startet derfra vi vi besluttet å å
plukke få lap som vår som et oppbevaringssted
administrasjonsserver eller sosialisme versjon
kontrollsystem fordi vi bruker den
internt mye vi liker det, og vi
tror det er det er kommet for å bli, så vi lese
så vi skjønte det ville være flott om hvis vi
har noe som åpenbart støtter
får og gjør det også mulig for utviklere å bruke en
våpen til ansikt hvis de vil fordi
noen utviklere føler ikke at sparing
med med med en kommandolinje og kanskje
noen oppgaver er ganske lett å gjøre på en slik
et web-grensesnitt, så vi skjønte det ville
være en god runde ville være ville være en stor
verktøy her og vi er ganske fornøyd med
Valget faktisk tilbake da når vi
begynte det var det var litt ujevn, men
akkurat nå føles det føles ganske ganske
ganske god til å bruke fra det vi vi hodet
over til tank er her i den midterste
her valgte vi Jenkins fordi jeg var
vant til det og mike / prosess uansett
virker
ok, og det er fri programvare det er greit
bruker Jenkins noen ganger kan det være
Jenkins kan gi deg noen hodepine hvis
deg hvis du ikke bruker det som en mester bare
systemet slik at du hvis du ønsker å bruke Jenkins
du bedre kontrollere at du bruker bygge notater
og ikke bygge noe på Jenkins
la seg Jenkins til alle
orkestrering og alle de andre
rapportering og laging, og det ville
være det ville være nok, men gjøre
bygger på andre maskiner, og det er
hvor vi har flere bygge nesen rett
her regningen ting de bygger c ++
Prosjektet python prosjekter de kjører enhet
tester de gjør integrasjon test uansett
trengs
derfra hadde vi over til en bønn og en
påstand er at Debbie n versjon kompatibel
um repository server slik at vi bestemte oss for å
skipet vårt produkt som et sett av Debian
pakker og det er mest naturlig og 22
sende Debian-pakker i en og en
vanlig debian depotet og så du
trenger noen verktøy for å håndtere pakker og
noen av dem er tilgjengelig, og vi holder oss
med en bønn fordi vi tror eller i vår
oppleve det passer vår bruk case beste så
det er jeg tror det er skrevet og gå
moden jeg tror det, og det er ganske hendig
å bruke han har en masse funksjoner og jeg
tror du får det meste av boken faktisk
gjøres på den høyre side av fordampe
høyre side av det her du vi har en
kort den stiplede linjen som betyr noe
nettverk segregering, slik at vi har det meste av
av dette poplin i vårt interne nettverk
eller faktisk alle av det meste av det og på
den høyre side av det ytre
nettverket vi har noen eksterne speil
og det er i utgangspunktet motor X så motor
øks er servering av depotet for vår
kunder, og vi har flere forekomster
av av det her så ja jeg utelatt noen
av morsomme ting faktisk, og noen av
den nyttige ting for eksempel vi også
har en oversettelse server slik oversettere
kan faktisk oversette hele
programvare ved hjelp av en enkelt enkelt web
grensesnitt vi bruker et nettsted for det, men
det er det er faktisk fint det gir din
twitter bootstrap webgrensesnitt det er
ganske enkelt å bruke, men det er ikke så
viktig for for denne talen, men bare for å
gi deg en idé om at dette virkelig er
de viktigste komponentene i av
poplin så jeg ønsker å komme i gang med en
use case og denne bruken tilfellet er å bygge
og slipp
en stabil stykke programvare så vi antar
at utbygger her på sin laptop
har en enkelt depot, og det inneholder
en stabil utgave av programvaren, og det også
har alle debian pakken informasjon
i det slik at dette arkivet er i utgangspunktet
klar til å bygge ok så hva en utvikler
trenger å gjøre er i utgangspunktet forplikte seg til
begå den nåværende tilstanden i
depot til en utgivelse gren i denne
Hvis jeg kaller det slipper nå åpenbart
det kan være mange flere, men for dette
eksempel utgivelser god nok, og fra
det er alle utbygger må gjøre
skyve dette arkivet for å få kjærlighet og få
opp er ikke bare inngangen til dette
Rørledningen må men også til eller er en
maskin som faktisk er ansvarlig for
arkivere all kildekoden, så hvis du
har begår på en utgivelse gren og og
på en gren kan det potensielt være
leveres til en kunde
det ville være veldig lurt hvis du gjør
sikker på at dette forplikter aldri går
bort igjen
så får som gir deg en funksjon
som kalles beskyttende grener og
du kan konfigurere den på prosjektbasis
på prosjektbasis, og det tillater deg å
beskytte visse grener fra å være
slettet og blir tvunget Trykk så
som utviklere kan kan luke ut kan
luke ut grener og fra der vi hadde
over 22 Jenkins utgangspunktet få fanget
varsler Jenkins om endringer i
visse repositories ved hjelp av å bruke det
bok, så dette er en stein som den
standard get lab API-funksjonen det
utgangspunktet varsler Jenkins hei Jenkins jeg
har noen endringer her kanskje du vil
gjøre noe med det
så Jenkins på sin side har en stor liste
prosjekter som det bygger det bygger for
eksempel c ++ prosjekt for utslipp grener
det bygger python prosjektet som nattlig
versjoner hva-hva Jenkins utgangspunktet
vet hvordan å bygge ting så det tar
informasjon fra god runde og merknader ok
Dette er en C ++ prosjekt, og det er faktisk
kommer fra en utgivelse gren så jeg burde
bygge en utgivelse i utgangspunktet så Jenkins en
par skritt og de er i utgangspunktet
å velge en av bygge ikke å gi
en inne et rent bygg miljø vi gjør
ikke dele noen bygde miljø på tvers
regninger så vi sørge for at hver programvare
hver pakke er innebygd er i en ren
og minimal miljø hvis du er
interessert vi bruker debian Jenkins
holdepunkt for at det er en hyggelig sett med
utgangspunktet skall skript som abstrakt
bort mye av nitty og modig
detaljer om debian emballasje hjelp når
du bruker Jenkins Jenkins fakturerer
pakken eller bygget kilde regninger til
bygge binære pakker kjøres tester på
pakkene og etter build noden er
gjort samler det alle resultatene it
samler byggmester artefakt og det
gir brukeren noe sånt
grafer og rapporter som er hva alle
ønsker å ha det slik at dette er det faktiske
plassere hvor utbygger kan se på
nåværende tilstand av dette prosjektet slik at du kan
ta en titt på det og si ok dette er
Det tjuende bygge opp en pakke sin
utbyggere ren vi har 20 enhet tester og
og han kan han kan raskt ta en titt på
det og på tilstanden til det, og dette er
også et punkt der du kan tilpasse
ganske mye, så hvis du for eksempel inne
oksygen dokumentasjon er det noen noen
advarsler og oksygen eller i oksygen
regning
låse at du ønsker at du kanskje vil
å ta en titt på og denne rapporteringen og
og grafiske trekk ved Jenkins ville være
rett sted til å visualisere en slik
endringer slike detaljer så la oss anta
at bygningen vellykket og en av
de bygge gjenstander faktisk er en binær
Debian pakker eller debian pakken fra
der
Jenkins tar en pakke og kaster det til
en bønn og en appell tar en titt på
innkommende pakke og bygningen
informasjon som leveres med det
og varslings merknader
ok dette er en dette ser ut som en utgivelse
pakken fordi det kommer fra en
utgivelse gren fra den opprinnelige get
forpliktet seg til å få utgivelsen gren så det
sier ok jeg vet hvordan de skal forholde seg til
utgivelser Jeg kommer til å ta den og sette den
inn i min ustabile distribusjon eller
oppbevaringssted for at for den saks skyld så
Dette betyr at en enkelt eller alle pakkene
som er bygget er i utgangspunktet fylt
i én enkelt ups depotet en bønn
distribusjon vi har flere av dem
og jeg vil bare veldig raskt komme over
eller over de forskjellige fordelinger som
vi har vi har for eksempel ustabil vi
ha en testing og vi har en stabil og
de som tjener forskjellige bruksmåter slik at
ustabil man er fordelingen som
pakkene blir kastet inn hele tiden så
hvis utvikleren gjør en ny utgave av
en pakke det er fylt inn ustabil
nå på et eller annet tidspunkt har du i utgangspunktet
ønsker å sende programvare til kunder
ellers ville du være snart ut av
virksomheten slik at på ett punkt i tiden jeg
utbygger må bestemme okay dette er
god nok til å i utgangspunktet komme inn
testing og testing betyr at vår
testing Institutt for QA-avdelingen kan
begynner å ta en titt på dagens
state of the
auditiv så teamet kan for eksempel
test om installerer fra dette
repository arbeid hvis oppgraderinger fungere hvis
pakkene er komplett hvis funksjonene
jobber dersom alle boksene som er
kreves er faktisk i og ja
derfra vi krever Q18 til
utgangspunktet starte Jenkins jobb og Mark
testingen distribusjon som stabil og
stabile betyr at det er speilet til
eksterne repositories til ytre
speil så en gang et QA-medlem sier okay
denne denne versjonen av testing
repository er god nok kan det være
sendes til kunder han kan markedsføre en
stabil og alt er dans utenfor
utenfor depotet, så dette er en
fullstendig oversikt på på hele
rørledning og jeg vil bare raskt få
på med en eller to andre bruksmåter som
vel for å gi deg et inntrykk av av
det som er det som er mulig
så før jeg raskt vil oppsummere vi
har en stabil arm kilde pakke med
debian emballasje informasjon på det vi
sendte denne pakke for å få få få fanget
får merke Jenkins Jenkins build
Programvaren har vi en binær debian
pakke som er i dag en bønn og
når det drypper ned gjennom rørledningen
gjennom ustabil testing og stabil det
Før eller senere vil vi treffer kunden
på et tidspunkt og som regel når det
skjer kunden vil rapportere boks
forhåpentligvis han gjør i vårt tilfelle de gjør det
la oss gå videre med et annet eksempel og
la oss anta ok slik kunde rapporterer
bukk og la oss anta at ok
en mann sider mangler en debian
pakke disse bucks vanligvis ikke får
rapportert, men la oss anta for dette
eksempel på at det er så utbygger er
oppgave med ok vær på mamma siden
denne pakken, og nå gjør han han skaper
en døv gren i utgangspunktet døve og plukke
noen navn kan være døv emballasje for
eksempel og så han begynner å jobbe med
pakken og han nå kunne åpenbart
bygge alt av seg selv han kunne
bygge en blitt pakket lokalt her på
hele enheten testen lokalt Picard sjekk
kodedekningen lokalt til alle
ting, men det er ingen grunn til fordi han
kan også presse denne ansatte denne død
emballasje gren her bare for å få opp
igjen og la kjærligheten gjøre jobben for ham
eller har det siste rørledningen gjøre jobben så
få opp igjen merke Jenkins Jenkins
vet hvordan å bygge pakker det kommer
fra en annen gren, men gjør egentlig ikke
Uansett så det bygger pakker og igjen
Jenkins håndverk og rapportering slik at brukeren
kan ganske ganske enkelt spot for eksempel
Incheon advarsler og lynsjing er et verktøy
som du kanskje vil bruke i tilfelle
du bruker Debian pakker det er en er
en linter for David pakker, og det kan
varsle deg om ting som greit det er en
binær i denne pakken, og det mangler
en mann side så la oss anta morges
er ikke borte, og regningen er å bygge
ok så i tillegg til grafer og
rapportering vi må også ha
debian pakken og på dette punktet er det
igjen kastet mot en bønn og stygg
sier okay det er en det er en Debian-pakke
det er faktisk fin, men det kommer fra
noen gren som jeg ikke vet det ser ut
som det kommer fra def emballasje
Jeg tar ikke det så det i utgangspunktet kaste
den bort så man kan si ok dette er
dette er en ganske meningsløs eksempel
Ja, men det er grunnlaget for bygningen
andre ting på toppen som er turn
ut til å være ganske nyttig når du har
dem for eksempel ved hjelp av denne av denne
rørledning og bruke ett punkt en
appell til å bestemme hvorvidt pakker
skal treffe depotet lar deg
gjør ting som greit vi kan gjøre nattlig
ombygging av alle Debian-pakker når som helst
tidspunkt hadde aldri truffet noen repository
men vi kan oppdage ting som å endre en
pis eller gått pakker eller brudd
pakket med slike slike saker
Et annet interessant forhold, og jeg ønsker
å bare veldig raskt hoppe på det
fordi jeg er allerede over tid, men bare
for å gi deg et inntrykk
Det lar deg også til å gi bruk
tilfeller som hvorfor ikke lage en spesiell
distribusjon på miniprogramtjeneren som
kalles def emballasje og hvis vi treffer
slik en annen positiv hvis hvis en
Pakken treffer et slikt depot det kunne
gå til døden emballasjen er dette
i dette eksempelet så vil det ikke gå for
ustabil det går å ha emballasje
og derfra har vi en vanlig drosje og
depot slik at den kan brukes internt
av QA-avdelingen kan brukes av ved
utviklere seg selv, og dette gjør det mulig
eksempel for å gjøre store refactorings uten
bryte ustabil i to måneder eller
tre måneder fordi utbygger kan
plukke noen kilde pakke som han ønsker eller
noe register som han vil hacke på det
og presse til å forplikte seg ikke om ikke å slippe
gren, men til en kjent utvikling gren
og alle pakkene som faller ut av
dette kjente utviklingen grenen treffe denne
veldig depot og aldri
noen gang går til kunder, men som ville
tillate oss noen noen stor intern
testing og når den er ferdig refactoring
arbeidet kan bare rett og slett bli slått sammen til
slipper praksis og du har den første
bruke saken på nytt så åpenbart min tid er
over høyre nå vil jeg bare veldig
raskt gå over til å gå over flere
leksjoner som vi har lært
kanskje de er nyttige for deg jeg vil være
flott om jeg hadde kjent dem før
første er du bedre kontrollere at du
har en veldig enkel å bruke rørledning og
lett-å-bruke betyr for utbygger punkt
se om du bruker komme i et selskap
sørge for at rørledningen er
kontrollerbar og kan brukes av få bare så
hvis du har hvis du trenger din
utviklere å sette opp Jenkins for deres
egen programvare bygning som kan være en
problem fordi noen utviklere selv hvis
det er selskapets policy at Jenkins bør
bli brukt for å bygge noen utviklere
vil si ja jeg ignorere det
fin andre vil si ja jeg kommer til å
ta Jenkins for å bygge, men jeg har aldri
hørt av enhet tester, og jeg bryr meg ikke
om grafer om enhet tester ok greit
andre som vil si ok jeg vet hvordan de skal
hvordan å analysere che enhet testresultater
med Jenkins som er god og han er glad
men han har glemt at det er for eksempel
kodedekning så vel så det ville være
flott å være sikker på at du kan
abstrakt bort fra utbygger, og du
ikke krever en utvikler til å konfigurere
Jenkins han kan ta en titt på det
ikke noe problem, men i utgangspunktet er det bedre å
gi ham eller henne tror jeg det er
viktig å få tjenester oppe og går
real raskt så ikke bygger ikke alt
funksjonene som du tror er
viktig eller nyttig, men starter med
viktigste og gi
krav til å endre seg over tid mmm
de endres ofte oftere og
du bedre forberede deg for det og
Jeg tror den beste forberedelsen til
endrede krav er å automatisere så
mye som mulig og automatisering betyr ok
Jeg bruker ansible bruke dukkene kokk
hva du har å gjøre din server
konfigurasjon, men stopper ikke der
fordi for eksempel bli høyt gir en
API var alle prosjektene con kan være
konfigurert programma så det er
ingen grunn til å gå gjennom innstillingene for
flere hundre prosjekter og krever og
og redigere gruppemedlemskap eller redigere kroker
eller noe sånt som kan være
automatisert bort, og det bør være
automatisert måte
en annen ting er hvis du bruker Jenkins
det er prosjekter som Jenkins shot
byggmester jeg vet ikke om det er hvis folk
vet det, men jeg tror det er ganske nyttig
fordi vi har noen jeg ikke om
tusen sjekker butikker og endring
enkelte deler av det jobben krever oss
minutters gjøre det for hånd, og du kan
ha det gøy for de neste to ukene så hvis
du bruker apparatet ved hjelp Jenkins sørge
du aldri berøre konfigurere grensesnittet
av det med unntak for testing åpenbart og
det siste punktet er du bedre å velge din
verktøy klokt
Vi startet med et annet depot
server og uten matchup mye mye
evaluering fordi vi tenkte ok vi har
visst det fra fortiden, og det er ok det det
gjør sin jobb, men vi har truffet begrensninger
ganske raskt og faktisk når du
bygge en slik rørledning integrasjoner kommer
over tid, og du tror okay dette er
bare den blir skadet på dem en
debian repository serveren det ikke kan være
så vanskelig å rive det opp, men faktisk om
det er fem andre tjenester som
avhengige av det og liksom integreres med
det det er få det blir vanskelig
ok så det er det fra min tale takk
veldig mye for å lytte
hvis du har noen spørsmål
du kan spørre dem deres informant fire
minutter, eller du kan finne kontakten
detaljer om websiden min
ok takk
Ja takk
se nedenfor jeg ønsket å spørre
bortsett fra disse utviklerverktøy er
det noen andre deler av fri programvare
til bruk fra for våre andre sider av
din virksomhet som regnskap kjerne
kunderelasjoner kanskje eller prosjekt
ledelse utmerket spørsmål
Vi er for tiden migrere bort fra en
proprietære Enterprise Resource Planning
Systemet til en gratis programvare en det er
heter Triton Jeg vet ikke om deg hvis du
vet at rett på ville være i det minste
verktøyet for oss akkurat nå tror jeg
Jeg er ikke sikker på at jeg tror det heter ny
helse som bygger på prøvd på så
kan det være lurt å se etter en ny helse
å få demoer og ta en titt på hva som var
mulig
ja takk jeg trenger for presentasjon og
Gjennomgå noen enhetlig til forgrening modell
utdanne noe som det for slags
at vi har en har vi en forgrening
modellere ja og den er basert på utgivelsen
Navnene internt slik at det er en som jeg
presenteres her er faktisk ganske
minutt fide vi har ubegrenset hardt
å forklare
så i utgangspunktet har vi har vi utgivelser
hvert femte år, eller det kan ikke frigi er
hvert femte år som ute som har navn
og under dette navnet har vi gitt ut
grener og vi har utvikling
grener og vi har emballasje grener
og alle slags ting så ja vi gjør
og hvis du er interessert komme til meg
etterpå, og jeg vil forklare i detalj
til deg
Jepp velkommen
ja takk ja hvordan kan du takle
som selv har en veldig gammel lærer vært
som tre uker gammel
prøver å integrere det med bandet
utgitt som ukentlig eller bare liker å prøve å
slå sammen disse gamle grener den nye utgivelsen
som flere funksjoner er lagt til av den unike
på den måte, og som kan føre til andre
slags boks
ok så spørsmålet er når vi når vi
har slike lange utviklings grener som
vi bruker og da vil vi bli pakket
separat om vi flette dem tilbake
og faktisk ja vi gjør det vi i utgangspunktet
rebase så uansett treffer utvikling
gren spiller ingen rolle for oss, så vi r
det er mange mange komiteer som er
bare jobber fremgang sånt
og når de kommer tilbake for å mestre eller til
utgivelsen grenen de er vanligvis knust
i logiske inger med riktig forplikte
meldinger og deretter hele rørledningen er
ombygd eller programvaren er gjenoppbygd slik
hva vi ikke gjør er at vi ikke tar
utvikling Debian-pakker som treffer en
utvikling depot og flytte den til
ustabil eller stabil depot så vi
sørge for at alle bygger faktisk bruker
banen med utgivelser der så vi
aldri ta binære Debian-pakker for
døv for hva vi alt vi alltid
gjenoppbygge den type ting
ok

Share this subtitle


Description

This talk will cover how to power the development infrastructure of a small (non-cloud) company using free software. I present the goals and our requirements for the infrastructure and dig into some interesting parts, including: * Using a free software pipeline to get from code to the final product. * Discuss the use of free software alternatives to proprietary solutions. * Why the work on infrastructure is never finished. * Lessons learned