如何实现一套完整的CI/CD?

CI/CD在项目中的作用不可言喻,避免了手工操作的低级失误以及便捷了开发部署项目。首先实现完整CI/CD,需要一些前置知识。
CI是什么?

CI是持续化集成。他主要流程其实就是开发将代码上传到Github,持续集成工具(Github action, Jenkins)检测到新的代码提交,会触发构建过程,生成应用镜像,推送到镜像仓库(docker hub, jfroger)。

CD是什么 ?

CD是持续化部署,当检测到新的镜像,就会启动这个镜像,生成容器。

如果是一般的项目,一般CI / CD是集成在一起, 当我们Jenkins检测到github的变化,我们就会开始build,build完成后,启动镜像,完成部署。

什么是Docker ?

Docker在网上介绍很多,用我的大白话,Docker是一整个大箱子, 这个大箱子装有很多小箱子,每个小箱子就是一个镜像, 如果我们打开这个小箱子,那么就是启动了这个容器,容器之间是相互隔离的。

什么是Jenkins ?

Jenkis是基于Jave开发的持续构建工具平台,主要用于持续、自动的构建和测试项目。它可以执行你预先设定好的构建脚本,也可以和Git集成,实现自动触发。

安装Docker和Jenkins网上教程很多,或者直接去官网下载都可以。此处便不再赘述。

启动Jenkins后,默认端口是8080,可以访问看是否成功启动。初次打开时,按照提示去你系统的文件夹里面找到它预设的默认密码,然后会让你安装一些推荐的plugin,直接安装就好,然后设置下个人信息,就可以打开这个页面。

1. Jenkins集成GitHub

  • 首先我们需要创建一个项目,当我们Jenkins初始化成功后,能得到这样的界面,点击New Item创建一个新的应用。输入项目名称后,勾选Freestyle project,点击ok创建应用。
  • 配置Github仓库地址,Github账户私钥,以及分支匹配规则。
  • 配置Github仓库地址,选择SSH,copy过来就好。
  • Github账户公钥私钥设置

首先电脑上肯定是需要安装git的, 其次是全局设置下当前git账号的邮箱和账号。最后一条是生成当前git账号邮箱的公钥和私钥。生成后的文件~/.ssh 默认在这个文件夹会生成id_rsa是私钥文件,id_rsa.pub是公钥文件。

javascript 复制代码
git config --global user.email "xxx"
git config --global user.name "xxx"  
ssh-keygen -t rsa -C "your email"    

将公钥文件,复制下来,生成一个新的SSH key。

点击Credentials的Add按钮,将私钥添加进去。

打开后选择Kind为SSH,id和description,username自行填写。最后添加Private Key,Private Key就是我们生成的私钥。

2.编写 project build 流程

我们继续在project configure界面中配置build steps, 我这里的流程主要是build镜像,然后再启动当前容器。

其实到此,基本的ci/cd架子已经起来了,我们可以直接点击Build Now,开始执行脚本,开始部署。

相关推荐
白帽攻防录13 小时前
SRC 挖洞:Claude Code Action 供应链 RCE 深度复盘,CVE-2026-47751 一个 PR 怎么偷走你所有 CI/CD 密钥
网络安全·ci/cd·供应链安全
hasty1 天前
安全扫描器也要被隔离:Trivy Terraform 文件读取漏洞与 CI 输出边界
安全·ci/cd·terraform
事圆则缓3 天前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
行者-全栈开发6 天前
【码动四季·秋】从 commit 到发版全自动:Conventional Commits + semantic-release 发布流水线实战
git·ci/cd·自动化发布·atomgit·semantic-releas·语义化版本自动化·git 提交规范落地
Zhou1411366 天前
CICD_01_持续集成与Jenkins入门
运维·ci/cd·jenkins
大貔貅喝啤酒7 天前
Gitea+Jenkins+Docker 搭建 Node 项目 CI/CD 自动部署完整教程
ci/cd·docker·jenkins·js·gitea
smartpi_ai7 天前
通用脱机烧录器为什么烧不进 CI-03?下载协议的门槛、免唤醒 10 条的建议值属性
服务器·网络·ci/cd
极小狐7 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署
用户837133200767 天前
AI 写的发布流程 CI 全绿,为什么仍没通过需求验收?
ci/cd·github
天天喝旺仔7 天前
CI/CD 实战:GitHub Actions 自动化构建、测试与发布流水线
ci/cd·自动化·github·devops·持续集成