当前位置: 首页 > article >正文

aws(学习笔记第二十课) codecommit以及codedeploy进行开发

aws(学习笔记第二十课)

  • 使用codecommit以及codedeploy进行开发

学习内容:

  • codecommitcodebuild以及codedeploy的整体概念
  • 使用codecommit
  • 使用codedeploy

1. 使用codecommit

  1. codecommitcodebuild以及codedeploy的整体概念
    • CICD的概念
      CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)。

      • 团队协同在github上共同维护代码,之后发布到Test Server上进行测试。
      • 如果通过了测试,那么就会发布到Prod Server,即生产环境。 在这里插入图片描述
    • 分支架构
      在这里插入图片描述

      • 全体项目以master为核心分支进行开发。
      • 如果enhancement或者feature对应,那么就会从master分支checkout出来dev用的branch
      • 团队在特定的dev分支上进行开发,发布到Test环境进行测试。如果没有问题了,那么就会merge进入master分支,之后发布到Production生产环境。
      • 如果有紧急的需求,那么Dev Lead will commit an urgent customer disruptive change into master branch
    • code pipeline
      在这里插入图片描述

      • AWS的环境
        • code管理使用Github或者Bitbucket
        • build使用jenkins
        • test使用jenkins
        • deploy使用jenkins或者other tooling
      • AWS的环境 这里AWS都采用自己的服务
        • code管理使用CodeCommit
        • build使用CodeBuild
        • test使用CodeBuild
        • deploy使用CodeDeploy
    • 开始构建codecommit

      • 进入codecommit
        在这里构建第一个codecommit repository
        在这里插入图片描述
      • 来到IAM作成用户,设置codecommit的权限
        • 首先,定义策略,对于codecommit权限全部打开。
          在这里插入图片描述
        • 之后,限定访问的repo为刚刚创建的demo-repo
          在这里插入图片描述
      • 作成用户,赋予刚才定义的codecommit策略
        这里的用户名为demo-code-commit-user 在这里插入图片描述
      • 取得作成好的用户的 AWS CodeCommit 的 HTTPS Git 凭证
        在这里插入图片描述
        选择下载https git凭证
        在这里插入图片描述
    • 启动windowsec2,尝试push代码

      • windows ec2中安装git bash
        在这里插入图片描述
    • 输入上面建立用户的credential凭证
      输入凭证,执行git clone
      在这里插入图片描述

    • 创建代码文件,执行git命令
      在这里插入图片描述

    • codecommit上确认代码文件
      在这里插入图片描述

