在今天这个快速变化的时代,开发者们需要与时俱进,不断提升自己的工作效率。在这篇文章里,将一起探讨如何使用CI/CD和Github Action让你的项目更加高效,快速响应市场变化。
什么是CI?
CI(持续集成,Continuous Integration)是一种软件开发实践,它要求开发者频繁地将代码集成到共享的主干分支中。每次集成都会触发自动化的构建和测试,以便尽早发现和修复问题,减少整体风险。
什么是CD?
CD(持续交付和持续部署,Continuous Delivery/Deployment)是一种紧密跟随CI的实践。它要求在一个自动化的、可复制的环境中,持续地将软件交付给客户或部署到生产环境。这样可以确保软件始终处于可交付或可部署的状态。
使用CI/CD的目的
采用CI/CD的主要目的是提高软件开发过程的效率和质量,从而加快交付速度,缩短反馈周期,降低风险,提高客户满意度。CI/CD在敏捷开发、DevOps等现代软件开发方法中扮演着核心角色。
Github Action是什么
Github Action是GitHub提供的一项自动化服务,它允许你在GitHub仓库中直接定义、构建和执行CI/CD流水线。你可以创建自定义的工作流程,以响应各种事件,如代码提交、Pull Request或者定时任务。
如何在自己的项目上使用Github Action
- 在你的GitHub仓库中创建一个名为
.github/workflows的目录。 - 在该目录中创建一个YAML文件,如
ci-cd.yml,来定义你的工作流程。 - 编辑YAML文件,编写工作流程的各个步骤,如检出代码、构建、测试、部署等。
- 提交YAML文件到仓库,Github Action会自动执行你定义的工作流程。
Github + DockerHub等于CI/CD
通过将Github Action与DockerHub等其他服务相结合,你可以更轻松地实现CI/CD。例如,你可以将构建好的Docker镜像推送到DockerHub,然后使用Kubernetes等工具将镜像部署到生产环境。
如何利用Github Action实现CI/CD:一个实战案例
在前面的文章中,已经了解了CI/CD的基本概念和Github Action的功能。接下来,将通过一个实际的Github项目来详细介绍如何使用Github Action实现CI/CD流程。
以下是整个CI/CD过程的简要概述:
- 定义workflow
- 本地修改代码
- 创建PR(Pull Request)
- 合并PR
- workflow自动触发完成CI/CD
具体步骤如下:
1. 定义workflow
在你的GitHub仓库中创建一个名为.github/workflows的目录,然后创建一个YAML文件,如ci-cd.yml,用于定义你的CI/CD流程。具体可以看看这里
2. 本地修改代码
在本地环境中修改代码并进行测试,确保代码的质量和可用性。
3. 创建PR(Pull Request)
将本地修改的代码提交到GitHub仓库,并创建一个PR,以便其他团队成员进行代码审查(呜呜呜,然而我没有其他成员)。
4. 合并PR
在代码审查通过后,合并PR到主干分支。
5. workflow自动触发完成CI/CD
一旦PR被合并,Github Action会自动触发定义好的workflow。在本案例中,workflow将完成以下任务:
CI:自动构建Docker镜像,推送到DockerHub
- 检出代码:Github Action会自动将最新的代码检出到工作环境中。
- 构建Docker镜像:根据项目中的
Dockerfile,构建新的Docker镜像。 - 推送Docker镜像到DockerHub:将构建好的Docker镜像推送到DockerHub,以便其他人可以轻松获取和使用。
CD:自动拉取最新Docker镜像,启动项目,并重启相关服务
- 登录部署服务器:通过SSH登录到目标服务器。
- 拉取最新Docker镜像:从DockerHub拉取最新版本的Docker镜像。
- 启动项目:运行新的Docker镜像,启动项目实例。
- 重启相关服务:如果项目依赖其他服务,例如Ngin等,确保这些服务也被正确地重启。
在这个时序图中,可以看到整个实战案例中的CI/CD流程。首先,开发者将本地的更改推送到GitHub仓库,并创建并合并Pull Request。当Pull Request被合并时,GitHub Action会自动触发CI/CD工作流程。接下来,GitHub Action会执行一系列操作,包括检出代码、构建Docker镜像、推送镜像到Docker Hub以及登录部署服务器、拉取最新镜像、启动项目实例并重启相关服务。这个时序图可以帮助你更直观地理解CI/CD的过程。
Github Action的优劣势
优势
- 与GitHub仓库紧密集成,方便使用。
- 支持丰富的事件触发器和可自定义的工作流程。
- 免费额度较为充足,适合个人项目和小团队。
- 有大量的开源Action可供选择,可以节省时间和精力。
劣势
- 对于大型项目和企业级用户,可能需要更高的性能和更多的资源,而Github Action的免费额度有限。
- 与第三方服务的集成可能不如专业的CI/CD平台灵活。
- 部分高级功能需要付费使用。
在这里,非常希望听到你关于CI/CD和Github Action的看法。你是否已经在项目中应用了这些实践?你认为它们如何帮助你提高效率和质量?请在评论区留下你的想法,让我们一起交流、学习、进步!
相关领域拓展:(技术前沿)
扯个嗓子!关于目前低代码在技术领域很活跃!
低代码是什么?一组数字技术工具平台,能基于图形化拖拽、参数化配置等更为高效的方式,实现快速构建、数据编排、连接生态、中台服务等。通过少量代码或不用代码实现数字化转型中的场景应用创新。它能缓解甚至解决庞大的市场需求与传统的开发生产力引发的供需关系矛盾问题,是数字化转型过程中降本增效趋势下的产物。
这边介绍一款好用的低代码平台——JNPF快速开发平台。近年在市场表现和产品竞争力方面表现较为突出,采用的是最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue3)。代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发。
以JNPF为代表的企业级低代码平台为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动,还没有了解过低代码的伙伴可以尝试了解一下。
有了它,开发人员在开发过程中就可以轻松上手,充分利用传统开发模式下积累的经验。所以低代码平台对于程序员来说,有着很大帮助。