测试基础 白嫖 GitHub Action 实现开源项目 CICD

花菜 · 2023年04月26日 · 最后由 LinuxSuRen 回复于 2023年04月27日 · 8614 次阅读

这次又来白嫖 Github + DockerHub 完成 CI/CD!

什么是 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 流程。具体可以看看这里

image.png

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 等,确保这些服务也被正确地重启。

image-20230426092026805

在这个时序图中,可以看到整个实战案例中的 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 的看法。你是否已经在项目中应用了这些实践?你认为它们如何帮助你提高效率和质量?请在评论区留下你的想法,让我们一起交流、学习、进步!

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

https://blog.huacai.one/

共收到 9 条回复 时间 点赞

貌似阿里的云效也还不错?用过的朋友说说感受呗

现企业中使用 teambition 中的行云和飞流,其实它和阿里的云效都是阿里系的,内容基本一样;3 年前接触到此产品类时,对比在 C 厂时持续开发交付流程,更便捷了,更可视化了。C 厂软件和服务器都是本地部署,统一用域账号管理,比如代码权限管理,代码走读,代码质量检测,代码编译,版本发布,都是在独立软件或者服务器上,配置工程师需要编写流程脚本,将这些软件连接起来。

人家本来就是免费使用的,何来白嫖一说呢,正常使用就挺好呀。

LinuxSuRen 回复

大佬,点击进去你的主页,吓死我了!!!有拔剑的声音,自动播放

花菜 回复

哪个主页?我还刻意点进去去看了下,没听到。我是不是被诓了?😂

花菜 回复

什么主页?怎么会有声音呢

点击头像,然后进入到个人主页,就开始自动播放了,在浏览器上面有个小喇叭符号
@Rick @5t5

花菜 回复

是这个 B 站视频自动播放了吧

花菜 回复

那确实有点奇怪了,我刚测试了登录和非登录状态,都不会有小喇叭。不过,我录制的 Jenkins 视频教程中确实有那个声音。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册