Dans la première partie de cette série, nous avons expliqué la création d'un site Web de CV natif cloud à l'aide de divers services AWS. Nous allons maintenant passer notre projet au niveau supérieur en implémentant l'intégration continue et le déploiement continu (CI/CD) à l'aide des actions GitHub. Cette automatisation est cruciale pour maintenir et mettre à jour efficacement notre CV cloud.
CI/CD est une pratique de développement logiciel moderne qui met l'accent sur l'automatisation des étapes de développement d'applications. Dans le contexte de notre Cloud Resume Challenge, cela signifie que nous pouvons mettre à jour notre CV ou apporter des modifications à notre code backend, transférer ces modifications vers GitHub et les déployer automatiquement sur notre infrastructure AWS.
Avant de plonger dans la mise en œuvre, expliquons pourquoi CI/CD est si important :
Pour ce projet, nous utiliserons deux référentiels distincts :
Cette séparation nous permet de gérer et de contrôler les versions de notre code frontend et backend de manière indépendante.
Commençons par configurer un workflow GitHub Actions pour notre frontend. Créez un nouveau fichier dans votre référentiel frontend à l'adresse .github/workflows/deploy-frontend.yml :
name: Deploy Frontend on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Deploy to S3 run: aws s3 sync . s3://${{ secrets.S3_BUCKET }} --delete - name: Invalidate CloudFront run: | aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
Ce flux de travail effectue les opérations suivantes :
Pour le backend, nous allons créer un workflow similaire. Créez un nouveau fichier dans votre référentiel backend à l'adresse .github/workflows/deploy-backend.yml :
name: Deploy Backend on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '16' - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Deploy to AWS run: npx cdk deploy --require-approval never
Ce flux de travail :
Pour protéger nos informations sensibles, nous utiliserons GitHub Secrets. Allez dans les paramètres de votre dépôt, cliquez sur "Secrets et variables", puis "Actions", et ajoutez les secrets suivants :
Ces secrets sont cryptés de manière sécurisée et exposés au workflow GitHub Actions uniquement pendant l'exécution.
Gardez les secrets en sécurité : ne codez jamais en dur les informations sensibles. Utilisez toujours des variables d'environnement ou un service de gestion des secrets.
Mettez en œuvre des tests robustes : incluez des tests unitaires, des tests d'intégration et des tests de bout en bout dans votre pipeline CI.
Utiliser l'infrastructure en tant que code : définissez votre infrastructure à l'aide d'outils comme AWS CDK ou CloudFormation. Cela garantit la cohérence et permet le contrôle des versions de votre infrastructure.
Surveillez vos pipelines : configurez des notifications pour les déploiements ayant échoué et consultez régulièrement vos journaux CI/CD.
Mettez en œuvre des déploiements progressifs : envisagez d'utiliser des techniques telles que les déploiements bleu-vert ou les versions Canary pour des déploiements plus sûrs.
La mise en œuvre de CI/CD n'a pas été sans défis. Voici quelques leçons apprises :
Autorisations IAM : assurez-vous que votre utilisateur AWS IAM dispose des autorisations appropriées pour le déploiement. Cela peut prendre quelques essais et erreurs pour y parvenir.
Gestion des dépendances : Gardez vos dépendances à jour dans l'environnement CI. Pensez à utiliser des outils comme Dependabot pour automatiser ce processus.
Les tests sont cruciaux : investissez du temps dans la rédaction de tests complets. Ils vous éviteront de déployer des bugs en production.
Gestion des coûts : soyez conscient des coûts associés à votre pipeline CI/CD, surtout si vous effectuez fréquemment des tests ou des déploiements approfondis.
La mise en œuvre de CI/CD avec GitHub Actions a considérablement rationalisé notre processus de développement pour le Cloud Resume Challenge. Cela nous permet de nous concentrer sur l'écriture de code et d'apporter des améliorations, sachant que le déploiement n'est qu'un simple effort.
Cette expérience renforce l'importance de l'automatisation dans le développement cloud et offre une expérience pratique des pratiques CI/CD standard de l'industrie. Que vous travailliez sur un projet personnel ou sur une application à grande échelle, investir du temps dans la mise en place d'un pipeline CI/CD robuste rapporte des dividendes en termes de productivité et de fiabilité.
N'oubliez pas que CI/CD n'est pas une configuration unique. Continuez à affiner vos pipelines, ajoutez plus de tests et optimisez vos flux de travail à mesure que votre projet évolue. Bon codage et déploiement !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!