Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez automatiquement des pipelines CI dynamiques pour les projets Java et Python
Créée par Aromal Raj Jayarajan (AWS), Amarnath Reddy (AWS), MAHESH RAGHUNANDANAN (AWS) et Vijesh Vijayakumaran Nair (AWS)
Récapitulatif
Remarque : n' AWS CodeCommit est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus
Ce modèle montre comment créer automatiquement des pipelines d'intégration continue (CI) dynamiques pour les projets Java et Python à l'aide des outils de développement AWS.
À mesure que les technologies se diversifient et que les activités de développement augmentent, il peut devenir difficile de créer et de maintenir des pipelines de CI cohérents au sein d'une organisation. En automatisant le processus dans AWS Step Functions, vous pouvez vous assurer que l'utilisation et l'approche de vos pipelines CI sont cohérentes.
Pour automatiser la création de pipelines CI dynamiques, ce modèle utilise les entrées variables suivantes :
Langage de programmation (Java ou Python uniquement)
Nom du pipeline
Étapes de pipeline requises
Note
Step Functions orchestre la création de pipelines en utilisant plusieurs services AWS. Pour plus d'informations sur les services AWS utilisés dans cette solution, consultez la section Outils de ce modèle.
Conditions préalables et limitations
Prérequis
Un compte AWS actif
Un compartiment Amazon S3 dans la même région AWS où cette solution est déployée
Un responsable d'AWS Identity and Access Management (IAM) disposant des CloudFormation autorisations AWS requises pour créer les ressources nécessaires à cette solution
Limites
Ce modèle ne prend en charge que les projets Java et Python.
Les rôles IAM fournis selon ce modèle suivent le principe du moindre privilège. Les autorisations des rôles IAM doivent être mises à jour en fonction des ressources spécifiques que votre pipeline CI doit créer.
Architecture
Pile technologique cible
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon S3)
AWS Systems Manager
AWS Step Functions
AWS Lambda
Amazon DynamoDB
Architecture cible
Le schéma suivant montre un exemple de flux de travail permettant de créer automatiquement des pipelines de CI dynamiques pour des projets Java et Python à l'aide des outils de développement AWS.

