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à.
Crea automaticamente pipeline CI dinamiche per progetti Java e Python
Creato da Aromal Raj Jayarajan (AWS), Amarnath Reddy (), () e Vijesh Vijayakumaran Nair (AWS) MAHESH RAGHUNANDANAN AWS AWS
Archivio del codice: automated-ci-pipeline-creation | Ambiente: PoC o pilota | Tecnologie: infrastruttura DevOps; Serverless |
Carico di lavoro: tutti gli altri carichi di lavoro | AWSservizi: AWS CodeBuild; AWS Lambda AWS CodePipeline; AWS Step Functions; AWS CodeCommit |
Riepilogo
Avviso: non AWS CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Questo modello mostra come creare automaticamente pipeline dinamiche di integrazione continua (CI) per progetti Java e Python AWS utilizzando strumenti di sviluppo.
Con la diversificazione degli stack tecnologici e l'aumento delle attività di sviluppo, può diventare difficile creare e mantenere pipeline CI coerenti all'interno di un'organizzazione. Automatizzando il processo in AWS Step Functions, puoi assicurarti che le tue pipeline CI siano coerenti nel loro utilizzo e approccio.
Per automatizzare la creazione di pipeline CI dinamiche, questo modello utilizza i seguenti input variabili:
Linguaggio di programmazione (solo Java o Python)
Nome della pipeline
Fasi della pipeline richieste
Nota: Step Functions orchestra la creazione di pipeline utilizzando più servizi. AWS Per ulteriori informazioni sui AWS servizi utilizzati in questa soluzione, vedere la sezione Strumenti di questo modello.
Prerequisiti e limitazioni
Prerequisiti
Un AWS account attivo
Un bucket Amazon S3 nella stessa AWS regione in cui viene distribuita questa soluzione
Un principale di AWS Identity and Access Management (IAM) che dispone delle AWS CloudFormation autorizzazioni necessarie per creare le risorse necessarie per questa soluzione
Limitazioni
Questo modello supporta solo progetti Java e Python.
I IAM ruoli previsti in questo modello seguono il principio del privilegio minimo. Le autorizzazioni IAM dei ruoli devono essere aggiornate in base alle risorse specifiche che la pipeline CI deve creare.
Architettura
Stack tecnologico Target
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon S3)
AWS Systems Manager
AWS Step Functions
AWSLambda
Amazon DynamoDB
Architettura Target
Il diagramma seguente mostra un esempio di flusso di lavoro per la creazione automatica di pipeline CI dinamiche per progetti Java e Python utilizzando strumenti di sviluppo. AWS
Il diagramma mostra il flusso di lavoro seguente:
Un AWS utente fornisce i parametri di input per la creazione di pipeline CI in formato. JSON Questo input avvia un flusso di lavoro Step Functions (macchina a stati) che crea una pipeline CI utilizzando strumenti di AWS sviluppo.
Una funzione Lambda legge una cartella denominata input-reference, archiviata in un bucket Amazon S3, e quindi genera un file buildspec.yml. Questo file generato definisce le fasi della pipeline CI e viene archiviato nello stesso bucket Amazon S3 che memorizza i riferimenti ai parametri.
Step Functions controlla le dipendenze del flusso di lavoro di creazione della pipeline CI per eventuali modifiche e aggiorna lo stack di dipendenze secondo necessità.
Step Functions crea le risorse della pipeline CI in uno CloudFormation stack, tra cui un CodeCommit repository, un CodeBuild progetto e una pipeline. CodePipeline
Lo CloudFormation stack copia il codice sorgente di esempio per lo stack tecnologico selezionato (Java o Python) e il file buildspec.yml nel repository. CodeCommit
I dettagli del runtime della pipeline CI sono archiviati in una tabella DynamoDB.
Automazione e scalabilità
Questo modello è destinato all'uso in un solo ambiente di sviluppo. Le modifiche alla configurazione sono necessarie per l'utilizzo in più ambienti di sviluppo.
Per aggiungere il supporto per più di uno CloudFormation stack, puoi creare CloudFormation modelli aggiuntivi. Per ulteriori informazioni, consulta la sezione Guida introduttiva AWS CloudFormation nella CloudFormation documentazione.
Strumenti
Strumenti
AWSStep Functions è un servizio di orchestrazione serverless che consente di combinare funzioni AWS Lambda e altri AWS servizi per creare applicazioni aziendali critiche.
AWSLambda è un servizio di elaborazione che ti aiuta a eseguire il codice senza dover effettuare il provisioning o gestire i server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
AWS CodeBuildè un servizio di compilazione completamente gestito che consente di compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
AWS CodeCommitè un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente.
AWS CodePipelineti aiuta a modellare e configurare rapidamente le diverse fasi di una versione del software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWSKey Management Service (AWSKMS) consente di creare e controllare chiavi crittografiche per proteggere i dati.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
AWS CloudFormationti aiuta a configurare AWS le risorse, a fornirle in modo rapido e coerente e a gestirle durante tutto il loro ciclo di vita tra AWS account e regioni.
Amazon DynamoDB è un servizio di database SQL No completamente gestito che offre prestazioni veloci, prevedibili e scalabili.
AWSSystems Manager Parameter Store fornisce uno storage sicuro e gerarchico per la gestione dei dati di configurazione e la gestione dei segreti.
Codice
Il codice per questo pattern è disponibile nel repository. GitHub automated-ci-pipeline-creation
Best practice
Non inserire credenziali (segrete) come token o password direttamente nei CloudFormation modelli o nelle configurazioni di azione Step Functions. In tal caso, le informazioni verranno visualizzate nei log di DynamoDB. Utilizza invece AWS Secrets Manager per configurare e archiviare i segreti. Quindi, fai riferimento ai segreti archiviati in Secrets Manager all'interno dei CloudFormation modelli e delle configurazioni di azione di Step Functions, se necessario. Per ulteriori informazioni, consulta What is AWS Secrets Manager nella documentazione di Secrets Manager.
Configura la crittografia lato server per gli CodePipeline artefatti archiviati in Amazon S3. Per ulteriori informazioni, consulta Configurare la crittografia lato server per gli artefatti archiviati in Amazon S3 nella documentazione. CodePipeline CodePipeline
Applica le autorizzazioni con privilegi minimi durante la configurazione dei ruoli. IAM Per ulteriori informazioni, consulta Applicare le autorizzazioni con privilegi minimi nella documentazione. IAM
Assicurati che il tuo bucket Amazon S3 non sia accessibile al pubblico. Per ulteriori informazioni, consulta Configurazione dell'impostazione di accesso pubblico a blocchi per i bucket S3 nella documentazione di Amazon S3.
Assicurati di attivare il controllo delle versioni per il tuo bucket Amazon S3. Per ulteriori informazioni, consulta Usare il controllo delle versioni nei bucket S3 nella documentazione di Amazon S3.
Usa IAM Access Analyzer per configurare le policy. IAM Lo strumento fornisce consigli pratici per aiutarti a creare policy sicure e funzionali. IAM Per ulteriori informazioni, vedere Using AWS Identity and Access Management Access Analyzer nella IAM documentazione.
Quando possibile, definisci condizioni di accesso specifiche durante la configurazione delle politicheIAM.
Attiva la CloudWatch registrazione di Amazon per scopi di monitoraggio e controllo. Per ulteriori informazioni, consulta What is Amazon CloudWatch Logs? nella CloudWatch documentazione.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Creare un bucket Amazon S3. | Crea un bucket Amazon S3 (o usa un bucket esistente) per archiviare i CloudFormation modelli, il codice sorgente e i file di input richiesti per la soluzione. Per ulteriori informazioni, consulta Fase 1: Crea il tuo primo bucket S3 nella documentazione di Amazon S3. Nota: il bucket Amazon S3 deve trovarsi nella stessa AWS regione in cui stai distribuendo la soluzione. | AWS DevOps |
Clona il repository. GitHub | Clona il GitHub automated-ci-pipeline-creation
Per ulteriori informazioni, consulta Clonazione di un repository nella documentazione. | AWS DevOps |
Carica la cartella Solution Templates dal GitHub repository clonato nel tuo bucket Amazon S3. | Copia i contenuti dalla cartella Solution-Templates clonata e caricali nel bucket Amazon S3 che hai creato. Per ulteriori informazioni, consulta Caricamento di oggetti nella documentazione di Amazon S3. Nota: assicurati di caricare solo il contenuto della cartella Solution-Templates. Puoi caricare i file solo a livello root del bucket Amazon S3. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea uno CloudFormation stack per distribuire la soluzione utilizzando il file template.yml nel repository clonato. GitHub |
Nota: mentre lo stack viene creato, viene elencato nella pagina Pile con lo stato _IN_. CREATE PROGRESS Assicurati di attendere che lo stato dello stack passi a CREATE_ COMPLETE prima di completare i passaggi rimanenti di questo schema. | AWSamministratore, AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui la funzione step che hai creato. |
JSONformattazione
esempio di JSON input Java
Esempio di input in Python JSON
| AWSamministratore, AWS DevOps |
Conferma che il CodeCommit repository per la pipeline CI è stato creato. |
| AWS DevOps |
CodeBuild Controlla le risorse del progetto. |
| AWS DevOps |
Convalida le fasi. CodePipeline |
| AWS DevOps |
Conferma che la pipeline CI sia stata eseguita correttamente. |
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Elimina la pila di risorse inclusa. CloudFormation | Elimina lo stack di risorse della pipeline CI in. CloudFormation Per ulteriori informazioni, consulta Eliminazione di uno stack sulla AWS CloudFormation console nella documentazione. CloudFormation Nota: assicurati di eliminare lo stack denominato -stack. <project_name> | AWS DevOps |
Elimina le dipendenze della pipeline CI in Amazon S3 e. CloudFormation |
Nota: assicurati di eliminare lo stack denominato. pipeline-creation-dependencies-stack | AWS DevOps |
Elimina il bucket di modelli Amazon S3. | Elimina il bucket Amazon s3 che hai creato nella sezione Configura i prerequisiti di questo modello, che memorizza i modelli per questa soluzione. Per ulteriori informazioni, consulta Eliminazione di un bucket nella documentazione di Amazon S3. | AWS DevOps |
Risorse correlate
Creazione di una macchina a stati Step Functions che utilizza Lambda (documentazione AWS Step Functions)
AWSStep Functions WorkFlow Studio (documentazione AWS Step Functions)
Come AWS CloudFormation funziona? (AWS CloudFormation documentazione)
CI/CD completo con AWS CodeCommit, AWS CodeBuild AWS CodeDeploy, e AWS CodePipeline
(AWSpost sul blog) IAMe AWS STS quote, requisiti relativi ai nomi e limiti di caratteri (documentazione) IAM