介绍
本文内容
CI/CD让我们用(持续集成/持续交付)准备一个开发环境!即使你有一个ToBe,也很难突然创建一个理想的管道。
所以,这次使用个人 AWS 账户CI/CD我尝试实现了一个简单管道的示例,可以说是实现的管道中的“最小配置”
以此为基础,你可以真正地创造和学习,扩展你的形象,添加和更新你需要的服务,成为一名ToBeCI/CD我想用它作为建筑的基础。
参考
以下基于 AWS 官方上机。基于此内容,我们添加了一些更改,例如使用 CodeCommit 代替 Github。
前提
- 我有 AWS 账户并且知道基本操作和设置
- 了解 Git 帐户/工具的基本知识,如何设置它们等。
- 即使环境和工具有一些差异,也可以酌情吸收!你可以谷歌它!
宪法
我们将通过以下五个部分来实现如图所示的最小持续交付实现。
-
设置存储库 (CodeCommit)
-
平台设置 (BeansTalk)
-
构建项目设置 (CodeBuild)
-
设置交付管道 (CodePipeline)
-
实现持续交付
-
成本
虽然取决于个人使用情况,但我们完全不能保证,
在我的情况下我想在创建帐户后的 12 个月内,我可以在免费框架内以 0 日元的价格做到这一点。日志输出到Beantalk的机器费和S3,API在pipeline上飞来飞去,请自行查看收费情况。 (这还不错,因为它可能涵盖计费元素,因此您自担风险。)
动手程序
我将从以下描述我实际尝试过的实践流程。
一切都在东京地区完成。
未指定的设置在当时保留为默认设置。1. 存储库设置
概述
代码提交我们将在上面构建一个存储库。
您可以稍后将此存储库作为管道中的源引用,或者检测更改并启动自动交付。注意,AWS 动手由于我们使用的是 Github,请参考那些想在 Github 上做的人,或者对 CodeCommit 有问题或无法进行身份验证的人。
创建存储库
代码提交打开控制台
将输出存储库列表,因此请按 [创建存储库] 按钮。
输入以下存储库设置,然后单击 [创建] 按钮。
物品 输入值 存储库名称 光盘 克隆存储库
将创建的存储库克隆到本地计算机。从存储库的“克隆 URL”复制 HTTP URL,然后在本地计算机上键入以下命令。
git clone https://~~~在本地克隆 CodeCommit 存储库时,需要某种身份验证。例如,如果您从 AWS IAM 用户屏幕打开“凭证”选项卡,则会有一个项目用于为 CodeCommit 生成凭证。
我们会将文件适当地添加到创建的本地存储库中。在这里,尝试推送返回以下 Hello World 的应用程序的 app.js。
应用程序.jsconst express = require('express'); const app = express(); const port = 8080; app.get('/', (req, res) => res.send('Hello World!')); app.listen(port); console.log(`App running on http://localhost:${port}`);git add app.jsgit commit -m "change message"git push检查
确认您在本地提交和推送的文件也存在于 AWS CodeCommit 控制台中。
2.平台设置
概述
弹力豆茎准备用于部署应用程序的环境。首先,在本节中,我们将构建一个 Web 服务器来显示 AWS 示例代码。稍后,它将是一个运行我创建的 app.js 并显示 Hello World 的 Web 服务器。
我觉得 Beanstalk 相当频繁地改变屏幕的布局。
创建豆茎
豆茎打开控制台
首先,环境列表被输出,所以按下[创建新环境]按钮。
在“选择环境”中,选择 Web 服务器环境。在下一页输入以下设置。
物品 输入值 应用名称 光盘 环境 cd_consideration 平台 节点.js 应用代码 示例应用程序 按创建环境按钮。
等待一段时间以创建环境。检查
一旦环境被创建并显示在列表中,就会生成一个指向在 Beanstalk 上运行的 Web 服务器的 URL 链接,因此请移至它。
确保您可以访问显示祝贺的示例网页。3.构建项目设置
概述
代码构建使用 .定义设置各种运行时等和编译源代码的细节。
创建构建项目
代码构建打开控制台
将输出项目列表,因此请按[创建构建项目]按钮。
输入以下设置值。
物品 输入值 项目名称 cd_consideration ld 源提供者 AWS 代码提交 存储库 光盘 环境形象 托管映像 操作系统 亚马逊 Linux 2 运行 标准 图片 aws/codebuild/amazonlinux2-x86_64-standard:3.0 环境类型 Linux 服务角色 新的服务角色 角色名称 codebuild-cicd-build-service-角色 构建规范设置
每个构建过程和环境变量都可以写入并保存在名为 buildspec.yml 的文件中。
选择“插入构建命令”和“切换到编辑器”。替换为下面的代码。version: 0.2 phases: build: commands: - npm i --save artifacts: files: - '**/*'按创建构建项目按钮。
检查
按下创建按钮后,确认输出“以下项目已成功创建:Cicd_kangaezaru-build”。
4. 创建交付管道
概述
代码管道建立一个能够持续交付的管道在这里,CodeCommit 代码是使用 CodeBuild 作为源构建的,部署到 Beanstalk 的顺序是无缝自动化的。
设置 CodePipeline
代码管道打开控制台
将输出管道列表,因此请按 [创建管道] 按钮。
输入以下设置值。
物品 输入值 管道名称 Shi cd_我不这么认为 服务角色 新的服务角色 角色名称 AWSCodePipelineServiceRole-cicd-line-service-role 按下一步按钮。
源阶段放。
物品 输入值 源提供者 AWS 代码提交 存储库名称 光盘 分店名称 掌握 按下一步按钮。
构建阶段放。
物品 输入值 源提供者 AWS CodeBuild 地区 亚太地区(东京) 项目名称 cd_consideration ld 分店名称 掌握 按下一步按钮。
部署阶段放。
物品 输入值 源提供者 AWS Elastic Beanstalk 地区 亚太地区(东京) 应用名称 光盘 环境名称 cd_consideration 按下一步按钮。
在审查页面上审查它,然后按 Create Pipeline 按钮。
检查
执行通过源、构建和部署阶段进行。
稍等片刻,source 和 build 阶段都变绿了,但是 deploy 有错误。如果您只推送 app.js,则需要添加另一个文件,它会按预期工作。
5.实现持续改进和交付
概述
修复错误部分并再次运行管道以执行自动部署。这使得在实际开发过程中可以立即检查环境中的修正,并不断进行改进和反映。
改善行动
在您机器的本地存储库中创建以下文件以消除错误。 (在 AWS 手册中样本比)
包.json{ "name": "aws-elastic-beanstalk-express-js-sample", "version": "1.0.0", "description": "Sample Node.js (Express) app for AWS Elastic Beanstalk", "main": "app.js", "scripts": { "start": "node app.js" }, "repository": { "type": "git", "url": "git+https://github.com/aws-samples/aws-elastic-beanstalk-express-js-sample.git" }, "license": "MIT-0", "dependencies": { "express": "^4.17.1" } }提交并推送文件。
git add package.jsongit commit -m "change message"git push验证和持续交付
推时代码管道创建的管道将再次从源阶段开始运行。
我认为这次它会输出部署阶段成功。在部署阶段AWS Elastic Beanstalk点击链接查看将打开一个新选项卡,列出您的 Elastic Beanstalk 环境。
单击您创建的环境的 URL。您将看到一个带有白色背景的网页和您上次提交的文本(Hello World 等)。当然,如果你改了Hello World和commit/push等字符,文字也会变,所以请验证一下。
综上所述
您现在拥有一个最小的持续交付管道。
基于此,让我们通过结合其他服务来追求理想的CI/CD,替换为其他语言的开发验证,增加单元测试和集成测试阶段!
删除不再需要的资源 (此页面上的清理参考)。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622638.html