最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 自动化云恢复挑战:使用 GitHub Actions 实施 CI/CD

    云简历挑战 – 第 2 部分

    介绍

    在本系列的第一部分中,我们逐步介绍了如何使用各种 aws 服务构建云原生简历网站。现在,我们将通过使用 github actions 实施持续集成和持续部署 (ci/cd),将我们的项目提升到一个新的水平。这种自动化对于有效维护和更新我们的云简历至关重要。

    ci/cd 是一种现代软件开发实践,强调应用程序开发阶段的自动化。在我们的云简历挑战赛中,这意味着我们可以更新简历或更改后端代码,将这些更改推送到 github,并将它们自动部署到我们的 aws 基础设施中。

    自动化云恢复挑战:使用 GitHub Actions 实施 CI/CD

    为什么 ci/cd 在云开发中很重要

    在我们深入实施之前,让我们讨论一下为什么 ci/cd 如此重要:

    1. 一致性:自动化部署可确保每个更改在您的基础设施中一致应用。
    2. 效率:手动部署非常耗时且容易出现人为错误。自动化可以节省时间并减少错误。
    3. 快速迭代:通过 ci/cd,可以快速安全地部署新功能和错误修复。
    4. 最佳实践:实施 ci/cd 鼓励良好的开发实践,例如频繁提交、全面测试和代码审查。
    5. 可扩展性:随着项目的增长,ci/cd 管道可以轻松扩展以适应更复杂的部署流程。

    设置 github 存储库

    对于这个项目,我们将使用两个单独的存储库:

    点击下载嗨格式数据恢复大师”;

    1. 前端存储库:包含静态网站的 html、css 和 javascript 文件。
    2. 后端存储库:包含 lambda 函数、api 网关和 dynamodb 表的 aws cdk 代码。

    这种分离使我们能够独立管理和版本控制我们的前端和后端代码。

    为前端实施 ci/cd

    首先为我们的前端设置 github actions 工作流程。在前端存储库中创建一个新文件(位于 .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 "/*"
    

    此工作流程执行以下操作:

    1. 推送到主分支时触发
    2. 设置 aws 凭证(我们将在 github 机密中配置)
    3. 将存储库内容同步到s3存储桶
    4. 使 cloudfront 缓存失效,以确保提供最新版本

    后端实施 ci/cd

    对于后端,我们将创建类似的工作流程。在后端存储库中创建一个新文件(位于 .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
    

    此工作流程:

    1. 推送到主分支时触发
    2. 设置 node.js
    3. 安装依赖项
    4. 运行测试(您应该实施)
    5. 设置aws凭证
    6. 部署 cdk 堆栈

    管理秘密

    为了确保我们敏感信息的安全,我们将使用 github secrets。转到您的存储库设置,单击“秘密和变量”,然后单击“操作”,然后添加以下秘密:

    • aws_access_key_id
    • aws_secret_access_key
    • s3_bucket
    • cloudfront_distribution_id

    这些秘密经过安全加密,仅在执行期间暴露给 github actions 工作流程。

    云原生应用中 ci/cd 的最佳实践

    1. 保证秘密安全:切勿对敏感信息进行硬编码。始终使用环境变量或秘密管理服务。

    2. 实施稳健的测试:在 ci 管道中包括单元测试、集成测试和端到端测试。

    3. 使用基础设施即代码:使用 aws cdk 或 cloudformation 等工具定义您的基础设施。这确保了一致性并允许对基础设施进行版本控制。

    4. 监控您的管道:设置失败部署的通知并定期检查您的 ci/cd 日志。

    5. 实施逐步推出:考虑使用蓝绿部署或金丝雀发布等技术来实现更安全的部署。

    挑战和经验教训

    实施 ci/cd 并非没有挑战。以下是一些经验教训:

    1. iam 权限:确保您的 aws iam 用户拥有正确的部署权限。可能需要一些尝试和错误才能得到正确的结果。

    2. 依赖管理:使您的依赖项在 ci 环境中保持最新。考虑使用 dependabot 等工具来自动化此过程。

    3. 测试至关重要:投入时间编写全面的测试。它们将使您免于将错误部署到生产中。

    4. 成本管理:了解与 ci/cd 管道相关的成本,特别是当您经常运行大量测试或部署时。

    结论

    使用 github actions 实施 ci/cd 显着简化了我们的云简历挑战赛的开发流程。它让我们能够专注于编写代码和进行改进,因为知道部署只是 git 推送即可。

    这种经验强调了云开发中自动化的重要性,并提供了行业标准 ci/cd 实践的实践经验。无论您是在处理个人项目还是大型应用程序,投入时间建立强大的 ci/cd 管道都会在生产力和可靠性方面带来回报。

    请记住,ci/cd 不是一次性设置。随着项目的发展,继续完善您的管道、添加更多测试并优化您的工作流程。祝您编码和部署愉快!

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 自动化云恢复挑战:使用 GitHub Actions 实施 CI/CD
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情