什么是CI/CD?让你的项目变得更加敏捷!

在今天这个快速变化的时代,开发者们需要与时俱进,不断提升自己的工作效率。在这篇文章里,将一起探讨如何使用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

  1. 在你的GitHub仓库中创建一个名为.github/workflows的目录。
  2. 在该目录中创建一个YAML文件,如ci-cd.yml,来定义你的工作流程。
  3. 编辑YAML文件,编写工作流程的各个步骤,如检出代码、构建、测试、部署等。
  4. 提交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过程的简要概述:

  1. 定义workflow
  2. 本地修改代码
  3. 创建PR(Pull Request)
  4. 合并PR
  5. 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

  1. 检出代码:Github Action会自动将最新的代码检出到工作环境中。
  2. 构建Docker镜像:根据项目中的Dockerfile,构建新的Docker镜像。
  3. 推送Docker镜像到DockerHub:将构建好的Docker镜像推送到DockerHub,以便其他人可以轻松获取和使用。

CD:自动拉取最新Docker镜像,启动项目,并重启相关服务

  1. 登录部署服务器:通过SSH登录到目标服务器。
  2. 拉取最新Docker镜像:从DockerHub拉取最新版本的Docker镜像。
  3. 启动项目:运行新的Docker镜像,启动项目实例。
  4. 重启相关服务:如果项目依赖其他服务,例如Ngin等,确保这些服务也被正确地重启。
sequenceDiagram
participant Dev as Developer
participant Repo as GitHub Repository
participant GHAction as GitHub Action
participant DockerHub as Docker Hub
participant Server as Deployment Server

Dev->>Repo: Push local changes
Dev->>Repo: Create Pull Request
Dev->>Repo: Merge Pull Request
Repo->>GHAction: Trigger CI/CD workflow
GHAction->>Repo: Checkout code
GHAction->>GHAction: Build Docker image
GHAction->>DockerHub: Push Docker image
GHAction->>Server: SSH login
GHAction->>Server: Pull latest Docker image
GHAction->>Server: Start project instance
GHAction->>Server: Restart related services

在这个时序图中,可以看到整个实战案例中的CI/CD流程。首先,开发者将本地的更改推送到GitHub仓库,并创建并合并Pull Request。当Pull Request被合并时,GitHub Action会自动触发CI/CD工作流程。接下来,GitHub Action会执行一系列操作,包括检出代码、构建Docker镜像、推送镜像到Docker Hub以及登录部署服务器、拉取最新镜像、启动项目实例并重启相关服务。这个时序图可以帮助你更直观地理解CI/CD的过程。

Github Action的优劣势

优势

  1. 与GitHub仓库紧密集成,方便使用。
  2. 支持丰富的事件触发器和可自定义的工作流程。
  3. 免费额度较为充足,适合个人项目和小团队。
  4. 有大量的开源Action可供选择,可以节省时间和精力。

劣势

  1. 对于大型项目和企业级用户,可能需要更高的性能和更多的资源,而Github Action的免费额度有限。
  2. 与第三方服务的集成可能不如专业的CI/CD平台灵活。
  3. 部分高级功能需要付费使用。

在这里,非常希望听到你关于CI/CD和Github Action的看法。你是否已经在项目中应用了这些实践?你认为它们如何帮助你提高效率和质量?请在评论区留下你的想法,让我们一起交流、学习、进步!

如果你喜欢这篇文章,别忘了点赞、分享和关注我的博客,以便在第一时间获取更多关于科技、编程和创新的精彩内容!我们期待与你一起成长!

白嫖GitHub Action实现开源项目CICD的更多相关文章

  1. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  2. 如何参与github上的开源项目

    今晚比较闲,于是乎装修了一下博客,顺便将一块心病(怎么参加github上的开源项目)解决了,最后发个文章总结下 这些是参考的链接 http://blog.csdn.net/five3/article/ ...

  3. Fragment为载体可自己主动布局的CardView(GitHub上写开源项目初体验)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...

  4. Pull Request的正确打开方式(如何在GitHub上贡献开源项目)

    Pull Request的正确打开方式(如何在GitHub上贡献开源项目) GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/f ...

  5. GitHub 优秀Android 开源项目

    阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...

  6. 从工具到实践:如何在GitHub上保障开源项目安全?

    1998年,Christine Peterson创造了 "开源软件"这个词.她解释道:"这是刻意为之,为了让其他人更容易理解这个领域".同年,O'Reilly组 ...

  7. 怎样在Github参与一个开源项目

    转载:http://www.csdn.net/article/2014-04-14/2819293-Contributing-to-Open-Source-on-GitHub 最近一年开源项目特别的热 ...

  8. github 优秀的开源项目

    https://github.com/wlcaption/AndroidMarket---- 这是手机应用商店,包含应用的下载,用户中心等内容 https://github.com/wlcaption ...

  9. 使用github参与到开源项目的维护

    参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是fork项目到自己仓库,然后把修改后的内容发送给项目管理者者请求合 ...

  10. 值得收藏--GitHub Top 20 开源项目

    参考链接:https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md 项目名称                            项目 ...

随机推荐

  1. MySQL使用bin-log将数据恢复到某个时间点

    binlog的三种模式 statement:记录每一条修改数据的sql row:保存哪条记录被修改 mixed:兼顾前两者的优点. # 查看binlog有没有开启 SHOW VARIABLES LIK ...

  2. RabbitMQ身份验证、授权、访问控制

    原文:https://www.rabbitmq.com/access-control.html 概述 不同的用户只能访问特定的虚拟主机.他们在每个虚拟主机中的权限也可以被限制. RabbitMQ支持两 ...

  3. 使用Sales_data 类

    添加两个Sales_data 对象 因为Sales_data 类没有提供任何操作,所以我们必须自己编码实现输入.输出和相加的功能.假设已知Sales_data 类定义于 Sales_data.h 文件 ...

  4. 二、Basic HTML5 知识整理

    一.需要记下的html5知识 1.html5网页文本框架 <!DOCTYPE html> <html> <head></head> <body&g ...

  5. VisualVM简单配置以及插件安装

    一.概述 VisualVM是随JDK发布的功能很强大的运行监视和故障处理程序.除了运行监视,故障处理外,还提供了很多其他方面的功能,如性能分析等.它有一个很大的优点:不需要被监视的程序基于特殊Agen ...

  6. JSP环境搭建及入门 和 虚拟路径和虚拟主机

    Jsp:是一个动态网页,而不是静态网页 html,css,js,Jquery:是静态网页 动态网页是随着,时间,地点,用户操作,而改变 静态不需要jsp 动态是需要的 BS 可以通过浏览器直接访问浏览 ...

  7. 1.HTML中的标签

    1.HTML的基础标签 <!--        -->  表示注释 1)  html语言是解释型语言,不是编译型 浏览器是容错的2)  html页面中由一对标签组成:<html> ...

  8. 定制centos发行版

    //轻量级Centos定制发行版==================================================================================== ...

  9. 记一次dubbo服务丢失的问题排查

    主要环境与用到的(关键)组件: Springboot2.3.2 其中,dubbo-spring-boot-starter版本为2.7.8 zookeeper3.5.9 首先是服务报错: No prov ...

  10. 容灾恢复 | 记一次K8S集群中etcd数据快照的备份恢复实践

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...