Share via


Använda DevOps och CI/CD för att publicera API:er

GÄLLER FÖR: Alla API Management-nivåer

Med det strategiska värdet av API:er i företaget har det blivit en viktig aspekt av API-utveckling att använda Tekniker för kontinuerlig integrering (CI) och distribution (CD). I den här artikeln beskrivs de beslut du behöver fatta för att anta DevOps-principer för hantering av API:er.

API DevOps består av tre delar:

Diagram som illustrerar API DevOps-flödet.

Varje del av API DevOps-pipelinen beskrivs nedan.

API-definition

En API-utvecklare skriver en API-definition genom att ange en specifikation, inställningar (till exempel loggning, diagnostik och serverdelsinställningar) och principer som ska tillämpas på API:et. API-definitionen innehåller den information som krävs för att etablera API:et på en Azure API Management-tjänst. Specifikationen kan baseras på en standardbaserad API-specifikation (till exempel WSDL, OpenAPI eller GraphQL) eller definieras med hjälp av ARM-API:erna (Azure Resource Manager) (till exempel en ARM-mall som beskriver API:et och åtgärderna). API-definitionen ändras över tid och bör betraktas som "källkod". Se till att API-definitionen lagras under källkodskontroll och har lämplig granskning innan du implementerar den.

Det finns flera verktyg som hjälper dig att skapa API-definitionen:

  • Azure APIOps Toolkit tillhandahåller ett arbetsflöde som bygger på ett git-källkodskontrollsystem (till exempel GitHub eller Azure Repos). Den använder en extraktor för att skapa en API-definition som sedan tillämpas på en API Management-måltjänst av en utgivare. APIOps stöder REST- och GraphQL-API:er just nu.
  • Verktyget dotnet-apim konverterar en välformulerad YAML-definition till en ARM-mall för senare distribution. Verktyget fokuserar på REST-API:er.
  • Terraform är ett alternativ till Azure Resource Manager för att konfigurera resurser i Azure. Du kan skapa en Terraform-konfiguration (tillsammans med principer) för att implementera API:et på samma sätt som en ARM-mall skapas.

Du kan också använda IDE-baserade verktyg för redigeringsprogram som Visual Studio Code för att skapa de artefakter som krävs för att definiera API:et. Det finns till exempel över 30 plugin-program för redigering av OpenAPI-specifikationsfiler på Visual Studio Code Marketplace. Du kan också använda kodgeneratorer för att skapa artefakterna. Med CADL-språket kan du enkelt skapa byggstenar på hög nivå och sedan kompilera dem till ett standard-API-definitionsformat som OpenAPI.

API-godkännande

När API-definitionen har skapats skickar utvecklaren API-definitionen för granskning och godkännande. Om du använder ett Git-baserat källkodskontrollsystem (till exempel GitHub eller Azure Repos) kan sändningen göras via pull-begäran. En pull-begäran informerar andra om ändringar som har föreslagits i API-definitionen. När godkännandegrindarna har bekräftats sammanfogar en godkännare pull-begäran till huvudlagringsplatsen för att ange att API-definitionen kan distribueras till produktion. Processen för pull-begäran ger utvecklaren möjlighet att åtgärda eventuella problem som påträffas under godkännandeprocessen.

Både GitHub och Azure Repos tillåter att godkännandepipelines konfigureras som körs när en pull-begäran skickas. Du kan konfigurera godkännandepipelines för att köra verktyg som:

Kommentar

Azure-API:er måste följa en strikt uppsättning riktlinjer som du kan använda som utgångspunkt för dina egna API-riktlinjer. Det finns en Spectral-konfiguration för att framtvinga riktlinjerna.

När de automatiserade verktygen har körts granskas API-definitionen av det mänskliga ögat. Verktyg fångar inte alla problem. En mänsklig granskare ser till att API-definitionen uppfyller organisationens kriterier för API:er, inklusive efterlevnad av riktlinjer för säkerhet, sekretess och konsekvens.

API-publikation

API-definitionen publiceras till en API Management-tjänst via en versionspipeline. Vilka verktyg som används för att publicera API-definitionen beror på vilket verktyg som används för att skapa API-definitionen:

Kan jag använda andra källkodskontroll- och CI/CD-system?

Ja. Processen som beskrivs fungerar med alla källkodskontrollsystem (även om APIOps kräver att källkodskontrollsystemet är git-baserat ). På samma sätt kan du använda valfri CI/CD-plattform så länge den kan utlösas av en incheckning och köra kommandoradsverktyg som kommunicerar med Azure.

Bästa praxis

Det finns ingen branschstandard för att konfigurera en DevOps-pipeline för publicering av API:er, och inget av de verktyg som nämns fungerar i alla situationer. Vi ser dock att de flesta situationer omfattas av en kombination av följande verktyg och tjänster:

Vi har sett störst framgång i kunddistributioner och rekommenderar följande metoder:

Mer information om hur du konfigurerar och kör en CI/CD-distributionspipeline med APIOps finns i Automatiserade API-distributioner med APIOps i Azure Architecture Center.

Referenser