aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual

aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual

  • 使用codepipeline-build-deploy

学习内容:

  • 使用codepipeline,★代码库不采用codecommit,而是github
  • 使用codebuild
  • 使用codedeploy

1. 整体架构

1.1 代码链接

1.2 全体处理架构

在这里插入图片描述

2. 代码分析

2.1 创建ImageRepo,并设定给FargateTaskDef

        # Creates an Elastic Container Registry (ECR) image repository
        image_repo = ecr.Repository(self, "ImageRepo")

        # Creates a Task Definition for the ECS Fargate service
        fargate_task_def = ecs.FargateTaskDefinition(self, "FargateTaskDef")
        fargate_task_def.add_container(
            "Container",
            container_name="web",
            image=ecs.ContainerImage.from_ecr_repository(image_repo),
            port_mappings=[{
   "containerPort": 80}]
        )

注意,这里并没有指定具体的imageURI以及tag,这里只是指定了Image Repo(ECR)。后面会在CodeBuildStage阶段build出来docker image,并且接在CodeDeployStage阶段将该docker image部署到Fargate Service
在这里插入图片描述

2.2 创建CodeBuild project

# CodeBuild project that builds the Docker image
        build_image = codebuild.Project(
            self, "BuildImage",
            build_spec=codebuild.BuildSpec.from_source_filename(
                "buildspec.yaml"),
            source=codebuild.Source.git_hub(
                owner="bufanli",    # TODO: Replace with your GitHub username
                repo="web_app",   # TODO: Replace with your GitHub repository name
                branch_or_ref="main",
            ),
            environment=codebuild.BuildEnvironment(
                privileged=True
            ),
            environment_variables={
   
                "AWS_ACCOUNT_ID": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_ACCOUNT') or ""),
                "REGION": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_REGION') or ""),
                "IMAGE_TAG": codebuild.BuildEnvironmentVariable(value="latest"),
                "IMAGE_REPO_NAME": codebuild.BuildEnvironmentVariable(value=image_repo.repository_name),
                "REPOSITORY_URI": codebuild.BuildEnvironmentVariable(value=image_repo.repository_uri),
                "TASK_DEFINITION_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.task_definition_arn),
                "TASK_ROLE_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.task_role.role_arn),
                "EXECUTION_ROLE_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.execution_role.role_arn)
            }

在这里插入图片描述
这里,设定build_spec文件,在app/buildspec.yml中,

  • 设定pre_build登录ecr (‌Amazon Elastic Container Registry(ECR),方便之后的向ecr进行镜像的登录。
        commands:
          - echo Logging in to Amazon ECR...
          - aws --version
          - aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
    
  • 进行build处理
    这里的
        commands:
          - echo Building the Docker image...
          - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
          - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值