Det bättre CI-verktyget 2022?

By rik

Låt oss granska skillnaderna mellan dessa två välkända instrument för kontinuerlig integration.

Under det senaste decenniet har mjukvaruutvecklingens livscykel genomgått en markant förändring.

Tidigare var vattenfallsmodellen standard, följt av agila metoder med iterativ utveckling. Nu, med DevOps, sker både utveckling och drift i en iterativ och kontinuerlig process tills hela applikationen är fullständigt utvecklad och driftsatt.

Begreppet CI/CD, vilket står för kontinuerlig integration och kontinuerlig leverans, har blivit allmänt vedertaget. Det är en DevOps-strategi som effektiviserar och påskyndar utveckling och leverans av applikationer på ett tillförlitligt sätt. Metoden automatiserar alla steg, från affärskrav till produktionsdriftsättning, med hjälp av ett CI/CD-verktyg. Detta är ett avsevärt förbättrat och säkrare alternativ jämfört med manuell hantering.

Idag finns en mängd olika CI/CD-verktyg tillgängliga, vilket kan göra valet av rätt verktyg till en utmaning.

Varför välja Jenkins?

Jenkins framstår som det mest populära verktyget för kontinuerlig integration, med öppen källkod. Det är en de facto standard för lösningar inom kontinuerlig integration.

Jenkins kan installeras på vanliga operativsystem som Windows och Linux, eftersom det är baserat på Java. Ursprungligen utvecklades det som ett verktyg för att automatisera byggprocessen för Java-applikationer. Sedan dess har det genomgått en omfattande utveckling och erbjuder nu över 1400 plugins för sömlös integration med olika plattformar och verktyg.

Jenkins är en central komponent i processen för kontinuerlig integration och kontinuerlig leverans i mjukvaruutvecklingen. Det är enkelt att installera och erbjuder en användarvänlig instrumentpanel för projekthantering, lättillgänglig via en webbläsare.

Utvecklare använder Jenkins för att automatisera bygg-, integrations-, test- och driftsättningsprocesser. Först checkar utvecklare in sin kod, därefter hämtar Jenkins den modifierade källkoden och initierar en byggprocess samt eventuella tester. När bygget är klart visas resultatet på Jenkins instrumentpanel, och ett meddelande kan skickas till utvecklaren, om så konfigurerats.

Varför välja TeamCity?

TeamCity är en kommersiell CI/CD-server, likt Jenkins också baserad på Java. Det är ett verktyg för byggautomation och hantering, skapat av JetBrains.

TeamCitys motto är ”Kraftfull kontinuerlig integration direkt ur lådan”, och verktyget lever upp till sitt rykte. Det erbjuder nästan samma funktionalitet som Jenkins, men med några kompletterande funktioner. TeamCity kan integreras med Docker för att automatiskt skapa behållare med docker-compose. Det erbjuder också integrerat stöd för Jira för enkel problemspårning.

TeamCity har stöd för .NET-ramverket och kan enkelt integreras med flera IDE:er som Eclipse, Visual Studio m.fl. Med integration för att bygga artefaktlager kan TeamCity lagra artefakterna antingen på TeamCity-serverns filsystem eller på extern lagring.

TeamCitys kostnadsfria Professional-serverlicens tillåter skapandet av 100 byggen och 3 byggagenter utan kostnad.

Jenkins kontra TeamCity

Öppen källkod kontra kommersiell lösning

Den mest grundläggande skillnaden är att Jenkins är ett verktyg för kontinuerlig integration med öppen källkod, medan TeamCity är ett kommersiellt verktyg. Jenkins är licensierat under MIT-licensen och stöds av utvecklare över hela världen. TeamCity utvecklas och underhålls av sitt moderbolag, JetBrains.

Användargränssnitt

TeamCity erbjuder ett tilltalande användargränssnitt, vilket lockar många nybörjare inom kontinuerlig integration som söker ett lämpligt CI-verktyg. I TeamCitys gränssnitt är det möjligt att tagga, kommentera och fästa objekt för att förbättra organisationen.

Jenkins användargränssnitt är mer traditionellt och mindre visuellt tilltalande, med tydligt utrymme för förbättring ur ett UI-perspektiv.

Exklusiva Funktioner

Jenkins har inte en mängd inbyggda funktioner, men dess omfattande plugin-ekosystem tillhandahåller ett brett spektrum av funktionalitet som andra CI-verktyg saknar. Med hjälp av dessa plugins kan Jenkins användas för att skapa byggen och analysera kod, vilket leder till förbättrad kodkvalitet.

TeamCity levereras å andra sidan med en uppsättning färdiga funktioner utöver de vanliga för CI-verktyg. Det stöder olika plattformar, inklusive Java, Ruby, och .NET. Det erbjuder också möjligheten att bygga Docker-bilder direkt. Med integrerat stöd för Bugzilla och Jira underlättas felspårning. Dessutom lagras byggändringar och felhistorik för att bevara tidigare information, underlätta återskapande av tidigare byggen, samt generera rapporter av testhistorik.

Installation

