Att välja rätt verktyg för din kritiska infrastruktur är en utmanande uppgift. För att hjälpa dig att fatta ett välgrundat beslut om system för hantering av binära repositories har vi granskat tre ledande lösningar. Så hur står sig Artifactory, Nexus och ProGet i jämförelse?
Sofus Albertsen
Sofus is a Continuous Delivery Trainer and Consultant in Copenhagen. Before joining Eficode Praqma he was assistant professor on an Applied Science Bachelor program. He flies kites and in the summer he escapes the modern world by spending two weeks in a beach hut without electricity or network coverage.
Observera: Den första versionen av den här artikeln publicerades i september 2018. Sedan dess har mycket förändrats. Vi har gått igenom alla tre produkter noggrant för att uppdatera den gamla artikeln och inkludera förändringarna.
Tiden då vi kunde lägga vår release på en delad enhet eller en offentlig FTP-server och ändå kalla oss professionella mjukvaruutvecklare är förbi. Vi kan utan problem hantera vår källkod med versionshanteringssystem i ett moget ekosystem av repository managers som Bitbucket eller GitHub. Men när det gäller våra produkter, resultatet av våra byggen, kör vi fast. Binary repository managers (BRM) hjälper till med spårbarhet genom att upprätthålla en enda tillförlitlig källa för binärer och kan även korta ledtiderna genom att eliminera redundanta byggen.
I en BRM lagrar vi våra DLL:er, JAR-filer och container images. En BRM kan hjälpa dig att hantera säkerhet och licenser genom att fungera som proxy för publika pakethanterare som pip eller apt-get.
Experimentet
Men vilken ska du välja? Och hur fattar du det beslutet? Vi bestämde oss för att undersöka för- och nackdelarna med de populäraste binary repository managers.
I vårt experiment valde vi att jämföra: Artifactory från JFrog (v.7.7.3), Nexus från Sonatype (v.3.26.1) och ProGet från Inedo (v.5.3.10).
Alla utvecklas aktivt, stöder flera repository-typer och erbjuder supporttjänster när du köper en licens.
Vi valde att jämföra binary repository managers utifrån följande kriterier, som täcker hela spannet från Dev till Ops:
Repositories
Flexibilitet och sökbarhet
REST API och verktyg
CI/CD-promotering
Rensning
Användarautentisering
Användar- och åtkomsthantering
Lagring
Utbyggbarhet
Detta gav oss en bred grund för att utse en vinnare. Prissättning har medvetet uteslutits ur jämförelsen eftersom betalningsmodellerna varierar kraftigt beroende på vilken funktionalitet som erbjuds. Experimentet genomfördes i den vanligaste miljön – en installation med en nod och en pro- eller basic-licens. Detta täcker de flesta användningsfall vi ser hos våra kunder.
Testlicenser
Det finns sällan en lösning som passar alla, och BRM:er är inget undantag. Därför kan det vara bra att testa var och en för att se hur de passar ert arbetssätt.
Du kan använda våra installationsskript, som innehåller den information du behöver för att snabbt komma igång med utvärderingarna.
Artifactory
Registrera dig bara för en testlicens på deras webbplats, så får du den via e-post. Det är en 30-dagars testperiod som kan förlängas om du kontaktar säljteamet.
Nexus
Sedan den senaste uppdateringen av den här artikeln har Nexus-teamet förbättrat sin hantering av testnycklar. Besök bara deras webbplats och begär en 14-dagars testperiod. Kort därefter skickas instruktioner för hur du kommer igång till din inkorg.
ProGet
För att skaffa en testlicens för ProGet besöker du https://my.inedo.com och begär en testlicensnyckel i webbgränssnittet. Utvärderingsperioden är 30 dagar.
Vinnare
Artifactory och ProGet vinner den här kategorin med liten marginal eftersom de erbjuder en utvärderingsperiod som är dubbelt så lång som Nexus. Anskaffningshastigheten var densamma för alla tre deltagare, och samtliga erbjuder Docker-images för snabb utvärdering.
Dev
Repositories
Stöd för flera repositorytyper är avgörande om din organisation använder olika språk på olika plattformar. Nedan finns en lista över de repositorytyper som respektive plattform har stöd för. Jämför den med dina behov.
X = kommersiell support C = community-support U = inofficiell support “()” betyder att stödet fanns vid den senaste granskningen “{}” betyder att stöd ges inofficiellt via andra repositorytyper Grönt betyder att stödet har lagts till sedan den senaste utvärderingen
Artifactory | Nexus 3 | ProGet | |
Bower | X | X | X |
Docker | X | X | X |
GitLFS | X | X | |
Maven | X | X | X |
.NET/NuGet | X | X | X |
npm | X | X | X |
PyPi | X | X | X |
Raw | X | X | X |
RubyGems | X | X | X |
RMP (Yum) | X | X | X |
Apt (Debian) | X | X (C) | X |
Conan | X | X (C) | |
CPAN | C | ||
ELPA | C | ||
Helm | X | X (C) | X |
Eclipse P2 | X | X (C) | |
R | X | X (C) | |
Chef | X | C | |
CocoaPods | X | X | |
Go | X | X | |
Gradle | X | {X} | |
Ivy | X | {X} | |
Opkg | X | ||
PHP Composer | X | C | |
Puppet | X | C | |
SBT | X | {X} | |
Vagrant | X | ||
Powershell | X | X | X |
Chocolatey | X | X | X |
Romp | X | ||
VSIX | X | ||
Upack | X | ||
Conda | X | X | |
APK (Alpine Linux) | X | C | |
Android | X | ||
MSBuild | X | ||
Cargo | C |
Mer information finns på respektive leverantörs webbplats:
Artifactory-typer: JFrog Artifactory supports main packages, build tools & CI servers
Nexus-typer
Artifactory
Artifactory kommer med ett mycket stort antal repositories direkt från start. JFrog tillåter inte användardefinierade repositories.
Nexus
Sedan den senaste granskningen har Nexus uppgraderat fem community-repositorytyper till officiellt stödda typer. Ytterligare fem community-repositorytyper har också tillkommit, vilket har ökat antalet stödda repositories kraftigt under de senaste två åren.
ProGet
ProGet har minst antal repositorytyper och ingen möjlighet att lägga till egna. Det är dock värt att nämna att företaget arbetar med att stödja nya typer utifrån önskemål från communityn. Läs mer här.
Vinnare
Efter den senaste granskningen tog Artifactory hem segern tack vare sitt stora utbud av stödda repositorytyper. Sedan dess har Nexus tydligt höjt nivån, och medaljen i den här kategorin behöver delas mellan de två.
Artifactory har en liten ledning i antalet stödda repositorytyper, men Nexus erbjuder OSGi-gränssnitt som gör att du kan skapa egna repositorytyper vid behov.
Flexibilitet / sökbarhet
När alla dina binärer finns på ett och samma ställe kan det stora antalet artefakter kännas överväldigande, och det kan vara svårt att hitta exakt den artefakt du behöver. Vissa organisationer har arbetsflöden som inte stöds av standardlayouterna för repositories, vilket gör flexibilitet till en styrka.
Artifactory
Artifactory har ett inbyggt koncept för anpassade layouter som gör att du kan skapa egna layouter för olika repositorytyper. Varje repository har en typ (Maven, NPM osv.) och en kopplad layout. Var försiktig när du använder anpassade layouter, eftersom de flesta repositorytekniker på klientsidan (som Gradle, PIP osv.) inte automatiskt kan identifiera en icke-standardiserad layout. Detta hade kunnat lösas om Artifactory översatte layouter dynamiskt till endpointen, men den funktionen är tyvärr inte implementerad och finns inte heller med i planen.
När det gäller sökbarhet erbjuder Artifactory många olika sätt att genomföra uppgiften. Du kan söka efter namn, checksumma, binärtyp, egenskaper med mera direkt i gränssnittet. Om du vill kombinera alla möjliga söksätt kan du använda Artifactorys eget frågespråk, AQL. Det är inte tillgängligt i gränssnittet, utan endast via REST API:t och verktyg.
Nexus
Nexus erbjuder ingen flexibilitet för layouter, men du kan driftsätta utanför layouten. Då kan du endast hämta artefakterna via REST API:t, och inte exempelvis via Maven/Gradle.
Sökfunktionerna i gränssnittet är i nivå med Artifactory, med flera aktiva sökkriterier samtidigt för både namn, attribut, version och checksumma.
Sedan 2018 finns deras sök-API, som använder samma funktioner som gränssnittet. På så sätt kan du söka efter och ladda ner artefakter utifrån flera egenskaper. Ett stort plus för automatisering.
ProGet
ProGet har inget koncept för layout. I stället laddar du upp de filer som krävs till ProGet, som placerar dem i rätt hierarkisk ordning utifrån repositorytypen. Om du kan leva med det här strikta sättet att hantera filer är det en ren implementationsdetalj som minskar komplexiteten.
Sökfunktionen är kopplad till ett specifikt repositoryflöde, vilket innebär att du måste veta var artefakten är lagrad innan du kan hämta den. I vårt test verkade sökrutan endast fungera för artefaktnamn.
Vinnare
Artifactory tack vare sitt eget frågespråk, AQL, tätt följt av Nexus. Både Nexus och Artifactory erbjuder många sätt att söka och friheten att driftsätta paket utanför standardlayouten. ProGet verkar mycket begränsat, omoget när det gäller sökfunktioner och erbjuder ingen flexibilitet för layouten, om du behöver det.
Interaktioner: REST API och verktyg
Ett användbart webbgränssnitt är bra för mänsklig interaktion, men i en modern mjukvaruutvecklingspipeline sker de flesta dagliga interaktionerna i pipelines. Alla testade lösningar stöder uppladdningar via verktyg som Gradle och NPM, men funktioner som att skapa repositories och genomföra promotion är ännu inte standard. Därför kan ett bra REST API tillsammans med CLI-verktyg för att automatisera det dagliga arbetet vara mycket värdefullt för ditt team.
Artifactory
Artifactory har ett väl dokumenterat REST API som du hittar här.
Det hanterar nästan alla tänkbara åtgärder, från vardagliga uppgifter som att ladda upp artefakter till att uppdatera användare och konfigurera reverse proxies. Gränssnittet använder också API:t i stor utsträckning, vilket visar verktygets mognad.
Dessutom erbjuder de ”jFrog CLI”, en applikation som kan användas för flera av deras produkter, inklusive Artifactory, när du inte har din REST-klient till hands. jFrog CLI stöder bland annat uppladdning, nedladdning, flytt och kopiering av artefakter samt hantering av builds.
För .NET-fans har Artifactory till och med exempel på hur du kan lägga verktyget bredvid ditt MSBuild-projekt och använda kommandona som delar av buildprocessen för att ladda upp de resulterande artefakterna.
Nexus
Som nämnts tidigare släppte Nexus 2018 ett nytt och betydligt förbättrat API. De erbjuder både en Open API-browser i gränssnittet under administrationssektionen och Swagger-filer som dokumenterar funktionerna i den version som systemet kör.
Open API-specifikationen möjliggör automatisk generering av klient- och serverimplementationer i de flesta populära språk. Det gör det mycket smidigt att skriva klienter som använder API:t och ger uttömmande, språkoberoende dokumentation av API:t. Det är en mycket bra funktion.
API:t erbjuder endpoints för många, om inte alla, funktioner i Nexus, så att du kan göra ändringar i användare, repositories, bloblagring med mera. De har uppenbarligen lagt ner tid på att göra detta rätt.
Nexus använder också konceptet med en pagineringstoken. I stället för att returnera ett stort antal objekt returnerar det en mindre uppsättning, och tokenen kan skickas med i en fråga för att hämta ”nästa sida”. Enligt våra tester är gränsen för listning av assets 20 objekt och den kan inte justeras. Fördelen med den här strategin är att paginering blir enkel att implementera när du använder deras API, även om pagineringsmetoden uppmuntrar till återhållsamhet med dataöverföringar.
För att utöka API:ts funktioner exponerar Nexus en endpoint för att ladda upp och köra Groovy-skript. Det bör användas med extrem försiktighet i produktion, men möjligheten att aggregera data närmare källan och bara skicka tillbaka sammanfattningen kan spara mycket bandbredd. Funktionen kan också uttryckligen tilldelas roller och användare för att säkerställa att den endast är tillgänglig vid ett absolut behov. Exempel på användningsfall för skriptendpointen finns i deras GitHub-repository.
Nexus erbjuder inte officiellt något Nexus CLI, även om de har publicerat ett försök för open source-communityt. Tyvärr verkar det inte ha skett någon aktivitet under de senaste sju månaderna.
ProGet
ProGet har ett mycket komplicerat och sporadiskt beskrivet sätt att ladda upp paket och använda feeds. Det innebär till exempel att det inte går att ladda upp ett Maven-paket till ProGet via deras API. De tillhandahåller endpointen, men du måste själv ta reda på hur Maven-repositoryt används eller abstrahera bort det med ett publiceringsverktyg från tredje part, till exempel Gradle.
ProGet medger öppet att de bara skriver en minimal mängd dokumentation och hänvisar till Google-sökningar för att lösa problem med deras API. Det säger sig självt att detta tillvägagångssätt är bristfälligt och behöver förbättras.
Senast vi tittade på ProGets API innehöll det endast ett Assert Directory API och ett Package Promotion API. Sedan den senaste revideringen av den här artikeln har ett antal nya endpoints tillkommit. Det innehåller nu Feed Management API, Repackaging API, Connector Health API och Webhook Management API. Dessa tillägg gör det möjligt att hantera artifacts med hjälp av automatisering, men det återstår fortfarande en del innan behovet av UI helt kan elimineras, eftersom API:t fortfarande saknar funktioner för användarhantering.
I skrivande stund har ProGet meddelat att ett Security Management API kommer snart. Kritiken är dock fortfarande giltig tills detta API har släppts.
ProGet har inget CLI-verktyg tillgängligt.
Vinnare
I den första versionen utsågs Artifactory till vinnare i den här kategorin, men sedan dess har Nexus förbättrats på varje punkt. Deras satsning på Open API/Swagger och möjligheten att utöka API:t vid behov ger dem en liten fördel framför Artifactory, men det är ett jämnt lopp.
Om du har turen att arbeta i dotnet-världen har ProGet förbättrats sedan sist och erbjuder fler möjligheter till automatisering. Det finns dock fortfarande komplikationer med att ladda upp Maven och andra repositorytyper via API:t.
CI/CD-promotion
Artifactory
Artifactory har infört konceptet builds i sin domänmodell och sitt UI. I kombination med promotion-funktionen ger domänmodellen en detaljerad spårbarhet över var dina artifacts tidigare har lagrats. Promotion-funktionen kan nås via JFrog CLI, REST eller Jenkins Plugin for Artifactory.
Funktionaliteten för metadata är mogen och gör det möjligt att lagra egenskaper med både ett och flera värden för alla artifacts och builds.
Nexus
Nexus har stöd för promotion/flytt av artifacts. Promotion-funktionen kan endast nås via REST API:t. De två repositories som du flyttar mellan måste dock ligga i samma blob-store (se backend-avsnittet för mer information) för att du ska kunna genomföra en flytt.
Nexus har stöd för taggning av artifacts, men funktionen verkade bara fungera som avsett när en unik tagg användes för varje buildjobb. Vi stötte på ett problem när taggade objekt skulle flyttas till ett repository som redan innehöll objekt med samma tagg. Det innebär att du inte kan ha flera enhetsteststeg i din pipeline som promoverar enskilda artifacts med samma tagg. Sonatype skriver i sin dokumentation att en tagg ska användas per buildjobb, men då kan vi inte flytta delar individuellt, och alla artifacts från en build måste laddas upp och promoveras i bulk.
ProGet
Metadata stöds inte i ProGet på något sätt (utöver namn, beskrivning och version). Om du vill flytta/promovera din artifact från ett repository till ett annat måste du göra det via REST API:t.
ProGet erbjuder ingen spårbarhet över var artifacts har lagrats. ProGet har inte stöd för taggning av artifacts.
Vinnare
Artifactory vinner tack vare spårbarheten över var artifacts tidigare har lagrats.
Det möjliggörs genom att de inkluderar ett build-objekt i sin domänmodell, vilket gör det enkelt och smidigt att flytta de artifacts du vill ha.
Rensning
Lagringsperioder
Ett CI/CD-flöde innebär att du bygger många versionshanterade binära artifacts. På mycket kort tid kan du upptäcka att lagringsutrymmet ofta tar slut. God kontroll över vad som ska behållas och vad som ska tas bort är avgörande för att hålla lagringsbehovet på en rimlig nivå. Vissa branscher har dessutom krav på vilka artifacts som måste vara tillgängliga och hur länge, för att uppfylla regelefterlevnad. I dessa fall är det inte bara viktigt utan avgörande att ha tydligt definierade rensningspolicyer.
Artifactory
Artifactory har inga inbyggda mekanismer för lagringstid. I stället använder det sitt frågespråk AQL för att identifiera artifacts och CLI eller REST för att ta bort dem. Läs mer.
Det gör det lite svårare än de andra, men betydligt mer flexibelt när du vill skapa regeluppsättningar baserade inte bara på tid eller användning, utan även på sökfrågor. Kan du skapa en fråga kan du också ta bort resultaten.
Nexus
Nexus erbjuder schemalagda rensningsuppgifter för alla sina repository-typer. Du kan ange ett filter som beskriver vilka artifacts rensningspolicyn gäller för. Filtret använder reguljära uttryck för att matcha filer och stöder tid, nedladdningar och releasetyp som kriterier.
ProGet
Rensning i ProGet hanteras med det som kallas Retention Rules. Med dessa regler kan du ta bort artifacts beroende på senaste användning, totalt antal artifact-versioner eller mönster i regex-format.
ProGet har också konceptet Quotas. Du kan ange om reglerna ska köras varje gång (ingen kvot), när feeden överstiger en viss storlek eller när artifacts som matchar lagringsregeln överstiger en viss storlek. När gränsen nås håller ProGet kvoten på den nivån genom att ta bort filer.
Förra gången kritiserade vi ProGet för att det saknade ett sätt att testa raderingspolicyn. Den kritiken gäller inte längre, eftersom ProGet nu har den funktionen. ProGet erbjuder också en funktion som kallas DryRun, som gör det möjligt att testköra utan att påverka artifacts.
Vinnare
Nexus har det minst mogna UI:t för att skapa rensningsregler, men funktionaliteten är i nivå med ProGet. ProGets lösning är däremot mer intuitiv, vilket underlättar när du skapar policyer som riskerar att ta bort artifacts som inte är avsedda att raderas. Trots det har Artifactory det mest avancerade sättet att rensa, och det är vårt val, även om du behöver köra en separat tjänst för det.
Drift
Användare och autentisering
Alla BRM:er har en egen databas där du kan skapa användare, och de integrerar med olika andra tjänster. Integration med Active Directory eller liknande är avgörande för företag och administratörer som vill undvika att behöva lägga till och ta bort användare på flera ställen.
Artifactory
LDAP; Active Directory; stöd för OAuth med GitHub, Google, Cloud Foundry och OpenID; samt stöd för SAML SSO, så att du kan konfigurera en egen leverantör, till exempel lösenordshanteraren LastPass eller liknande. Observera dock att GitHub-integrationen endast fungerar med GitHub Enterprise, eftersom den ger inloggningsbehörighet till _alla_ i instansen. Det innebär att alla med ett github.com-konto kan logga in om du väljer det alternativet.
Nexus
LDAP, Atlassian Crowd, SAML och RUT
ProGet
LDAP, Active Directory och SAML
Vinnare
Eftersom LDAP är standarden och företagsprotokollet SAML också implementeras av alla, vinner alla.
Begränsningar för användare/grupper och roller
Att begränsa åtkomsten är en nödvändig funktion, oavsett om du är ett litet garageföretag eller ett stort företag.
Alla tre kandidater har stöd för användare, grupper och roller på ett eller annat sätt. Därför fokuserar vi i vår bedömning på användbarhet snarare än på huruvida de har begränsningar.
Artifactory
har ett behörighetssystem med användare, grupper och behörigheter, med fokus på användare som tillhör grupper med tilldelade roller. Här kallas roller för behörigheter, som beskriver vilka repositories olika grupper/användare har behörighet att hantera, ta bort/skriva över, driftsätta/cacha, kommentera eller läsa från.
Nexus
Har ett av de mest svårhanterliga och komplexa systemen för användare, grupper och behörigheter som jag någonsin har sett, och det är inte alls menat som något positivt.
De har roller, men utöver rollerna finns även privilegier. Problemet är mängden olika privilegier som kan läggas till i en roll. När hundratals olika privilegier läggs till blir det nästan omöjligt att avgöra vilken typ av åtkomst som behövs för en viss uppgift.
De har stöd för att inaktivera användare, vilket innebär att de inte kan logga in.
ProGet
ProGet har ett behörighetssystem med användare, grupper och uppgifter, där uppgifter är vad jag normalt skulle kalla roller. Du kan skapa användare utan att tilldela uppgifter, och standardinställningen är ”none”, det vill säga anonym. Det finns en mindre fördefinierad uppsättning uppgifter för att definiera global administratör, repository-administratör samt möjligheter att ladda upp, ta bort och ladda ner. Om de inte passar dina behov kan du konfigurera nya.
Vinnare
ProGet och Artifactory är ganska lika, men ProGet har en liten fördel eftersom det ger något bättre möjligheter att kontrollera andra aspekter, som att visa schemalagda uppgifter och hantera inloggningsuppgifter. Därför är ProGet vinnaren.
Lagring
Artifactory
Artifactory leder fortfarande när det gäller antalet externa fillager som stöds med enterprise-licensen. Sedan förra jämförelsen har JFrog dessutom gjort integrationen med Azure Blob Storage tillgänglig för kunder med Pro-licens från och med version 6.15.0.
Men om du vill dra nytta av det stora utbudet av tillgängliga lagringslösningar krävs fortfarande enterprise-licensen, som kostar tio gånger mer än en Pro-licens. Artifactory har binär deduplicering baserad på hash-värden, vilket innebär att du kan ha flera instanser av samma fil utan att fillagret blir överfullt.
Nexus
Nexus erbjuder två olika backend-lagringslösningar för både OSS- och Pro-versionen: lokal lagring och S3.
Det stöder flera lagringsutrymmen, så kallade ”blob stores”, och du kan ha båda typerna av lagring aktiva samtidigt. Det finns dock vissa begränsningar. Ett repository kan bara finnas i ett av lagren åt gången, och det finns inget enkelt sätt att migrera från det ena till det andra, exempelvis från lokal lagring till en S3-bucket. En annan begränsning är att du bara kan flytta artefakter från repositories som finns i samma blob store. Kom därför ihåg att ha alla repositories för en artefakts livscykel i samma lager.
Nexus erbjuder ingen funktion för deduplicering av blobbar eller artefakter, en funktion som efterfrågades för över tre år sedan.
År 2019 lanserade Nexus en ny lagringstyp, GroupBlobStore, för sina professionella kunder. En grupp är i praktiken en samling blob stores som hanteras som en enda blob, med två olika metoder för distribution mellan blob stores: ”Round Robin” och ”Write to first” – antingen växlar skrivningarna mellan alla blobbar eller så skrivs de endast till ett enskilt lager.
Sonatype rekommenderar att grupper används för att lägga till mer lagringsutrymme i en blob store med hjälp av flera enheter och/eller för att fördela skrivningar och läsningar över flera blob stores.
ProGet
ProGet erbjuder lokal lagring som standard samt S3 och Azure Blob via officiella tillägg.
De erbjuder även en guide i sju steg för att migrera repositories från lokal lagring till molnet, men inte åt andra hållet. ProGet erbjuder inte heller någon funktion för deduplicering av blobbar eller artefakter.
Vinnare
Det är svårt att välja en vinnare här. ProGet är bra med det du får direkt från start, men Nexus kan omfatta flera leverantörer av blob stores och fördela en enskild blob store över flera enheter. Du behöver fortfarande den mest omfattande licensen och konfigurationen för Artifactory för att verkligen dra nytta av dess möjligheter, men åtminstone är Azure Blob Storage nu även tillgängligt för Pro-användare. Den knappa vinnaren är ProGet.
Utbyggbarhet
Artifactory
Har ingen plugin-marknadsplats, men erbjuder ett repository med ett stort antal exempel, även om dokumentationen för de enskilda ”user-plugins” håller mycket varierande kvalitet och detaljnivå. De erbjuder utbyggbarhet genom ”Events”, alltså ”när något händer i Artifactory, gör detta”, vilket innebär att du kan göra nästan vad som helst. Haken är dock att du oftast själv måste komma på hur. Det enklaste alternativet är att bara ta bort plugin-logiken och behålla den som en gravsten.
Nexus
Nexus har viss plugin-funktionalitet och en marknadsplats. Gränssnittet för marknadsplatsen är inte särskilt bra, men det går att filtrera på produkt och version. Det finns omkring 25 plugins som kan användas i Nexus.
Installation av plugins är en manuell process. Plugins bygger på OSGi-containrar (se).
För att installera ett plugin måste du stoppa Nexus-tjänsten, redigera XML-konfigurationsfiler och ladda ner pluginet. I vissa fall behöver du även bygga pluginet. Processen är besvärlig och bör snarare ses som kodinjektion än som plugin-funktionalitet.
ProGet
ProGet är det enda alternativet som erbjuder faktisk plugin-funktionalitet, kallad extensions. I gränssnittet finns bara några få extensions, så kallade inbyggda extensions, som kan installeras med ett klick och en omstart. Den fullständiga listan över tillgängliga extensions med installationsinstruktioner finns här. För närvarande kan 8 extensions installeras från gränssnittet, medan det finns totalt 26 på webbsidan. Om det något begränsade urvalet inte uppfyller dina krav erbjuder Nexus ett SDK så att du kan utveckla egna.
Vinnare
ProGet ger överlägset bäst upplevelse, även om urvalet av plugins är ganska litet och inte har vuxit särskilt mycket sedan förra gången. Det bara fungerar!
Övergripande slutsats
Artifactory har stöd för de flesta repositorytyper och en bra sökfunktion med det egna frågespråket AQL. JFrog erbjuder både ett REST API och JFrog CLI för interaktion med Artifactory, med stöd för promotion av olika artifacts med full spårbarhet. Rensning hanteras via AQL, vilket ger en mycket flexibel och kraftfull mekanism för rensning. Autentisering kan kopplas till nästan alla inloggningsleverantörer och erbjuder omfattande anpassning av åtkomstroller och policyer. Molnlagring är inte längre en funktion enbart för enterprise. Den enda nackdelen är att utbyggbarheten inte är lika bra som i andra produkter, exempelvis ProGet och Nexus.
Nexus har kommit långt med tillägget av sitt nya REST API med OpenAPI-specifikation och Swagger-filer. Detta möjliggör kodgenerering av både klient- och serverstubbar i de flesta populära språk, vilket gör det enkelt att använda och utöka API:et. Funktionaliteten för promotion verkar något omogen eftersom det finns en märklig begränsning som hindrar artifacts från att flyttas till ett repository där artifacts redan har den taggen. När det gäller lagring har Nexus mognat på många sätt, både vad gäller molnlagring och grupplager som sträcker sig över flera blob stores.
Med rötter i .NET-världen har ProGet ett striktare synsätt på binära artifacts. Om du kan leva med det mer begränsade urvalet av repositorytyper som stöds och har ett webbfokuserat roll-forward-förhållningssätt till dina artifacts, har ProGet det du behöver.
Att ge en rekommendation är inte lika enkelt som i den föregående versionen av den här artikeln. Vår rekommendation är att du tittar på de olika produkterna och vilka repositorytyper de stöder innan du väljer utifrån dina krav och din budget.
Om du har några kommentarer är du varmt välkommen att kontakta oss.
- DevOps
- CI/CD
Subscribe to our newsletter
Related blogs