Usa repository di sorgenti Git di terze parti in AWS CodePipeline - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa repository di sorgenti Git di terze parti in AWS CodePipeline

Creato da Kirankumar Chandrashekar (AWS)

Ambiente: PoC o pilota

Tecnologie: DevOps

Carico di lavoro: open source

Servizi AWS: AWS CodeBuild; AWS CodePipeline; AWS Lambda

Riepilogo

Questo modello descrive come utilizzare AWS CodePipeline con repository di sorgenti Git di terze parti.

AWS CodePipeline è un servizio di distribuzione continua che automatizza le attività di creazione, test e distribuzione del software. Il servizio attualmente supporta repository Git gestiti da GitHub AWS e CodeCommit Atlassian Bitbucket. Tuttavia, alcune aziende utilizzano repository Git di terze parti integrati con il loro servizio Single Sign-On (SSO) e Microsoft Active Directory per l'autenticazione. Puoi usare questi repository Git di terze parti come fonti CodePipeline per creare azioni e webhook personalizzati.

Un webhook è una notifica HTTP che rileva gli eventi in un altro strumento, ad esempio un GitHub repository, e collega tali eventi esterni a una pipeline. Quando crei un webhook in CodePipeline, il servizio restituisce un URL che puoi usare nel webhook del tuo repository Git. Se invii codice a un ramo specifico del repository Git, il webhook Git avvia il CodePipeline webhook tramite questo URL e imposta la fase di origine della pipeline su In corso. Quando la pipeline è in questo stato, un job worker esegue un sondaggio CodePipeline per il lavoro personalizzato, lo esegue e invia uno stato di successo o di fallimento a. CodePipeline In questo caso, poiché la pipeline si trova nella fase di origine, il job worker ottiene il contenuto del repository Git, lo comprime e lo carica nel bucket Amazon Simple Storage Service (Amazon S3) dove sono archiviati gli elementi per la pipeline, utilizzando la chiave oggetto fornita dal job sottoposto a polling. Puoi anche associare una transizione per l'azione personalizzata a un evento in Amazon CloudWatch e avviare il job worker in base all'evento. Questa configurazione consente di utilizzare repository Git di terze parti che il servizio non supporta nativamente come sorgenti. CodePipeline

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo

  • Un repository Git che supporta i webhook e può connettersi a un URL di CodePipeline webhook tramite Internet

  • AWS Command Line Interface (AWS CLI) installata e configurata per funzionare con l'account AWS

Architettura

Il modello prevede le seguenti fasi:

  1. L'utente inserisce il codice in un repository Git.

  2. Viene chiamato il webhook Git.

  3. Viene chiamato il CodePipeline webhook.

  4. La pipeline è impostata su In corso e la fase di origine è impostata sullo stato In corso.

  5. L'azione della fase di origine avvia una regola CloudWatch Events, indicando che è stata avviata.

  6. L' CloudWatch evento avvia una funzione Lambda.

  7. La funzione Lambda ottiene i dettagli del job di azione personalizzato.

  8. La funzione Lambda avvia CodeBuild AWS e gli trasmette tutte le informazioni relative al lavoro.

  9. CodeBuild ottiene la chiave SSH pubblica o le credenziali utente per l'accesso HTTPS Git da Secrets Manager.

  10. CodeBuild clona il repository Git per un ramo specifico.

  11. CodeBuild comprime l'archivio e lo carica nel bucket S3 che funge da archivio degli artefatti. CodePipeline

Flusso di lavoro che utilizza repository di sorgenti Git di terze parti come fonti per AWS CodePipeline.

