Kapitel 1 Hvad er Jenkins?
Jenkins er en skalerbar, kontinuerlig integrationsmotor.
Bruges primært til:
- Byg/test softwareprojekter løbende og automatisk.
- Jeg overvåger nogle opgaver, der udføres regelmæssigt.
Egenskaber, som Jenkins besidder, inkluderer:
- Let at installere – bare deploy jenkins.war til en servlet-container uden databaseunderstøttelse.
- L Let at konfigurere – alle konfigurationer opnås via webgrænsefladen, som den leverer.
- l Integreret RSS/E-mail offentliggør buildresultater via RSS eller notifikationer via e-mail, når buildet er færdigt.
- Jeg genererer JUnit/TestNG testrapporter.
- l Distribueret build-understøttelse Jenkins gør det muligt for flere maskiner at bygge/teste sammen.
- l Filgenkendelse: Jenkins kan spore, hvilke jars der genereres af hvilken build, hvilken version af jar der bruges af hvilken build osv.
- l Plugin-understøttelse: Udvidelser understøttes, så du kan udvikle værktøjer, der passer til dit teams brug.
1 Oprindelse af Jenkins
Kontinuerlig integration (CI) er blevet en almindelig praksis for mange softwareudviklingsteams med fokus på at sikre kodekvalitet gennem hele softwareudviklingslivscyklussen. Det er en praksis, der er designet til at lette og styrke softwareudviklingsprocessen. Og det kan hjælpe dit udviklingsteam med at håndtere udfordringer såsom:
- l Software-byggeautomatisering: Når konfigurationen er færdig, vil CI-systemet bygge målsoftwaren efter den forudbestemte tidsplan eller for en specifik begivenhed.
- l Byg bæredygtige automatiserede kontroller: CI-systemet kan løbende indhente ny eller modificeret check-in kildekode, det vil sige, når softwareudviklingsteamet periodisk skal tjekke den nye eller modificerede kode, vil CI-systemet konstant bekræfte, om den nye kode har forstyrret den succesfulde opbygning af den oprindelige software. Dette reducerer den tid og indsats, udviklere bruger på at tjekke for ændringer i deres indbyrdes afhængige kode (for at være ligetil, hehe).
- l Byg bæredygtig automatiseret testning: byg en udvidet del af tjekket, udfør et foruddefineret sæt testregler efter opbygningen og udløs notifikationer (e-mail, RSS osv.) til de relevante parter efter færdiggørelse.
- l Automatisering af efterfølgende processer efter generering: Når automatiserede kontroller og tests er gennemført med succes, kan yderligere opgaver være nødvendige i softwarebygget, såsom at generere dokumentation, pakke software og implementere komponenter i et runtime- eller softwarerepository. Dette gør det muligt at gøre komponenterne tilgængelige for brugerne hurtigere.
- De minimumskrav, der kræves for at implementere et CI-system, er et arkiv med tilgængelig kildekode og et projekt med build-scripts.
Følgende diagram opsummerer den grundlæggende struktur af et CI-system:
Systemets komponenter fungerer i følgende rækkefølge:
1. Udvikleren tjekker koden ind i kildekodearkivet.
2. CI-systemet opretter et separat arbejdsområde for hvert projekt. Når en ny build forudindstilles eller anmodes, gemmer den kildekoden fra kildekode-repositoryet til det tilsvarende arbejdsområde.
3. CI-systemet vil udføre byggeprocessen i det tilsvarende arbejdsområde.
4. (Hvis konfiguration findes) Når buildet er færdigt, udfører CI-systemet et defineret sæt tests i et nyt artefakt. Udløs notifikationer (e-mail, RSS osv.) til de relevante parter efter afslutningen.
5. (Konfiguration, hvis til stede) Hvis buildet lykkes, pakkes dette artefakt og overføres til et deployeringsmål (f.eks. applikationsserver) eller gemmes som en ny version i softwarearkivet. Et softwarerepository kan være en del af et CI-system eller et eksternt repository, såsom en filserver eller en hjemmeside som Java.net, SourceForge osv.
6. CI-systemet initierer normalt tilsvarende handlinger baseret på anmodninger, såsom øjeblikkelige builds, generering af rapporter eller hentning af nogle opbyggede artefakter.
Jenkins er et sådant CI-system. Tidligere kendt som Hudson.
Her er nogle grunde til at bruge Jenkins:
- Det er det nemmeste at installere og konfigurere blandt alle CI-produkter.
- l Baseret på webadgang er brugergrænsefladen meget venlig, intuitiv og fleksibel, og i mange tilfælde giver den øjeblikkelig feedback fra AJAX.
- l Jenkins er udviklet på Java (hvilket er meget nyttigt, hvis du er Java-udvikler), men det er ikke begrænset til at bygge Java-baseret software.
- l Jenkins har et stort antal plugins. Disse plugins udvider funktionaliteten i Jenkins betydeligt; De er alle open source, og de kan installeres og administreres direkte via webgrænsefladen.
1.1 Jenkins' mål Jenkins' hovedmål er at overvåge softwareudviklingsprocessen og hurtigt afsløre problemer. Derfor kan det sikre, at udviklere og relateret personale sparer tid og kræfter og forbedrer udviklingseffektiviteten.
CI-systemets hovedrolle gennem hele udviklingsprocessen er kontrol: når systemet opdager en ændring i kodearkivet, delegerer det opgaven med at køre buildet til selve build-processen. Hvis buildet fejler, underretter CI-systemet den relevante person og fortsætter derefter med at overvåge repositoryet. Dens karakterer virker passive; Men det afspejler hurtigt problemet.
Især har det følgende fordele:
- l Jenkins Alle konfigurationer kan laves via webgrænsefladen. Nogle konfigurationer som MAVEN_HOME og e-mail behøver kun at blive konfigureret én gang, og alle projekter kan bruges. Selvfølgelig kan det også konfigureres ved at ændre XML'en.
- l moduler, der understøtter Maven, har Jenkins optimeret Maven, så det automatisk kan genkende moduler, og hvert modul kan konfigureres som et job. Ret fleksibel.
- l Testrapportaggregering, testrapporterne for alle moduler aggregeres sammen, og resultaterne er tydelige ved brug af andre CI'er, hvilket er en næsten umulig opgave.
- l Artifact fingerprint, resultatet af hver build er godt automatisk styret, og det kan nemt gennemsøges og downloades uden nogen konfiguration.
|