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

14   0   0  
  Pause sub
så tack för att ni kom till min
presentation Jag kommer att tala om
bygga en fri programvaruutveckling
miljö eller rörledning för en liten
företag i grunden är det en del av vad vi
har vi byggt under de senaste tre
år på vårt företag
mitt namn växer växter hårdare jag är en
systemingenjör på en liten österrikisk
nystartat företag och vi gör laboratorium
testutrustning för massa- och pappers
industri så i princip vi bygga enheter
att vi säljer till kunder och de
kunder använder den för att testa vissa aspekter
av till exempel papper så ett testfall
skulle vara hur mycket vatten kan en bit av
papper absorbera den typ av enheter ingenting
särskilt snygga från en teknik punkt
perspektiv vi använder mestadels c ++ så de flesta
av den mjuka till tredjedelen av det står skrivet i
c ++ då finns det en Python 3 och
uppenbarligen glukos som du behöver
allt skulle i princip passion och
alla de 15
visste du innan vill faktiskt
tala om gasledningen jag skulle vilja
introducera några av de krav som
vi hade och de är bara några av dem
Jag tycker det är viktigt att få din
känsla av vad som krävs åtminstone
för vår användning fall så en viktig
Kravet var att få offline stöd
vårt huvudkontor ligger i
Österrike landsbygden och det är
faktiskt trevligt om man tittar på fönstret
och detta kan du se grönt gräs i
berg och i princip så är fallet
men det är inte fördelaktigt om du vill
ordentlig internet-anslutning så att vi har en
långsam internetuppkoppling och ganska
flick du vill så vi bättre att inte lita
för mycket på internet som skulle vara
det skulle vara bra för oss
en annan sak som vi vet från tidigare
det som är ganska bra för inte
beror på någon enskild utvecklare maskin
någonstans jag är säker på att de flesta av er har
hört
berättelser eller har sett det med din
egna ögon att vissa bärbara viss maskin
i vissa kontor från vissa utvecklare är
faktiskt den viktigaste aspekten av
företaget för utan dem
utan denna laptop vissa produkter kan
byggas någonstans
Jag vet inte om någon är så allt
sånt men jag har sett dem och de är
inte så bra att ha så vi bättre
förbereda sig för det
en annan sak är det ska vara lätt att
använda och lätt att använda medel vi bör använda
verktyg och vi bör ge utvecklare
verktyg som de är bekväma med
så om vi använder få det skulle vara bra
om utvecklaren kan interagera med en
pipeline och orkestrera rörledningen eller
de flesta av rörledningen genom att bara använda get
rimligt nog
och en annan sak är det borde vara
förståe Jag tycker det är ganska
viktigt för en inbyggd miljö som
att användarna kan förstå det de gör inte
behöver för att få få alla Eternity stor
uppgifter om det, men du bör ta en titt
på det och de skulle säga okej jag vet att jag
byggde detta paket och det gick från detta
maskin till denna maskin denna maskin och
detta hände det skulle vara som skulle
vara rättvis nog
och som också har en förståelig
pipeline innebär att det är också en hackable ett
så det kan vara lätt kan modifieras och
den justeras efter behov jag vill ge
du en mycket minimal översikt över vad vi
ha
Det är långt ifrån komplett men det
innehåller de viktigaste aspekterna som
behövs för denna 20-minuters prata så
Jag ska ge en kort introduktion till
alla delar här och då kommer jag
ge dig några användningsfall i syfte
att få din känsla av vad som är
möjligt så att vi vill börja på
längst ner till vänster här där vi har en
utvecklare laptop kan vara vad som helst som
Linux-maskin fönster låda mac box
vad det finns ingen viss krav
på en sådan maskin i princip utvecklarna
ska känna sig bekväm
med att få sitt arbete så kanske 90
kanske kanske max och några versionskontroll
Systemet skulle vara skulle vara tillräckligt för att få
började därifrån vi beslutade vi att att
plocka få varv som vår som en förvaringsplats
hanteringsserver eller socialism version
styrsystem eftersom vi använder den
internt en hel del vi gillar det och vi
tror att det är det är här för att stanna så vi läser
så vi tänkte att det skulle vara bra om om vi
har något som uppenbarligen stöder
får och även tillåter utvecklare att använda en
vapen för att möta om de vill eftersom
vissa utvecklare anser inte att spara
med med med en kommandorad och kanske
vissa uppgifter är ganska lätt att göra på en sådan
ett webbgränssnitt så vi tänkte att det skulle
vara en bra varv skulle vara skulle vara en stor
verktyg här och vi är mycket nöjda med
val faktiskt tillbaka sedan när vi
började var det var en bit grov men
Just nu känns det känns ganska ganska
ganska bra att använda därifrån vi vi huvud
över till tanken är här i den mellersta
Här valde vi Jenkins eftersom jag var
van vid det och Mike / process oavsett
funkar
ok och det är fri programvara det okej
med hjälp av Jenkins ibland kanske du
Jenkins kan ge dig några huvudvärk om
om du inte använder det som en mästare endast
systemet så att du om du vill använda Jenkins
du bättre se till att du använder bygga anteckningar
och inte bygga något på Jenkins
själv låta Jenkins till all
orchestra och alla andra
rapportering och hobby och det skulle
vara det skulle räcka men gör
bygger på andra maskiner och det är
där vi har flera build näsa rätt
här räkningen saker de bygger c ++
projekt python projekt som de kör enhet
tester de gör integrationstest oavsett
behövs
därifrån hade vi över till en grund och en
grunden är Debbie n version som är kompatibel
um förvars server så vi bestämde oss för att
skickar vår produkt som en uppsättning av Debian
paket och det är mest naturliga och 22
fartyget Debianpaket i ett och i en
regelbunden debian förvaret och så att du
behöver några verktyg för att hantera paket och
några av dem är tillgängliga och vi håller
med en grund, eftersom vi tror eller i vår
uppleva det passar vår användningsfall bäst så
det är jag tror den är skriven och gå
mogna Jag tror det och det är ganska praktiskt
att använda han har en hel del funktioner och i
tror du får största delen av boken faktiskt
göras på den högra sidan av indunsta
höger sida av det här du vi har en
kort den streckade linjen som innebär att vissa
nätverks segregation så vi har de flesta av
av denna poplin i vårt interna nätverk
eller faktiskt alla av det mesta av det och
den högra sidan på den externa
nätverk vi har några yttre backspeglar
och det är i grund och botten motor X så motor
yxa tjänstgör av slutförvaret för vår
kunder och vi har flera instanser
av av det här så ja jag lämnade ut några
av roliga saker faktiskt och några av
det nyttiga saker till exempel vi också
har en översättning server så översättare
kan faktiskt översätta hela vår
programvara med hjälp av en enda enkel bana
gränssnitt vi använder en webbplats för det, men
det är det är faktiskt trevligt det ger din
twitter bootstrap webbgränssnitt är det
ganska lätt att använda, men det är inte så
viktigt för denna diskussion, men bara för att
ge dig en idé om att detta är verkligen
de viktigaste komponenterna i
poplin så jag vill komma igång med en
användningsfall och denna användning fallet är att bygga
och släpp
en stabil mjukvara så vi antar
att utvecklaren här på sin bärbara dator
har en enda databas och den innehåller
en stabil utgåva av programvara och det också
har all Debian paketinformation
i det så detta förvar är i grund och botten
redo att bygga ok så vad en utvecklare
behöver göra är i grunden begå sitt till
begå det aktuella läget för den
förvar ett frisläppande filial i detta
fall jag kallar det släpper nu uppenbart
det kan finnas många fler, men för detta
exempel släpper nog och från bra
där hela utvecklaren behöver göra är
driva denna förvar att få kärlek och få
upp är inte bara ingången till detta
pipeline behöver men också eller är det en
maskin som faktiskt är ansvarig för
arkivera all källkod så om du
har begår på ett släpp gren och och
på en gren det skulle kunna vara
levereras till en kund
det skulle vara mycket lämpligt om du gör
säker på att detta begår aldrig någonsin går
bort igen
så få som ger dig en funktion
som kallas skydds grenar och
du kan konfigurera den på projektbasis
på projektbasis och det tillåter dig att
skydda vissa grenar från att vara
raderas och från att tvingas push så
att utvecklare kan kan sålla ut kan
sålla bort grenar och därifrån vi hade
över 22 Jenkins i princip få varv
meddelar Jenkins om ändringar i
vissa databaser med hjälp av att använda det
boken så detta är en sten som
standard get lab API funktionen det
i grund och botten meddelar Jenkins hej Jenkins I
har vissa ändringar här kanske du vill
göra något med det
så Jenkins på hans sida har en enorm lista
projekt som det bygger det bygger på
exempel C ++ projekt för utgåvorna
det bygger python projektet som natt
versioner vad-oavsett Jenkins i grunden
vet hur man bygger saker så det tar
information från bra knä och meddelanden ok
detta är ett C ++ projekt och det är faktiskt
kommer från en släpp gren så jag borde
bygga en release i grund och botten så Jenkins en
några steg och de är i princip
välja en av bygg inte tillhandahåller
en inbyggd en ren build miljö vi gör
inte dela någon bebyggelse över
räkningar så ser vi till att varje program
varje paket är inbyggd är i en ren
och minimal miljö om du är
intresserade Vi använder Debian Jenkins
ledtråd för att det är en fin uppsättning
princip skal skript som abstrakt
bort en hel del av praktiska och tråkiga
uppgifter om debian förpackningar använde när
du använder Jenkins Jenkins fakturerar
paket eller byggde käll räkningar till
bygga de binära paketen kör tester på
paketen och efter bygga nod
gjort det samlar alla resultat det
samlar byggaren artefakt och det
ger användaren något liknande
grafer och rapporter som är vad alla
vill ha så detta är den faktiska
plats där utvecklare kan titta på
aktuella läget i detta projekt så att du kan
ta en titt på det och säga okej detta är
det tjugonde bygga upp ett paket dess
byggare ren vi har 20 enhetstester och
och han kan han snabbt kan ta en titt på
det och på tillståndet för det och det är
också den punkt där du kan skräddarsy
en hel del så om du till exempel byggt
syre dokumentation finns några några
varningar och syre eller i syre
räkningen
lås som du vill att du kanske vill
att ta en titt på och denna rapportering och
och plottning funktion i Jenkins skulle vara
rätt plats att visualisera sådan
ändringar sådana detaljer så låt oss anta
att byggnaden framgångsrik och en av
build artefakter är faktiskt en binär
Debian-paket eller Debian-paketet från
det
Jenkins tar ett paket och kastar till
en grund och en vädjan tar en titt på den
inkommande paket och byggnaden
information som levereras med det
och meddelande meddelanden
OK detta är en det ser ut som en release
paketet eftersom det kommer från en
frigör gren från den ursprungliga get
åtagit sig att få frigör gren så det
säger okej Jag vet hur man handskas med
släpper Jag ska ta det och lägga det
i min instabila utgåvan eller
förvaret för att för den delen så
detta innebär att en enkel eller alla paket
som byggs i princip fyllda
till en enda ups förvars en grund
distributionen vi har flera av dem
och jag vill bara mycket snabbt komma över
eller över olika distributioner som
vi har vi har till exempel instabil vi
ha en provning och vi har en stabil och
de tjänar olika användningsfall så
instabil en är är den fördelning som
paket kastas in hela tiden så
om utvecklaren gör en ny version av
varje kolli är fyllda till instabil
nu vid någon tidpunkt du i princip
önskar att sända mjukvara till kunder
annars skulle vara snart slut
verksamhet så vid en tidpunkt jag
utvecklare måste besluta okej detta är
tillräckligt bra för att i princip få in
testning och kontroll innebär att vår
testning Institutionen för QA avdelning kan
börjar ta en titt på den aktuella
tillståndet i
auditiv så laget kan till exempel
testa om installationer från detta
förvars arbete om uppgraderingar fungera om
paket är komplett om funktionerna
arbetar om alla rutor som är
krävs är faktiskt i och ja
därifrån vi kräver Q18 till
princip starta Jenkins jobb och Mark
uttestningsutgåvan så stabil och
stabila innebär att det är speglas till
externa databaser till externa
speglar så en gång QA medlem säger okej
This version av test
förvaret är tillräckligt bra kan det vara
levereras till kunder som han kan marknadsföra en
stabil och allt dansar utanför
utanför förvaret så detta är en
fullständig genomgång på på hela
pipeline och jag vill bara snabbt få
på med en eller två andra användningsfall som
väl för att ge dig en uppfattning om av
vad som är vad som är möjligt
så innan jag vill snabbt summera vi
har en stabil arm paketet med
debian förpackning informationen i den vi
skickat detta paket för att få få få varv
få märkt Jenkins Jenkins build
programvara vi har en binär debian
paket som är i närvarande en grund och
när det droppar ned genom rörledningen
genom instabil testning och stabil det
förr eller senare kommer vi att träffa kunden
någon gång och oftast när det
händer kunden kommer att rapportera box
förhoppningsvis han gör i vårt fall de gör det
låt oss gå vidare med ett annat exempel och
låt oss anta ok sådan kund rapporterar ett
Buck och låt oss anta att ok
en man-sidor som saknas i en debian
paketera dessa pengar brukar inte få
rapporterade men låt oss anta för detta
exempel att det är så utvecklaren är
uppdrag med ok vänligen på mamma för att
detta paket och nu han gör han skapar
en döv gren i princip döva och plocka
något namn kan vara döv förpackningar för
exempel och sedan börjar han att arbeta på
paketet och han nu kunde naturligtvis
bygga allt själv han kunde
bygga en förpackats lokalt här på
alla enhetstest lokalt Picard check
koden täckning lokalt till alla de
saker men det finns ingen anledning till att han
kan också driva denna personal denna död
förpackning gren här bara för att få upp
igen och låta kärleken göra jobbet åt honom
eller som den senare ledningen gör arbetet så
få upp en gång märker Jenkins Jenkins
vet hur man bygger paket det kommer
från en annan gren, men inte riktigt
Oavsett så det bygger paket och igen
Jenkins hantverk och rapportering så att användaren
kan ganska helt enkelt upptäcka till exempel
incheon varningar och lynchning är ett verktyg
som du kanske vill använda i fall
du använder Debian paket det är en är
en linter för David paket och det kan
meddela dig om saker som okej det finns en
binär i paketet och det saknas
en manualsida så låt oss anta morse
är inte borta och räkningen är att bygga
dess ok så förutom grafer och
rapportering vi måste också ha
Debian-paket och på denna punkt är det
återigen kastas mot en grund och ful
säger okej det är en det är en Debianpaket
det är faktiskt trevligt, men det kommer från
någon gren som jag inte vet att det ser
som om det kommer från def förpackning
Jag tar inte det så det i princip kasta
bort så man kan säga okej detta är
detta är ett ganska meningslöst exempel
ja men det är grunden för byggnaden
andra saker på toppen som är svängen
sig vara ganska användbar när du har
dem till exempel med hjälp av denna detta
pipeline och använda enda punkt a
Grunden för att avgöra huruvida paket
bör slå förvaret kan du
gör saker som okej vi kan göra nattliga
ombyggnad av alla Debianpaket som helst
tid gick aldrig kommer att drabba alla förvaret
men vi kan se saker som att ändra en
PI eller gått förpackningar eller brott på
förpackade med sådana sådana fall
en annan intressant faktorer och jag vill
att bara mycket snabbt hoppa på det
eftersom jag redan över tiden men bara
för att ge dig ett intryck
det ger dig även möjlighet att tillhandahålla användning
fall som varför inte skapa en speciell
fördelning på applet server som
kallas def förpackningar och om vi hit
sådan annan positiv om om en
paketet träffar ett sådant förvar det kunde
gå till döden förpackning är detta
i detta exempel så att den inte går alltför
instabil det går att ha förpackningar
och därifrån vi har en regelbunden cab och
förvaret så att den kan användas internt
av QA-avdelningen kan användas av av
utvecklare själv och detta gör det möjligt för
exempel att göra stora refacto utan
bryta instabil för två månader eller
tre månader eftersom utvecklaren kan
plocka någon källa paket som han vill eller
någon databas som han vill hacka på det
och tryck för att åta sig att inte att inte släppa
gren men till en känd utvecklingsgren
och alla paket som faller ur
denna kända utveckling gren hit denna
mycket förvaret och aldrig
någonsin går till kunder, men som skulle
tillåta oss några några stora inre
testning och när väl refacto görs
arbetet kan helt enkelt slås samman till
frigöra praxis och du har den första
använda fall igen så självklart min tid är
över just nu vill jag bara mycket
snabbt gå över för att gå över flera
lärdomar som vi har lärt oss
kanske de är till nytta för dig jag skulle vara
bra om jag hade vetat dem innan
första är du bättre se till att du
har ett riktigt enkelt att använda pipeline och
lätt att använda medel för utvecklare punkt
se om du använder komma i ditt företag
se till att ledningen är
kontrollerbar och kan användas av få endast så
om du har om du behöver din
utvecklare att ställa Jenkins för deras
egen programvara byggnad som kan vara en
fråga eftersom vissa utvecklare, även om
Det är företagets policy att Jenkins bör
användas för att bygga vissa utvecklare
säger Japp jag strunta i det
fina andra kommer att säga ja jag ska
ta Jenkins för att bygga men jag har aldrig
hört talas om enhetstester och jag bryr mig inte
om grafer om enheten testar ok fina
andra kommer att säga okej jag vet hur man
hur man analyserar che enhet testresultat
med Jenkins som är bra och han är glad
men han glömde att det till exempel
kodtäckning samt så det skulle vara
bra att se till att du kan
abstrakt från utvecklare och du
kräver inte en utvecklare att konfigurera
Jenkins han kan ta en titt på det
inga problem men i grunden är det bättre att
ge honom eller henne jag tror det är
viktigt att få tjänster igång
real snabbt så inte bygger inte alla
de funktioner som du tycker är
viktigt eller användbart, men börja med
viktigaste och föreskriva att
krav på att förändras över tiden mmm
de ändrar ofta oftare och
du bättre förbereda dig för det och
Jag tror att den bästa förberedelsen för
förändrade krav är att automatisera så
mycket som möjligt och automatisering innebär ok
Jag använder ansible använda dockor kock
vad du måste göra din server
konfiguration men stannar inte där
eftersom till exempel få högt ger en
API var alla projekt con kan vara
konfigureras programmatiskt så det finns
utan att behöva gå igenom inställningarna för
flera hundra projekt och kräver och
och redigera gruppmedlemskap eller redigera krokar
eller något liknande som kan vara
automatiserad bort och det bör vara
automatiserat sätt
En annan sak är om du använder Jenkins
Det finns projekt som Jenkins skott
builder jag vet inte om det är om folk
vet det, men jag tror att det är ganska bra
eftersom vi har några jag inte om
tusen kontroll butiker och ändra
enskilda delar av jobbet kräver oss en
minut göra det för hand och du kan
ha kul för de kommande två veckorna så om
du använder apparaten med Jenkins se
du rör aldrig konfigurera gränssnittet
av det undantag för att testa självklart och
den sista punkten är du bättre välja
verktyg klokt
vi började med en annan förvaret
server och utan matchup mycket mycket
utvärdering eftersom vi trodde okej vi har
vetat det från det förflutna och det är ok det det
gör sitt jobb, men vi har drabbats begränsningar
ganska snabbt och faktiskt när du
bygga en sådan pipeline integrationer kommer
över tiden och du tror okej detta är
bara man får ont dem en
debian förvaret server kan det inte vara
så svårt att slita upp det men faktiskt om
det finns fem andra tjänster som
beroende på den och på något sätt integreras med
det Det är få det knepigt
OK så det är det från mitt tal tack
mycket för att lyssna
Om du har några frågor
du kan fråga dem deras informatör fyra
minuter eller så kan du söka efter kontakten
detaljer om min webbsida
okej tack
Ja tack
se nedan jag ville fråga
bortsett från dessa utvecklingsverktyg är
det några andra delar av fri programvara
att använda från våra andra aspekter av
din verksamhet som bokföring kärna
kundrelationer kanske eller projekt
förvaltning utmärkt fråga
vi för närvarande migrerar bort från en
egen Enterprise Resource Planning
systemet till en fri programvara en det är
heter Triton Jag vet inte om dig om du
vet att skulle precis vara minst
bästa sättet för oss just nu tror jag
Jag är inte säker på att jag tror det kallas nytt
hälsa som bygger på provat på så
kanske du vill söka efter en ny hälso
att få demos och ta en titt på vad som var
möjlig
ja tack jag behöver för presentation och
Gå igenom några förenade till förgrening modell
utbilda något liknande för slags
att vi har en vi har en förgrening
modell ja och det är baserat på frigör
namn internt så det är det som jag
presenteras här är faktiskt ganska
minut fide vi har obegränsad hårt
för att förklara
så i princip har vi vi har utgåvor
med några års mellanrum eller kan inte släppa är
med några år som påpekar att ha namn
och under detta namn har vi släppt
grenar och vi har utveckling
grenar och vi har förpacknings grenar
och alla typer av saker så ja vi gör
och om du är intresserad kommer till mig
efteråt och jag kommer att förklara i detalj
till dig
Japp välkommen
ja tack ja hur hanterar ni
som även har en riktigt gammal lärare varit
som tre veckor gammal
försök att integrera den med bandet
utsläppt som veckovis eller bara gillar att försöka
slå samman dessa gamla grenar den nya versionen
som fler funktioner lagts till av den unika
i vägen och som kan orsaka andra
typ av box
ok så frågan är när vi när vi
har sådana långa utvecklings grenar som
vi använder och sedan kommer vi att paketeras
separat om vi slå ihop dem tillbaka
och faktiskt ja vi gör vi i grund och botten
ändra basåren så vad träffar utveckling
gren spelar ingen roll för oss så vi r
Det finns många många kommittéer som
bara arbetar framsteg sånt
och när de kommer tillbaka till befälhavare eller till
frigör gren de är oftast kläm
i logiska åtar med rätt begå
meddelanden och sedan hela rörledningen är
ombyggda eller mjukvaran byggs så
vad vi inte gör är att vi inte tar
utveckling Debianpaket som drabbade en
utveckling förvaret och flytta den till
den instabila eller stabila förvar så vi
se till att alla bygger faktiskt använder
vägen med utsläpp i det så vi
aldrig ta binära Debianpaket för
döv för vad vi alla vi alltid
bygga den typ av saker
ok

Share this subtitle


Description