Strumenti

  • AWS CodePipeline: AWS CodePipeline è un servizio di distribuzione continua completamente gestito che ti aiuta ad automatizzare le pipeline di rilascio per aggiornamenti rapidi e affidabili di applicazioni e infrastrutture. CodePipeline automatizza le fasi di compilazione, test e distribuzione del processo di rilascio per ogni modifica del codice, in base al modello di rilascio definito. Ciò consente di fornire funzionalità e aggiornamenti in modo rapido e affidabile. Puoi integrare AWS CodePipeline con servizi di terze parti come GitHub o con il tuo plug-in personalizzato.

  • AWS Lambda: AWS Lambda consente di eseguire codice senza effettuare il provisioning o la gestione di server. Con Lambda, puoi eseguire codice praticamente per qualsiasi tipo di applicazione o servizio di backend senza necessità di amministrazione. Tu carichi il codice e Lambda si occupa di tutto il necessario per eseguire e scalare il codice con un'elevata disponibilità. Puoi configurare il codice in modo che venga avviato automaticamente da altri servizi AWS o chiamarlo direttamente da qualsiasi app Web o mobile.

  • AWS CodeBuild: AWS CodeBuild è un servizio di integrazione continua completamente gestito che compila codice sorgente, esegue test e produce pacchetti software pronti per la distribuzione. Con CodeBuild, non è necessario fornire, gestire e scalare i propri server di build. CodeBuild esegue la scalabilità continua ed elabora più build contemporaneamente, in modo che le build non restino in attesa in coda. Puoi iniziare a utilizzare CodeBuild velocemente con ambienti di compilazione predefiniti oppure puoi creare ambienti di compilazione personalizzati che utilizzano strumenti di compilazione specifici.

  • AWS Secrets Manager — AWS Secrets Manager ti aiuta a proteggere i segreti necessari per accedere alle tue applicazioni, servizi e risorse IT. Il servizio consente di ruotare, gestire e recuperare le credenziali del database, le chiavi API e altri segreti durante tutto il loro ciclo di vita. Gli utenti e le applicazioni recuperano i segreti chiamando le API di Secrets Manager, senza dover codificare le informazioni sensibili in testo normale. Secrets Manager offre una rotazione segreta con integrazione integrata per Amazon Relational Database Service (Amazon RDS), Amazon Redshift e Amazon DocumentDB. Il servizio può essere esteso per supportare altri tipi di segreti, tra cui chiavi API e token OAuth. Inoltre, Secrets Manager consente di controllare l'accesso ai segreti utilizzando autorizzazioni granulari e di controllare centralmente la rotazione segreta per le risorse nel cloud AWS, nei servizi di terze parti e negli ambienti locali.

  • Amazon CloudWatch — Amazon CloudWatch è un servizio di monitoraggio e osservazione creato per DevOps ingegneri, sviluppatori, ingegneri dell'affidabilità del sito (SRE) e responsabili IT. CloudWatch ti fornisce dati e approfondimenti utilizzabili per monitorare le tue applicazioni, rispondere ai cambiamenti delle prestazioni a livello di sistema, ottimizzare l'utilizzo delle risorse e ottenere una visione unificata dello stato operativo. CloudWatch raccoglie dati operativi e di monitoraggio sotto forma di log, metriche ed eventi, fornendo una visione unificata delle risorse, delle applicazioni e dei servizi AWS eseguiti su server AWS e locali. Puoi utilizzarli CloudWatch per rilevare comportamenti anomali nei tuoi ambienti, impostare allarmi, visualizzare log e metriche fianco a fianco, intraprendere azioni automatizzate, risolvere problemi e scoprire approfondimenti per far funzionare le tue applicazioni senza intoppi.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) è un servizio di storage di oggetti che consente di archiviare e proteggere qualsiasi quantità di dati per una vasta gamma di casi d'uso, come siti Web, applicazioni mobili, backup e ripristino, archiviazione, applicazioni aziendali, dispositivi IoT e analisi di big data. Amazon S3 offre funzionalità di easy-to-use gestione per aiutarti a organizzare i dati e configurare controlli di accesso ottimizzati per soddisfare requisiti aziendali, organizzativi e di conformità specifici.

Epiche

AttivitàDescrizioneCompetenze richieste

Crea un'azione personalizzata utilizzando AWS CLI o AWS. CloudFormation