Le schéma suivant illustre le flux de travail suivant :
Un utilisateur AWS fournit les paramètres d'entrée pour la création d'un pipeline CI au format JSON. Cette entrée lance un flux de travail Step Functions (machine à états) qui crée un pipeline CI à l'aide des outils de développement AWS.
Une fonction Lambda lit un dossier nommé input-reference, qui est stocké dans un compartiment Amazon S3, puis génère un fichier buildspec.yml. Ce fichier généré définit les étapes du pipeline CI et est stocké dans le même compartiment Amazon S3 qui stocke les références de paramètres.
Step Functions vérifie les dépendances du flux de création du pipeline CI pour détecter toute modification et met à jour la pile de dépendances selon les besoins.
Step Functions crée les ressources du pipeline CI dans une CloudFormation pile, y compris un CodeCommit référentiel, un CodeBuild projet et un CodePipeline pipeline.
La CloudFormation pile copie l'exemple de code source pour la pile technologique sélectionnée (Java ou Python) et le fichier buildspec.yml dans le référentiel. CodeCommit
Les détails d'exécution du pipeline CI sont stockés dans une table DynamoDB.
Automatisation et mise à l'échelle
Ce modèle est destiné à être utilisé dans un seul environnement de développement uniquement. Des modifications de configuration sont nécessaires pour une utilisation dans plusieurs environnements de développement.
Pour ajouter la prise en charge de plusieurs CloudFormation piles, vous pouvez créer des CloudFormation modèles supplémentaires. Pour plus d'informations, consultez Getting started with AWS CloudFormation dans la CloudFormation documentation.
Outils
Outils
AWS Step Functions est un service d'orchestration sans serveur qui vous permet de combiner les fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.
AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
AWS CodeBuild est un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
AWS CodeCommit est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.
AWS vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
AWS vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Systems Manager Parameter Store fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.
Code
Le code de ce modèle est disponible dans le GitHub automated-ci-pipeline-creation
Bonnes pratiques
N'entrez pas d'informations d'identification (secrets) telles que des jetons ou des mots de passe directement dans les CloudFormation modèles ou les configurations d'actions Step Functions. Dans ce cas, les informations seront affichées dans les journaux DynamoDB. Utilisez plutôt AWS Secrets Manager pour configurer et stocker des secrets. Référencez ensuite les secrets stockés dans Secrets Manager dans les CloudFormation modèles et les configurations d'action Step Functions selon vos besoins. Pour plus d'informations, consultez la section Qu'est-ce qu'AWS Secrets Manager dans la documentation de Secrets Manager.
Configurez le chiffrement côté serveur pour les CodePipeline artefacts stockés dans Amazon S3. Pour plus d'informations, consultez Configurer le chiffrement côté serveur pour les artefacts stockés dans Amazon S3 ou CodePipeline dans la CodePipeline documentation.
Appliquez les autorisations du moindre privilège lors de la configuration des rôles IAM. Pour plus d'informations, veuillez consulter la rubrique Accorder les autorisations de moindre privilège dans la documentation IAM.
Assurez-vous que votre compartiment Amazon S3 n'est pas accessible au public. Pour plus d'informations, consultez la section Configuration du paramètre de blocage de l'accès public pour vos compartiments S3 dans la documentation Amazon S3.
Assurez-vous d'activer la gestion des versions pour votre compartiment Amazon S3. Pour plus d'informations, consultez la section Utilisation du versionnement dans les compartiments S3 dans la documentation Amazon S3.
Utilisez IAM Access Analyzer lors de la configuration des politiques IAM. L'outil fournit des recommandations pratiques pour vous aider à créer des politiques IAM sécurisées et fonctionnelles. Pour plus d'informations, consultez la section Utilisation d'AWS Identity and Access Management Access Analyzer dans la documentation IAM.
Dans la mesure du possible, définissez des conditions d'accès spécifiques lors de la configuration des politiques IAM.
Activez la CloudWatch journalisation Amazon à des fins de surveillance et d'audit. Pour plus d'informations, consultez Qu'est-ce qu'Amazon CloudWatch Logs ? dans la CloudWatch documentation.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez un compartiment Amazon S3. | Créez un compartiment Amazon S3 (ou utilisez un compartiment existant) pour stocker les CloudFormation modèles, le code source et les fichiers d'entrée requis pour la solution. Pour plus d'informations, consultez Étape 1 : Création de votre premier compartiment S3 dans la documentation Amazon S3. NoteLe compartiment Amazon S3 doit se trouver dans la même région AWS que celle dans laquelle vous déployez la solution. | AWS DevOps |
Clonez le GitHub dépôt. | Clonez le GitHub automated-ci-pipeline-creation
Pour plus d'informations, consultez la section Clonage d'un dépôt | AWS DevOps |
Téléchargez le dossier Solutions Templates depuis le GitHub référentiel cloné vers votre compartiment Amazon S3. | Copiez le contenu du dossier Solution-Templates cloné et chargez-le dans le compartiment Amazon S3 que vous avez créé. Pour plus d'informations, consultez la section Chargement d'objets dans la documentation Amazon S3. NoteAssurez-vous de télécharger uniquement le contenu du dossier Solution-Templates. Vous pouvez charger les fichiers uniquement au niveau racine du compartiment Amazon S3. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Créez une CloudFormation pile pour déployer la solution en utilisant le fichier template.yml dans le référentiel cloné. GitHub |
NoteLors de la création de votre pile, elle est répertoriée sur la page Stacks avec le statut CREATE_IN_PROGRESS. Assurez-vous d'attendre que le statut de la pile passe à CREATE_COMPLETE avant de terminer les étapes restantes de ce modèle. | Administrateur AWS, AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez la fonction step que vous avez créée. |
Formatage JSON
Exemple de saisie Java JSON
Exemple de saisie JSON en Python
| Administrateur AWS, AWS DevOps |
Vérifiez que le CodeCommit référentiel pour le pipeline CI a été créé. |
| AWS DevOps |
Vérifiez les ressources CodeBuild du projet. |
| AWS DevOps |
Validez les CodePipeline étapes. |
| AWS DevOps |
Vérifiez que le pipeline CI s'est correctement exécuté. |
| AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez les ressources empilées CloudFormation. | Supprimez la pile de ressources du pipeline CI CloudFormation. Pour plus d'informations, consultez la section Suppression d'une pile sur la CloudFormation console AWS dans la CloudFormation documentation. NoteAssurez-vous de supprimer la pile nommée -stack<project_name>. | AWS DevOps |
Supprimez les dépendances du pipeline CI dans Amazon S3 et CloudFormation. |
NoteAssurez-vous de supprimer la pile nommée pipeline-creation-dependencies-stack. | AWS DevOps |
Supprimez le bucket de modèles Amazon S3. | Supprimez le compartiment Amazon s3 que vous avez créé dans la section Configurer les prérequis de ce modèle, qui stocke les modèles de cette solution. Pour plus d'informations, consultez Supprimer un compartiment dans la documentation Amazon S3. | AWS DevOps |
Ressources connexes
Création d'une machine d'état Step Functions utilisant Lambda (documentation AWS Step Functions)
AWS Step Functions WorkFlow Studio (documentation AWS Step Functions)
Comment CloudFormation fonctionne AWS ? ( CloudFormation documentation AWS)
Quotas IAM et AWS STS, exigences relatives aux noms et limites de caractères (documentation IAM)