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

14   0   0  
  Pause sub
så tak for at komme til min
præsentation Jeg har tænkt mig at tale om
opbygge en fri software-udvikling
miljøet eller pipeline for en lille
Selskabet dybest set er det noget af det, vi
har, og vi bygget under de sidste tre
år på vores virksomhed
mit navn er voksende planter hårdere jeg er en
systemer ingeniør på en lille østrigsk
startup virksomhed, og vi gør laboratorium
testudstyr til papir og papirmasse
industrien så dybest set vi bygger enheder
at vi sælger til kunder og dem,
kunder bruger det til at teste visse aspekter
af for eksempel papir, så en prøvesag
ville være, hvor meget vand kan et stykke af
papir absorbere den slags anordninger intet
særlig fancy fra en teknologi punkt
synspunkt, vi bruger det meste c ++ så de fleste
af den bløde til tredjedel af det er skrevet i
c ++ så er der en Python 3 og
naturligvis glukose, du har brug for
overalt ville dybest set lidenskab og
alle de 15
vidste du før vil faktisk
taler om rørledningen vil jeg gerne
indføre nogle af de krav,
vi havde, og dem er blot nogle af dem
Jeg synes det er vigtigt at få din
følelse af, hvad der kræves i det mindste
til vores brug tilfælde så en vigtig
Kravet var at have offline støtte
vores virksomhed hovedkvarter er beliggende i
Østrig i landet, og det er
faktisk rart, hvis man ser på vinduet
og dette kan du se grønne græs i
bjerge og dybest set det er tilfældet
men det er ikke gavnligt, hvis du ønsker
ordentlig internetforbindelse, så vi har en
langsom internetforbindelse og den temmelig
svirp du, så vi bedre ikke stole
for meget på internettet, der ville være
det ville være godt for os
en anden ting, som vi kender fra fortiden
det, der er ganske gavnlig for ikke
afhænge af en enkelt udvikler maskine
et eller andet sted er jeg sikker på de fleste af jer har
hørt
historierne eller har set det med din
egne øjne, at nogle bærbare nogle maskine
i nogle kontor fra nogle udvikler er
faktisk den vigtigste aspekt af
virksomheden, fordi uden dem
uden denne bærbar visse produkter kan
bygges overalt
Jeg ved ikke, om nogen er så alle ting
ligesom det, men jeg har set dem, og de er
ikke så stor at have, så vi bedre
forberede sig til det
en anden ting er det skal være let at
bruge og nem at bruge midler vi skal bruge
redskaber og vi bør give udviklere
værktøjer, som de er komfortable med
så hvis vi bruger få det ville være dejligt
hvis bygherren kan interagere med en
pipeline og orkestrere rørledningen eller
meste af rørledningen ved blot at bruge get
fair nok
og en anden ting er, det bør være
forståeligt jeg synes det er helt
vigtigt for anlæg, der
at brugerne kan forstå det, de ikke gør
brug for at få få alle de Eternity store
oplysninger om det, men du bør tage et kig
på det, og de skulle sige ok jeg ved jeg
bygget denne pakke, og det gik fra dette
maskine til denne maskine denne maskine, og
dette skete, ville være, at ville
være fair nok
og som også har en forståelig
pipeline betyder det også en hackable én
så det kan være let kan modificeres og
den justeres efter behov Jeg ønsker at give
du en meget minimal overblik over, hvad vi
have
det er langt væk fra at være komplet, men det
indeholder de vigtigste aspekter, som
Der er behov for denne 20-minutters tale, så
Jeg giver en kort introduktion til
alle de dele her og så vil jeg
give dig nogle use cases for
at få din følelse af, hvad der er
muligt, så vi ønsker at starte på
nederste venstre her, hvor vi har en
developer laptop kunne være noget, der
linux maskine vinduer kasse mac kasse
hvad er der ingen bestemt krav
på en sådan maskine grundlæggende udviklerne
skal føle sig godt tilpas
med at få sit arbejde så måske 90
måske måske max og nogle versionsstyring
Systemet ville være ville være nok til at få
startet fra der vi besluttede vi at til
pick få skødet som vores som et depot
management server eller socialisme-version
styresystem fordi vi bruger det
internt en masse vi kan lide det, og vi
synes det er, det er kommet for at blive, så vi læste
så vi var det ville være dejligt, hvis hvis vi
har noget, der tydeligvis understøtter
får og også giver udviklere mulighed for at bruge en
våben til ansigt, hvis de ønsker at fordi
nogle udviklere ikke føler, at besparelse
med med med en kommandolinje og måske
nogle opgaver er ganske let at gøre på sådan
en web-grænseflade, så vi var det ville
være en god omgang ville være ville være en stor
værktøj her, og vi er helt tilfredse med
valg faktisk dengang når vi
startede det var det var lidt ru, men
lige nu føles det det føles ganske ganske
ganske godt at bruge derfra vi vi hovedet
over til tanken er her midt én
her valgte vi Jenkins, fordi jeg var
vant til det og mike / proces uanset
virker
ok og det er gratis software det er okay
hjælp Jenkins nogle gange kan du
Jenkins kan give dig nogle hovedpine hvis
dig, hvis du ikke bruger det som en mester kun
system, så du, hvis du ønsker at bruge Jenkins
du bedre sørg for at bruge bygge noter
og ikke bygge noget på Jenkins
selv lade Jenkins til alle
orkestrering og alle de andre
rapportering og crafting og der ville
være der ville være nok, men gør det
bygger på andre maskiner, og det er
hvor vi har flere build næse højre
her regningen ting de bygger c ++
projekt python projekter, de køre enhed
tests, de gør integration test hvad
er nødvendigt
derfra havde vi over til en bøn og en
anbringende er på Debbie n-version kompatibel
um repository server, så vi besluttede at
sende vores produkt som et sæt af Debian
pakker og det er mest naturligt og 22
skib Debian-pakker i en og i en
regelmæssig debian repository og så du
brug for nogle værktøj til at håndtere pakker, og
nogle af dem er til rådighed, og vi holder os
med en bøn, fordi vi tror eller i vores
opleve det passer vores brug tilfælde bedst så
det er Jeg tror, det er skrevet og gå
modne Jeg tror så, og det er ganske handy
at bruge han har en masse funktioner, og jeg
tror, du får det meste af bogen faktisk
udført på den højre side af fordampning af det
højre side af det her vi har en
kort den stiplede linie, der betyder, at nogle
netværk adskillelse så vi har de fleste af
af denne poplin i vores interne netværk
eller faktisk det hele mest af det og på
den højre side på den eksterne
netværk, vi har nogle eksterne spejle
og det er dybest set motor X så motoren
økse afsoner af lageret for vores
kunder, og vi har flere forekomster
af denne her, så ja jeg udeladt nogle
af de sjove ting faktisk, og nogle af
de nyttige ting for eksempel vi også
har en oversættelse server, så oversættere
kan faktisk oversætte hele vores
software under anvendelse af en enkelt single web
grænseflade vi bruger en hjemmeside for det, men
det er det er faktisk rart det giver din
twitter bootstrap web interface er det
ganske nem at bruge, men det er ikke så
vigtigt for denne snak, men bare for at
give dig en idé om, at det er virkelig
vigtigste komponenter af
Poplin så jeg gerne vil i gang med en
use case og dette use case er at bygge
og frigivelse
en stabil stykke software så vi antager
at bygherren her på sin bærbare computer
har en enkelt lager og det indeholder
en stabil frigivelse af software, og det også
har alle de debian pakke oplysninger
i det, så dette arkiv er dybest set
klar til at bygge ok så hvad en udvikler
skal gøre er dybest set forpligte sin til
begå den aktuelle tilstand af
opbevaringssted til et release filial i dette
tilfælde jeg kalder det frigiver nu tydeligvis
der kan være mange flere, men for denne
eksempel frigiver godt nok og fra
der hele udvikleren skal gøre er
skubbe denne repository til at få kærlighed og få
op er ikke kun indgangen til dette
pipeline behov men også til, eller er den ene
maskine, der reelt er ansvarlige for
arkivering alle kildekoden, så hvis du
har begår på en release gren og og
på en gren det potentielt kunne være
afsendt til en kunde
det ville være meget tilrådeligt, hvis du gør
sikker på, at dette begå aldrig nogensinde går
væk igen
så får der giver dig en funktion
der kaldes beskyttende grene og
du kan konfigurere den på projektbasis
på projektbasis, og det giver dig mulighed for at
beskytte visse grene fra at være
slettet og bliver tvunget skub til så
at udviklere kan kan luge ud kan
frasortere grene og derfra havde vi
over 22 Jenkins dybest set får skødet
meddeler Jenkins om ændringer i
visse repositories ved hjælp ved hjælp af denne
bog, så dette er en sten, at
standard get lab API funktion det
dybest set meddeler Jenkins hey Jenkins I
har nogle ændringer her måske du ønsker at
gøre noget med det
så Jenkins på sin side har en enorm liste
af projekter, som det bygger det bygger for
eksempel c ++ projekt for release grene
det bygger python projekt som natlige
versioner hvad-uanset Jenkins grundlæggende
ved, hvordan man opbygger ting, så det tager
oplysninger fra god skød og bekendtgørelser ok
dette er en C ++ projekt, og det er faktisk
kommer fra en release gren, så jeg skulle
bygge en frigivelse dybest set så Jenkins et
få trin og de er dybest set
vælge en af build ikke udbyder
en indbygget et rent build miljø, vi gør
ikke dele nogen byggede miljø på tværs
regninger, så vi sikre, at hver software
hver pakke er indbygget er i en ren
og minimal miljø, hvis du er
interesseret Vi bruger Debian Jenkins
fingerpeg om, at det er en nice sæt
dybest set shell script, abstrakt
væk en masse af de praktiske og grovkornet
oplysninger om debian emballage brugte, da
du bruger Jenkins Jenkins fakturerer den
pakke eller bygget kilde-regninger til
bygge binære pakker kører test på
Den pakker og efter build node er
gjort det samler alle de resultater, det
indsamler bygherre artefakt, og det
giver brugeren noget som
grafer og rapporter, der er, hvad alle
ønsker at have så dette er den faktiske
sted, hvor udvikleren kan se på
aktuelle tilstand af dette projekt, så du kan
tage et kig på det og sige okay, det er
de tyvende opbygge en pakke sit
bygherrer ren vi har 20 unit test og
og han kan han hurtigt kan tage et kig på
der og på tilstanden af det, og det er
også det punkt, hvor du kan tilpasse
ganske meget, så hvis du for eksempel bygget
ilt dokumentation der er nogle nogle
advarsler og oxygen eller i oxygen
regning
lås, som du ønsker, at du måske ønsker
at tage et kig på, og denne rapportering og
og graftegning funktion i Jenkins ville være
det rigtige sted at at visualisere sådanne
ændringer sådanne detaljer, så lad os antage
at bygningen vellykket og en af
build artefakter er faktisk en binær
Debian-pakker eller debian pakke fra
der
Jenkins tager en pakke og kaster det til
en bøn og et anbringende tager et kig på den
indkommende pakke og bygningen
information, der leveres med det
og meddelelser varsel
ok det er en det ligner en udgivelse
pakke, fordi det kommer fra en
frigivelse gren fra den oprindelige get
forpligtet sig til at få release gren, så det
siger ok Jeg ved, hvordan til at håndtere
udgivelser jeg har tænkt mig at tage det og sætte det
ind i min ustabile distribution eller
opbevaringssted for at for den sags skyld, så
dette betyder, at en enkelt eller alle pakker
der er bygget er dybest set udstoppet
i en enkelt ups repository en anbringende
fordeling vi har flere af dem
og jeg vil bare meget hurtigt komme over
eller over de forskellige distributioner,
vi har vi har for eksempel ustabil vi
har en test, og vi har en stabil og
dem tjener forskellige use cases så
ustabil ene er er fordelingen som
pakker er kastet ind hele tiden, så
hvis bygherren gør en ny version af
hvert kolli er proppet ind i ustabil
nu på et eller andet tidspunkt du grundlæggende
ønsker at sende software til kunder
ellers du ville være snart ud af
virksomhed, så på et tidspunkt i gang jeg
udvikler skal beslutte orden dette er
god nok til stort set komme ind
afprøvning og test betyder, at vores
test Institut for QA afdeling kan
begynde at tage et kig på den aktuelle
tilstand
auditive så teamet kan for eksempel
teste, om installationer fra dette
repository arbejde, hvis opgraderinger fungere, hvis
pakker er komplet, hvis trækkene
arbejder hvis alle bokse, der er
kræves er faktisk i og ja
derfra kræver vi Q18 til
dybest set starte Jenkins job og Mark
distributionen testing så stabile og
stabile betyder, at den er spejlet til
ekstern lager til eksterne
spejle, så når en QA medlem siger i orden
denne denne version af test
repository er godt nok, kan det være
sendes til kunderne, han kan markedsføre en
stabil og alt danser udenfor
uden for lageret, så dette er en
komplet gennemgang om på hele
pipeline og jeg vil bare hurtigt få
på med en eller to andre use cases som
godt at give dig et indtryk af af
hvad der er hvad der er muligt
så før jeg hurtigt vil opsummere vi
har en stabil arm kilde pakke med
debian emballage oplysninger i det, vi
sendt denne pakke til at få få få skødet
få bemærket Jenkins Jenkins build
software har vi en en binær debian
pakke, der er i øjeblikket en bøn og
når det drypper ned gennem rørledningen
gennem ustabil afprøvning og stabil det
før eller senere vil vi ramt kunden
på et tidspunkt, og normalt når der
sker kunden vil rapportere kasse
forhåbentlig han gør i vores tilfælde de gør det
lad os gå videre med et andet eksempel og
lad os antage, ok sådan kunde rapporterer en
sorteper og lad os antage, at ok
en mand sider mangler fra en debian
pakke disse bukke normalt ikke får
rapporteret, men lad os antage, for dette
eksempel, at det er så udvikleren er
opgave ok du ved mor side til
denne pakke, og nu gør han han skaber
en døv gren dybest set døv og pluk
helst navn kunne være døv emballage til
eksempel og så begynder han at arbejde på
pakken, og han kunne nu tydeligvis
bygge alt af ham selv han kunne
opbygge et blevet emballeret lokalt her på
alle unit test lokalt Picard kontrol
koden dækning lokalt til alle
ting, men der er ingen grund til, fordi han
kan også skubbe denne personale dette død
emballage gren her bare for at komme op
igen og lad kærligheden gøre arbejdet for ham
eller gøre det sidstnævnte rørledning gøre arbejdet så
komme op igen mærke Jenkins Jenkins
ved, hvordan man opbygger pakker det kommer
fra en anden gren, men ikke rigtig
Uanset så det bygger pakker og igen
Jenkins håndværk og rapportering, så brugeren
kan ganske ganske nemt stedet for eksempel
Incheon advarsler og lynchning er et værktøj
som du måske ønsker at bruge i tilfælde
du bruger Debian-pakker er det en er
en linter for David pakker og det kan
underrette dig om ting som orden der er en
binær i denne pakke, og det mangler
en mand side, så lad os antage morges
er er ikke gået, og regningen er at bygge
dens ok så foruden grafer og
rapportering vi også nødt til at have den
debian pakke og på dette punkt er
igen kastet mod en bøn og grim
siger i orden, det er en det er en debian pakke
det er faktisk rart, men det kommer fra
nogle gren, som jeg ikke kender det ser
ligesom det kommer fra def emballage
Jeg tager det, så det dybest set smide
det væk, så man kan sige ok det er
dette er en temmelig meningsløst eksempel
ja, men det er grundlaget for bygningen
andre ting på toppen, der er svinget
ud til at være ganske nyttigt, når du har
dem for eksempel ved hjælp af denne dette
pipeline og bruge enkelt punkt en
anbringende at beslutte, hvorvidt pakker
bør ramme arkivet kan du
gør ting som okay, vi kan gøre natlige
genopbygge alle Debian-pakker til enhver
tidspunkt vidste aldrig vil ramme nogen repository
men vi kan få øje på ting som at ændre en
PI'er eller gået pakker eller brud på
pakket med sådanne sådanne tilfælde
anden interessante faktorer, og jeg ønsker
til bare meget hurtigt hoppe på det
fordi jeg er allerede over tid, men bare
for at give dig et indtryk
det giver dig også mulighed for at for at give brug
sager som hvorfor ikke skabe en speciel
distribution på applet server,
kaldes def emballage og hvis vi ramt
sådan en anden positiv hvis Hvis en
pakke hits sådan et opbevaringssted det kunne
gå til døden emballage er dette
i dette eksempel, så betyder det ikke gå for
ustabil det går at have emballage
og derfra vi har en regelmæssig førerhus og
repository så det kan bruges internt
af QA afdeling kan bruges af af
developers selv og dette giver mulighed for
eksempel at gøre store refactorings uden
bryde ustabil i to måneder eller
tre måneder, fordi bygherren kan
plukke enhver kilde pakke, han ønsker eller
enhver repository, at han ønsker hack på det
og skub til at begå ikke ikke at frigive
gren men til en kendt udvikling gren
og alle de pakker, der falder ud af
dette kendte udvikling gren ramme denne
meget repository og aldrig
nogensinde gå til kunder, men det ville
tillade os nogle nogle store interne
afprøvning og når refaktorering sker
arbejdet kan simpelthen sammenlægges til
frigive praksis og du har den første
bruger sagen igen, så selvfølgelig min tid er
over højre nu vil jeg bare meget
hurtigt gå over til at gå over flere
lektioner, som vi har lært
måske de er nyttige for dig jeg ville være
dejligt, hvis jeg havde kendt dem før
første er du bedre sikre, at du
har en virkelig nemt at bruge pipeline og
let at bruge midler til udvikleren punkt
se, hvis du bruger komme i din virksomhed
sørge for, at rørledningen er
styrbar og bruges af får kun så
hvis du har, hvis du har brug for din
udviklere til opsætning Jenkins for deres
egen software bygning, der kunne være en
emne, fordi nogle udviklere selv hvis
det er virksomhedens politik, at Jenkins bør
bruges til at bygge nogle udviklere
vil sige jep, jeg ignorere det
fine andre vil sige ja jeg har tænkt mig at
tage Jenkins til opbygning, men jeg har aldrig
hørt om unit test, og jeg er ligeglad
om grafer om enhed tester ok fint
andre dem vil sige okay, jeg ved, hvordan
hvordan man analyserer che enhed testresultater
med Jenkins, der er godt, og han er glad
men han glemte, at der er for eksempel
kode dækning samt, så det ville være
stor til at sikre, at du kan
abstrakt væk fra udvikleren, og du
kræver ikke en udvikler at konfigurere
Jenkins han kan tage et kig på det
noget problem, men dybest set er det bedre at
sørge for ham eller hende, jeg synes det er
vigtigt at få ydelser op at køre
real hurtigt, så ikke bygger ikke alle
de funktioner, du synes er
vigtige eller nyttige, men starte med
vigtigste, og bestemme, at
krav at ændre sig over tid mmm
de sjældent ændres oftere og
du bedre forberede dig for, og
Jeg tror, ​​den bedste forberedelse til
skiftende krav er at automatisere så
meget som muligt og automatisering betyder ok
Jeg bruger ansible brug marionetter kok
hvad du skal gøre din server
konfiguration, men stopper ikke der
fordi for eksempel få højt tilvejebringer en
API var alle de projekter con kan være
konfigureret programmatisk så der er
ikke nødvendigt at gå gennem indstillingerne for
flere hundrede projekter og kræver og
og medlemskab eller redigere redigering gruppe kroge
eller sådan noget, der kan være
automatiseret væk og det bør være
automatiseret måde
en anden ting er, hvis du bruger Jenkins
der er projekter som Jenkins shot
builder Jeg ved ikke, om det er, hvis folk
vide, at men jeg synes det er ganske nyttigt
fordi vi har et par jeg ikke om
tusinde kontrol butikker og skiftende
enkelte dele af jobbet kræver, at vi en
minut gøre det i hånden og du kunne
have det sjovt for de næste to uger, så hvis
du bruger indstillet med Jenkins sørg
du aldrig røre configure-interface
af det bortset fra at teste selvfølgelig og
det sidste punkt er du bedre vælge din
værktøjer klogt
vi startede med et andet arkiv
server og uden matchup meget meget
evaluering, fordi vi troede ok vi har
kendes det fra fortiden, og det er ok det det
gør sit job, men vi har ramt begrænsninger
ganske hurtigt og faktisk, når man
bygge sådan en rørledning integrationer kommer
over tid, og du tror orden det er
bare den kommer til skade på dem den ene
debian repository server det kan ikke være
så svært at rippe det op men rent faktisk, hvis
der er fem andre tjenester, som
afhænge af det og på en måde integreres med
det det os få det bliver tricky
ok så det er det fra min tale tak
meget for at lytte
hvis du har spørgsmål
du kan spørge dem deres informant fire
minutter eller du kan finde kontakten
detaljer om min webside
Okay, tak
ja tak
se nedenfor jeg ønskede at spørge
Bortset fra disse udviklingsværktøjer er
der andre stykker af gratis software
at bruge fra vores andre aspekter af
din virksomhed som regnskabsmæssig kerne
kunderelationer måske eller projekt
ledelse fremragende spørgsmål
vi i øjeblikket migrerer væk fra en
proprietære enterprise resource planning
system til et gratis software en det er
kaldet Triton Jeg ved ikke, om dig, hvis du
vide, at lige på ville være mindst den
værktøj af valg for os lige nu tror jeg
Jeg er ikke sikker på, jeg tror det hedder ny
sundhed, som er bygget på prøvet på så
du måske ønsker at kigge efter en ny sundhed
at få demoer og få et kig på, hvad der var
mulig
ja tak jeg har brug for præsentation og
gennemgå nogle forenet til forgrening model
uddanne noget lignende for slags
at vi har en har vi en forgrening
model ja og den er baseret på frigivelse
navne internt, så det er den, som jeg
præsenteres her er faktisk temmelig
minut fide, vi har ubegrænset hårdt
at forklare
så dybest set har vi, vi har udgivelser
hvert år, eller det kan ikke frigive er
hvert par år, at ud der har navne
og under dette navn har vi udgivet
grene og vi har udvikling
grene og vi har emballage grene
og alle slags ting, så ja vi gør
og hvis du er interesseret komme til mig
bagefter og jeg vil forklare i detaljer
til dig
yep velkommen
ja tak ja hvordan kan du håndtere
som selv har en rigtig gammel lærer været
som tre uger gamle
forsøger at integrere den med bandet
udgivet som ugentlig eller bare gerne prøve at
flette disse gamle grene den nye version
som flere funktioner tilføjet ved den unikke
på den måde, og som kan forårsage andre
slags kasse
Ok, så spørgsmålet er, når vi når vi
har så lange udvikling grene,
vi bruger og så vil vi blive pakket
separat, om vi flette dem tilbage
og faktisk ja vi gør vi dybest set
variablernes vægtgrundlag, idet så uanset rammer udviklingen
gren betyder ikke noget for os, så vi r
der er mange mange udvalg, der er
bare arbejder fremskridt den slags
og når de kommer tilbage til skibsføreren eller til
release gren, de er som regel mast
i logiske begår med korrekt begå
beskeder og derefter hele rørledningen er
genopbygget eller softwaren er genopbygget, så
hvad vi ikke gør, er at vi ikke tager
udvikling Debian-pakker, der ramte en
udvikling repository og flytte det ind
den ustabile eller stabil repository, så vi
sørge for, at alle bygger faktisk bruger
stien med udgivelser i der, så vi
aldrig tage binære Debian-pakker til
døv for uanset hvad vi alle vi altid
genopbygge den slags ting
Okay

Share this subtitle


Description