2. 使用codedeploy

  1. 全体架构
    在这里插入图片描述

    这里,按照如下步骤启动codedeploy

    • 作成一个deploy destination ec2
    • 作成codecommitpush整个wordpressrepository,配置codedeploy
    • 启动codedeploy,配置wordpressec2
  2. 启动EC2作为deploy destination

    • 接下来的user data要执行codedeploy agent的安装,所以在这里要赋予ec2权限的role
      注意,这里不赋予足够的权限的话,就没有在接下来的步骤执行./install auto,进而不能按照codedeploy agent,导致codepipeline执行失败。
      在这里插入图片描述

    • 用户数据设定

      #!/bin/bash
      yum install ruby -y 
      aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-1 
      chmod +x install
      ./install auto
      

      在这里插入图片描述

  3. 启动另外一个EC2,作为模拟的开发主机
    在这里插入图片描述

    • 对于开发主机,进行代码的初期化。

      wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/courses/spl-82/v1.4.5.prod-2bbeba30/scripts/WordPress-master.zip
      

      下载到/home/ec2-user/wordpress路径。
      在这里插入图片描述

    • 进行解压缩unzip

      unzip WordPress-master.zip -d /home/ec2-user/wordpress_codecommit
      cd /home/ec2-user/wordpress_codecommit
      mv WordPress-master/ wordpress
      

      在这里插入图片描述

    • 为了wordpress工程的deploy,创建deploy用的scripts目录

      mkdir -p /home/ec2-user/wordpress_codecommit/wordpress/scripts
      
    • 创建install_dependencies.sh

      vi /home/ec2-user/wordpress_codecommit/wordpress/scripts/install_dependencies.sh
      #!/bin/bash
      yum install -y httpd wget php-fpm php-mysqli php-json php php-devel mariadb105-server
      
    • 创建start_serer.sh

      vi /home/ec2-user/wordpress_codecommit/wordpress/scripts/start_server.sh
      #!/bin/bash
      systemctl start httpd
      systemctl enable httpd
      systemctl start mariadb
      systemctl enable mariadb
      
    • 创建stop_server.sh

      vi /home/ec2-user/wordpress_codecommit/wordpress/scripts/stop_server.sh
      #!/bin/bash
      isExistApp=`pgrep httpd`
      if [[ -n $isExistApp ]]; then
       systemctl stop httpd
      fi
      isExistApp=`pgrep sql`
      if [[ -n $isExistApp ]]; then
       systemctl stop mariadb
      fi
      
    • 创建数据库脚本

      vi /home/ec2-user/wordpress_codecommit/wordpress/scripts/create_test_db.sh
      #!/bin/bash
      mysql -uroot <<CREATE_TEST_DB
      CREATE DATABASE IF NOT EXISTS test;
      CREATE_TEST_DB
      
    • 创建 change_permissions.sh脚本

      vi /home/ec2-user/wordpress_codecommit/wordpress/scripts/change_permissions.sh
      #!/bin/bash
      chmod -R 777 /var/www/html/WordPress
      
    • 这些shell文件的统一入口,就是codedeploy/appspec.yml

      vi /home/ec2-user/wordpress_codecommit/wordpress/appspec.yml
      version: 0.0
      os: linux
      files:
       - source: /
         destination: /var/www/html/WordPress
      hooks:
       BeforeInstall:
        - location: scripts/install_dependencies.sh
          timeout: 300
          runas: root
       AfterInstall:
        - location: scripts/change_permissions.sh
          timeout: 300
          runas: root
       ApplicationStart:
        - location: scripts/start_server.sh
        - location: scripts/create_test_db.sh
          timeout: 300
          runas: root
       ApplicationStop:
       - location: scripts/stop_server.sh
         timeout: 300
         runas: root
      
    • 扩大权限给iam策略
      因为需要创建另外一个codecommit repository,所以以前指定权限要扩大到所有的repo
      在这里插入图片描述

    • 创建wordpresscodecommit repository
      在这里插入图片描述

    • 提前安装git 注意,使用sudo -i ,之后切换到ec2-user

      yum install git
      
    • wordpress代码,appspec.ymlscript文件夹都git push到仓库中

      git init
      git add .
      git commit -m "first version of wordpress
      
    • 这是本地repo已经commit完毕,执行git push到远端

      git push https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/wordpress
      
    • 这时候会提示错误
      在这里插入图片描述

    • 按照提示执行即可
      这里会提示输入密码和用户名,使用上面取得的凭证输入。

       git push --set-upstream https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/wordpress master
      

      在这里插入图片描述
      检查远端repo
      在这里插入图片描述

  4. 创建codedeploy的应用程序

    • 这里需要一个codedeployrole,提前创建,名字指定为codedeploy-role
      在这里插入图片描述

    • 接着创建codedeploy的应用程序
      在这里插入图片描述

    • 创建部署组deploy group
      这里,部署role指定成上面创建的role
      在这里插入图片描述

  5. 创建codepipeline进行真正的部署

    • 开始创建codepipeline
      在这里插入图片描述

    • 创建一个新的role
      在这里插入图片描述

    • 设定codecommit的源
      在这里插入图片描述

    • 跳过codebuild设定
      在这里插入图片描述

    • 最后创建codepipeline
      在这里插入图片描述

    • 等待codepipeline的执行结果
      在这里插入图片描述

    • 执行成功
      在这里插入图片描述

    • 参照网上的wordpress的数据库步骤构建初始化DB
      wordpress的DB初始化
      这里省略接下来的步骤说明。


http://www.kler.cn/a/463949.html

相关文章:

  • Python自学 - 递归函数
  • JavaVue-Get请求 数组参数(qs格式化前端数据)
  • C语言带参数的宏定义的相关知识汇总(最常用的形式、带标记分隔符##的形式...)
  • 光伏安装在屋顶:安全、环保还是潜在威胁?
  • OpenNJet v3.2.0正式发布!
  • Flutter-插件 scroll-to-index 实现 listView 滚动到指定索引位置
  • 如何在群晖NAS上安装并配置MySQL与phpMyAdmin远程管理数据库
  • 金融风控-授信额度模型
  • VSCode 终端显示“pnpm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本”
  • ruoyi 多租户 开启后针对某一条sql不适用多租户; 若依多租户sql规则修改
  • 如何用CSS3创建圆角矩形并居中显示?
  • 汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型,识别率89.7%
  • C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码
  • 家谱管理系统|Java|SSM|VUE| 前后端分离
  • 自从学会Git,感觉打开了一扇新大门
  • uniapp生成h5后发布到服务器碰到的问题解决
  • 在基于IMX6ULL的Linux嵌入式编程中,与内存相关的堆(Heap)和栈(Stack)有什么区别?Linux 系统中堆和栈的内存布局是怎么样的?
  • Gin 路由实现原理概述
  • springboot配置并使用RestTemplate
  • 攻防世界web第十题Web_python_template_injection
  • DDSort-简单实用的jQuery拖拽排序插件
  • NLP论文速读(NeurIPS 2024)|BERT作为生成式上下文学习者BERTs are Generative In-Context Learners
  • Microsoft SQL Server Integration Services (SSIS) 详细介绍
  • 树型DP # 战略游戏
  • 【JS】期约的Promise.all()和 Promise.race()区别
  • MySQL SQL元查询详解(10k,含运行实例、分析)