CodePipeline 是一种完全托管的持续集成与持续交付服务,可以集合CodeCommit,CodeBuild,CodeDeploy服务创建自动化流水线作业,从而实现快速而可靠的应用程序和基础设施更新。
1. 创建ECS集群,运行任务
2. 构建CICD流水线作业
1. 进入ECR点击创建存储库
2. 进入一般配置选项
可见性配置选择私有,填入存储库名称其他保持默认,然后点击创建存储库即可创建
1. 进入ECS服务
2. 点击创建集群
3. 选择AWS Fargate部署模式然后点击下一步
4. 输入集群名称点击创建
5. 创建任务定义
6. 点击创建新任务定义
7. 选择FARGATE模式点击下一步
8. 输入任务定义名称
9. 选择任务执行角色,如果没有角色选择创建新角色,CPU和内存按需选择即可
10. 容器选项配置
a) 点击添加容器
b) 填入容器名称,所使用的镜像和对应端口后点击添加
11. 其余选项保持默认,点击创建
12. 点击集群创建任务
13. 启动模式选择FARGATE选择刚刚创建的任务定义,任务数根据需求调配即可
14. 部署模式选择滚动跟新,然后点击下一步
15. 选择一个VPC和子网,在自动分配公有IP选项出选择ENABLED,然后点击运行任务
16. 负载均衡器选择Application Load Balancer,然后点击添加到负载均衡器
17. 容器配置中填入对应的端口,此次实验的使用的是80,其余配置保持默认然后点击下一步
18. 选择配置服务Auto Scaling以调整您服务的预期计数,输入您的最小,预期和最大任务数
19. 定义拓展策略,然后点击创建任务
20. 使用负载均衡器域名进行访问测试
1. 搜索CodeCommit
2. 点击创建存储库
3. 输入存储库名称然后点击创建
4. 示例代码,请将代码中红色字体修改成对应名称
buildspec.yml
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to AmazonECR...
- aws --version
- $(aws ecr get-login--region $AWS_DEFAULT_REGION --no-include-email)
- REPOSITORY_URI=填入ECR地址
- COMMIT_HASH=$(echo$CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- IMAGE_TAG=build-$(echo$CODEBUILD_BUILD_ID | awk -F":" '{print $2}')
build:
commands:
- echo Build started on`date`
- echo Building the Dockerimage...
- docker build -t$REPOSITORY_URI:latest .
- docker tag$REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- echo Build completed on`date`
- echo Pushing the Dockerimages...
- docker push$REPOSITORY_URI:latest
- docker push$REPOSITORY_URI:$IMAGE_TAG
- echo Writing imagedefinitions file...
- printf'[{"name":"ECS容器名称","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG> imagedefinitions.json
- cat imagedefinitions.json
artifacts:
files: imagedefinitions.json
Dockerfile
FROM nginx
RUN echo '<h1>ECS_CICD Version 1</h1>' >/usr/share/nginx/html/index.html
5. 上传此次项目的实验代码
a) 鼠标下滑找到添加文件选项点击上传文件
b) 将下面提供的代码传到Codecommit中(控制台只能单个文件上传)点击提交
c) 继续上次代码文件,具体步骤与b相同
1. 按照图片顺序创建构建项目
2. 项目配置部分输入项目名称其余选项不需要进行配置
3. 源选择刚刚创建的CodeCommit的存储库分支默认是main
4. 环境配置
a) 选择Ubuntu,运行时选择Standard,映像版本选择3:0
b) 勾选特权选项以便今后部署到ECS。其余选项默认然后创建项目即可
5. 搜索IAM进入
6. 找到您刚刚创建的角色附加AmazonEC2ContainerRegistryFullAccess托管策略
1. 进入CodePipeline创建流水线作业
2. 输入名称进入下一步
3. 源选择刚刚创建的CodeCommit
4. 构建选项中选择刚刚创建的CodeBuild
5. 部署提供应用程序选择ECS,并选择您的ECS集群和服务,然后创建流水线
6. 测试工作流
a) 访问负载均衡器地址
b) 修改CodeCommit中Dockerfile发布版本2
c) 等待流水线作业完成发访问负载均衡查看对应版本,完成版本跟新