GitlabCI/CD入门
构建在AWSS3.静态网站的管道布置在存储桶上
他们都接受各种各样的东西DevOps实践。给我留下深刻印象的一件事是,我们的代码质量、开发速度和团队的整体幸福感如何以及我们CI/CD管道相关。
我认为您的团队管道的成熟度可以很好地代表团队自身的开发人员感受和效率代码质量。
在许多情况下,管道是由的DevOps工程师或特殊的DevOps团队建设和维护。StateofCD根据2022年的报告,只有22%的开发人员建造了它CI/CD管路。
我的目标是让你有自己的管道来帮助增加这个数字,这样你就可以有一个顺利的交付过程,保持联系,并向世界推出一个伟大的代码。
本文将介绍CI和CD请跳转到任何引起你兴趣的部分。
CI/CD到底是什么?
管道的CI和CD阶段
CI/CD管道的阶段
使用AWSS3的GitlabCI/CD示例
CI/CD到底是什么?
许多企业选择敏捷的框架,因为它使他们能够再次确定优先级,提高交付率,提高团队士气和投资回报率。
如果你的公司使用敏捷,从选择几乎是不可避免的DevOps受益于文化、思想和实践。
DevOps在过去的几十年里,流行语已经成为一种必要的实践,并被视为行业标准。CI/CD是一种DevOps该策略可以帮助软件开发团队频繁可靠地更改代码。
“快速构建,快速测试,快速失败。”
以自动化测试为战略核心,鼓励团队频繁可靠地自动化任务和交付代码。
一旦建立了CI/CD管道,这将带来几个好处。公司受益于成本低、生产力高、上市时间快、适应不断变化的需要。
团队受益于快速反馈、更好的发展感受、更少的瓶颈、更高的员工奉献精神和工作满意度。
管道的CI和CD阶段
持续集成——CI
持续集成旨在频繁地将代码变更提交并合并到代码库的主干中,一般每天几次。
它得益于承认人类认知能力有限,从而鼓励开发人员建立更容易审查的小变化,涵盖自动化测试和频繁发布。
这避免了发布准备日等事情。这些事情一般压力很大,充满了棘手的合并矛盾和大量的手动测试,会破坏运输过程,对每个参与这个过程的人来说都不是一种好感觉。
持续交付——CD
这是CI下一步。目标是确保代码库始终处于可布局状态,并且可以通过点击按钮进行布局。
这里的关键是自动化,无论是大规模分布式结构还是复杂的生产环境。
持续部署——CD
完善的CI/CD在生产环境中,管道的最后和最后阶段都是自动布置的,不需要人工控制。
当然,这并不容易,需要仔细考虑自动化测试。CD的状态说明
“47%的开发人员使用连续集成或部署,但只有五分之一的开发人员使用连续集成和部署方法自动化所有代码构建、测试和部署到生产环境。”
Accelerate这本书总结了多年DevOps多年来,国家报告的严格研究是基于来自世界各地企业的2.3万个数据。正如你所看到的,高绩效的人可以按需分配/每天分配几次
CI/CD管道的阶段
源阶段
这种情况经常发生在源阶段Git仓库发生变化后,表现为打开新的获取请求或推送到分支。
另一种方法是配备你CI/CD通过自动计划或在另一条管道运行后触发您的管道。
搭建阶段
构建阶段是您检查代码并构建它的地方。docker因为它带来了一致的环境,所以这种工具大放异彩。
測試阶段
如前所述,没有自动化测试CI/CD。毕竟,我们希望确保我们更改的代码不会破坏生产。
布署阶段
在最后阶段,在成功通过前一阶段后,您现在可以在您选择的环境中部署代码。
Gitlab示例
在这个例子中,我将使用它GitlabCI/CD,但是其它工具的概念是相似的,所以你也可以将其应用于其他存储和托管服务。
有几种CI/CD工具,如著名的行业领导者Jenkins,它需要一些设置和配备工作,而其他工具需要提前配备由GitHubActions和BitbucketPipelines提供存储仓托管服务等提供存储仓托管服务
这就是为什么如果你的代码托管在那里Gitlab上,然后用GitLabCI/CD因为代码和CI/CD在同一个平台上管理。
你可能会问,如果不需要配备,它是如何工作的?
要理解这一点,我们应该稍微探索一下Gitlab特别是GitlabInstances和GitlabRunners。
Gitlab案例是管理您的应用程序编程代码和管道的机器。
Gitlabrunners作为管道执行代理的独立机器。
每个GitLab案例可以连接到一个或多个操作器。
Gitlab.com托管GitLab案例,并提供多个原因Gitlab自己维修的Runners,所以如果你用的话Gitlab.com,可以开箱即用。
入门
Gitlab在新项目中有几个模板。GitLabCI/CD管道配备默认位置.gitlab-ci.yml在根目录。
假设我们想建立一个简单的管道,以确保代码已经建立、测试和部署。但首先,您应该熟悉以下概念和术语。
流水线
流水线是多期作业的集合。Gitlab提供基本流水线、合并流水线、父子流水线、多项目流水线等不同类型的流水线
阶段:
阶段是管道的一个步骤,它提供相关操作的信息。一个阶段可以包含一个或多个工作。流行示例:施工、测试和部署。
工作
管道的构造是执行操作,如lint,编译、测试和部署。每项工作都应该定义一个name和,一旦所有的作业都在一个阶段完成,管道就会进入下一阶段。script
现在-标准
构建,检测静态网站并将其部署到AWSS3存储桶的GitlabCICD管路示例。
创建一个新.gitlab-ci.yml让我们开始吧。
定义变量
variables: # 变量定义,便于重量值。
CI_NODE_IMAGE: “节点:16.13.2”
2.定义阶段
# 流水线阶段
stages:
- install
- build
- test
- deploy
3.定义每个阶段的工作阶段
#install 作业定义
install:
stage: install
image: "$CI_NODE_IMAGE" # variable reference
script: # runner 执行的 Shell 脚本。
- npm ci
cache: # 文件列表需要在后续操作之间缓存。
key:
files:
- package.json
- package-lock.json
paths: # 缓存目录
- node_modules
# Build Job definition
build:
stage: build
image: $CI_NODE_IMAGE
script:
- npm run build
artifacts: #附加到
作業
的 文件和目录列表_ _ _ _ _ _ _ _ _ _ _ _ : $CI_NODE_IMAGE script: - npm run test # Deploy Job definition deploy: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest # GitLab 提供的包含 AWS CLI 的 Docker腳本:
- aws s3 cp --recursive dist s3://bucket-name # 將 dist 文件夹复制到 aws s3 存儲桶
感谢阅读
声明本文内容来自网络,若涉及侵权,请联系我们删除! 投稿需知:请以word形式发送至邮箱18067275213@163.com
这个思路是英文的。对于中文的恐怕不可能这样
今天已经是3-2号了。什么时候出书呀。很期待呀。我会尽可能地买书地!!!!
我喜欢这歌,唱出SEO的心声。
看了你的seo60天流量提高二十倍才正式的了解了seo,跪求点石互动论坛注册邀请码,也好自己去学习学习
车东这个网站和这条消息,我很早就注意到了,但是因为种种原因,迟迟没有联系他
诶 厦门 貌似有点远了
站长你好,关注你的博客已经好长一段时间了,想跟你探讨一些seo的问题。关于网站的百度快照与site出来的快照不相符的问题不晓得你试过没?我们的网站之前在百度权重挺大的,前段日子由于改版给百度K了,之后我们努力更新内容,但是发现百度快照跟site出来的快照日期不符合,site出来的快照总是不更新日期,我在网上找过相关资料,一般都是说site出来的快照日期比搜索出来的快照更新,可我们的网站是相反的,经常一周都没更新,郁闷死。不晓得你对这问题有啥看法,能否提些优化建议?不同关键词,相同页面,快照日期经常不一样。原因不明。不过我不认为和惩罚有什么关系,几乎所有网站都这样。
我想当着谷歌工程师的面,跟百度工程师说,为什么差距这么大?