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

aws(学习笔记第二十课)

  • 使用codecommit以及codedeploy进行开发

学习内容:

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

1. 使用codecommit

  1. codecommit,codebuild以及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凭证
    • 启动windows的ec2,尝试push代码

      • 在windows ec2中安装git bash
    • 输入上面建立用户的credential凭证

      输入凭证,执行git clone。

    • 创建代码文件,执行git命令

    • 在codecommit上确认代码文件

2. 使用codedeploy

  1. 全体架构

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

    • 作成一个deploy destination ec2
    • 作成codecommit,push整个wordpress的repository,配置codedeploy
    • 启动codedeploy,配置wordpress到ec2
  2. 启动EC2作为deploy destination

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

    • 用户数据设定

      shell 复制代码
      #!/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,作为模拟的开发主机

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

      shell 复制代码
      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

      shell 复制代码
      unzip WordPress-master.zip -d /home/ec2-user/wordpress_codecommit
      cd /home/ec2-user/wordpress_codecommit
      mv WordPress-master/ wordpress
    • 为了wordpress工程的deploy,创建deploy用的scripts目录

      shell 复制代码
      mkdir -p /home/ec2-user/wordpress_codecommit/wordpress/scripts
    • 创建install_dependencies.sh

      shell 复制代码
      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

      shell 复制代码
      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

      shell 复制代码
      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
    • 创建数据库脚本

      shell 复制代码
      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脚本

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

      shell 复制代码
      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

    • 创建wordpress的codecommit repository

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

      shell 复制代码
      yum install git
    • 将wordpress代码,appspec.yml和script文件夹都git push到仓库中

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

      shell 复制代码
      git push https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/wordpress
    • 这时候会提示错误

    • 按照提示执行即可

      这里会提示输入密码和用户名,使用上面取得的凭证输入。

      shell 复制代码
       git push --set-upstream https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/wordpress master

      检查远端repo

  4. 创建codedeploy的应用程序

    • 这里需要一个codedeploy的role,提前创建,名字指定为codedeploy-role

    • 接着创建codedeploy的应用程序

    • 创建部署组deploy group

      这里,部署role指定成上面创建的role。

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

    • 开始创建codepipeline

    • 创建一个新的role

    • 设定codecommit的源

    • 跳过codebuild设定

    • 最后创建codepipeline

    • 等待codepipeline的执行结果

    • 执行成功

    • 参照网上的wordpress的数据库步骤构建初始化DB
      wordpress的DB初始化

      这里省略接下来的步骤说明。

相关推荐
yi0117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
志尊宝8 小时前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
李日华大战鸡红9 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
weixin_4481199410 小时前
Datawhale Easy Data × AI:笔记1 已重做,看新的笔记
笔记
要开心吖ZSH11 小时前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
kkkkkkkkkk_Z11 小时前
新手自学嵌入式 | 学习日记:异常与中断基础、i.MX6ULL裸机开发环境搭建、GPIO模块与点灯原理
学习
咖啡忍者12 小时前
【SAP】程制造生产计划PP-PI(Production Planning for Process Industries)
笔记
m4Rk_12 小时前
【论文阅读】Agent 记忆机制(94):MemGen——在推理过程中动态生成并织入潜在记忆
论文阅读·人工智能·学习·开源·github
晓德12 小时前
0、LLM大模型安全学习系列(启)
学习·安全
Titan202413 小时前
MySQL索引学习笔记
笔记·学习·mysql