För att installera Jenkins krävs att Java är installerat på systemet. Installationsprocessen är enkel när Java är på plats. Efter installationen kan Jenkins användas via dess webbgränssnitt.

Installationen av TeamCity är också enkel. Man behöver ladda ner TeamCity Server och sedan följa instruktionerna i dokumentationen.

Integrationer

När det gäller integrationsmöjligheter är det svårt att hitta ett CI-verktyg som kan matcha Jenkins. Dess stora popularitet grundar sig på det stora utbudet av gratis plugins.

TeamCity erbjuder inte lika många integrationer som Jenkins, men det har ett antal exklusiva integrationer, vilket stärker dess ”out-of-the-box”-funktionalitet. Det har inbyggt stöd för .NET-ramverket och integration med Visual Studio Team Services samt molnintegration med leverantörer som AWS, Azure, GCP och VMware.

Säkerhet

En fördel med TeamCitys kommersiella natur är att det får fullt stöd av JetBrains. Därför får säkerhetsfrågor högsta prioritet. TeamCity erbjuder integration med Snyk-säkerhetsplugin, som utför sårbarhetsskanningar i byggprocessen, vilket hjälper till att identifiera och åtgärda risker och hot.

Eftersom Jenkins är öppen källkod kan riskanalysen fördröjas, eftersom ansvaret vilar på utvecklargemenskapen.

Gemenskap

Jenkins har en större gemenskap än TeamCity. Som ett projekt med öppen källkod har det möjliggjorts för alla utvecklare att bidra. Nya utvecklare bidrar regelbundet till projektet med nya funktioner och förbättringar.

TeamCity, som är ett kommersiellt verktyg, underhålls av JetBrains-teamet och har en professionell supportgemenskap.

Prissättning

Jenkins är gratis att använda tack vare att det är öppen källkod, vilket gör det till ett populärt val för många organisationer. Genom att välja Jenkins kan organisationer spara betydande summor pengar genom att undvika kostnader för CI-verktyg.

TeamCity är däremot inte gratis. Det erbjuds med två typer av licenser: Professional och Enterprise. En Professional-serverlicens tillåter användning av 100 byggkonfigurationer och 3 byggagenter kostnadsfritt. Därefter kostar varje ytterligare byggagent 299 $ per 10 byggkonfigurationer. En TeamCity Enterprise-serverlicens börjar med 3 agenter, ger obegränsat antal byggkonfigurationer och kostar från 1999 $.

Jämförelsetabell

Jenkins TeamCity
Skrivet i Java Java
Utvecklare CloudBees, Kohsuke Kawaguchi, gratis och öppen källkod JetBrains
Licens MIT-licens Proprietär kommersiell programvara
Funktioner
  • Öppen källa
  • Rik uppsättning plugins
  • Enkel installation
  • Stöd för att bygga pipelines
  • Workflow plugin
  • Massor av integrationer
  • Hosted internt
  • Bygg, distribuera eller starta något asynkront
  • HTML Publisher
  • Gasspjäll bygger
  • Nyckelintegrationer
  • Molnintegration
  • Bygg historia
  • Bygg infrastruktur
  • Spårning av kodkvalitet
  • VCS interoperabilitet
  • System underhåll
  • Användarhantering
  • Utökningsbarhet och anpassning
  • Förtestad Commit
Enkel användning Ja Ja
Användargränssnitt Mycket grundläggande gränssnitt Den har ett attraktivt och vackert gränssnitt
Gemenskap Eftersom det är öppen källkod är gemenskapen större Mindre jämfört med Jenkins
Prissättning Fri Professional Server-licens kostar 299 $ per byggagent efter 3 gratis byggagenter, medan Enterprise Server-licenskostnader börjar på 1999$
Integrationer 1400+ integrationer 300+ integrationer
Säkerhet Mindre säkrad Mer säkrad
API Stöder JSON, Python, RESTful API: XML Stöder RESTful API med hjälp av servicemeddelanden och skapar plugins med Open API
Stöd för programmeringsspråk Java, PHP, C, C++, Fortran, Python och många fler skriptspråk Python, C++, Java, .NET, Ruby, PHP, Node.js och mer
Containerstöd Använder Docker-plugin för Jenkins Förstklassigt Docker-stöd ur lådan
Släppcykel Mer frekvent Mindre frekvent
Rapportering Ger en detaljerad rapport för konstruktioner och tester Ger rapporter med bättre webbgränssnitt

Slutsats

Nu har vi granskat skillnaderna mellan de två mest populära verktygen för kontinuerlig integration: Jenkins och TeamCity.

När du väljer ett CI-verktyg för din organisation är det viktigt att utvärdera parametrar som värdalternativ, integrationer, återanvändbara kodbibliotek, containerstöd och användarvänlighet. Det CI-verktyg som bäst uppfyller dessa krav är det mest lämpliga valet.

Om du fortfarande känner dig osäker är det en god idé att testa både Jenkins och TeamCitys gratisversioner. Genom att skapa några byggen med dessa plattformar kan du få en tydligare bild av vilket verktyg som passar bäst för dina projekt inom kontinuerlig integration.