Questo passaggio prevede la creazione di un'azione sorgente personalizzata che può essere utilizzata nella fase di origine di una pipeline nel tuo account AWS in una particolare regione. È necessario utilizzare AWS CLI o AWS CloudFormation (non la console) per creare l'azione di origine personalizzata. Per ulteriori informazioni sui comandi e i passaggi descritti in questa e in altre epopee, consulta la sezione «Risorse correlate» alla fine di questo schema. Nella CLI di AWS, usa il create-custom-action-type comando. Usa --configuration-properties per fornire tutti i parametri richiesti al job worker da elaborare quando effettua un sondaggio per un lavoro. CodePipeline Assicurati di annotare i valori forniti alle opzioni --provider e --action-version, in modo da poter utilizzare gli stessi valori durante la creazione della pipeline con questa fase di origine personalizzata. Puoi anche creare l'azione sorgente personalizzata in AWS CloudFormation utilizzando il tipo di risorsa AWS::CodePipeline::CustomAction Type.

Informazioni generali su AWS
AttivitàDescrizioneCompetenze richieste

Creare una coppia di chiavi SSH.

Crea una coppia di key pair Secure Shell (SSH). Per istruzioni, consultate la GitHub documentazione.

Sistemi/ingegnere DevOps

Crea un segreto in AWS Secrets Manager.

Copia il contenuto della chiave privata dalla coppia di chiavi SSH e crea un segreto in AWS Secrets Manager. Questo segreto viene utilizzato per l'autenticazione quando si accede al repository Git.

Informazioni generali su AWS

Aggiungi la chiave pubblica al repository Git.

Aggiungi la chiave pubblica dalla coppia di chiavi SSH alle impostazioni dell'account del repository Git, per l'autenticazione con la chiave privata.

Sistemi/ ingegnere DevOps
AttivitàDescrizioneCompetenze richieste

Crea una pipeline che includa l'azione di origine personalizzata.

Crea una pipeline in. CodePipeline Quando configuri la fase di origine, scegli l'azione di origine personalizzata che hai creato in precedenza. Puoi farlo nella CodePipeline console AWS o nell'interfaccia a riga di comando di AWS. CodePipeline richiede le proprietà di configurazione impostate nell'azione personalizzata. Queste informazioni sono necessarie affinché il job worker elabori il lavoro per l'azione personalizzata. Segui la procedura guidata e crea la fase successiva per la pipeline.

Informazioni generali su AWS

Crea un CodePipeline webhook.

Crea un webhook per la pipeline che hai creato con l'azione source personalizzata. È necessario utilizzare AWS CLI o AWS CloudFormation (non la console) per creare il webhook. Nella CLI di AWS, esegui il comando put-webhook e fornisci i valori appropriati per le opzioni webhook. Prendi nota dell'URL del webhook restituito dal comando. Se utilizzi AWS CloudFormation per creare il webhook, usa il tipo di AWS::CodePipeline::Webhook risorsa. Assicurati di generare l'URL del webhook dalla risorsa creata e prendine nota.

Informazioni generali su AWS

Crea una funzione e CodeBuild un progetto Lambda.

In questo passaggio, si utilizza Lambda CodeBuild per creare un job worker che analizzerà le richieste di lavoro CodePipeline per l'azione personalizzata, eseguirà il lavoro e restituirà il risultato dello stato a. CodePipeline Crea una funzione Lambda che viene avviata da una regola di Amazon CloudWatch Events quando la fase di azione sorgente personalizzata della pipeline passa a «In corso». Quando viene avviata, la funzione Lambda dovrebbe ottenere i dettagli dell'azione personalizzata eseguendo il polling dei lavori. Puoi utilizzare l' PollForJobs API per restituire queste informazioni. Dopo aver ottenuto le informazioni sul lavoro oggetto del sondaggio, la funzione Lambda dovrebbe restituire un riconoscimento e quindi elaborare le informazioni con i dati ottenuti dalle proprietà di configurazione per l'azione personalizzata. Quando l'operatore è pronto a parlare con il repository Git, potresti avviare un CodeBuild progetto, perché è comodo gestire le attività Git utilizzando il client SSH.

General AWS, sviluppatore di codice
AttivitàDescrizioneCompetenze richieste

Crea una regola per CloudWatch gli eventi.

Crea una regola CloudWatch Events che avvia la funzione Lambda come destinazione ogni volta che la fase di azione personalizzata della pipeline passa a «In corso».

Informazioni generali su AWS

Risorse correlate

Creazione di un'azione personalizzata in CodePipeline

Configurazione dell'autenticazione

Creazione di una pipeline e di un webhook

Creare un evento

Riferimenti aggiuntivi