当前位置:首页 > 技术分析 > 正文内容

从零开始,打造你的个人 CI/CD 持续集成环境

在当今 DevOps 时代,持续集成(CI)和持续部署(CD) 是软件开发中的核心环节。无论是个人项目还是企业级应用,一个高效的 CI/CD 环境能极大提升开发效率,减少人为失误。今天,我们将从零开始,搭建一个属于你自己的 CI/CD 自动化部署环境。


1. 什么是 CI/CD?


CI(Continuous Integration,持续集成):开发人员频繁地将代码提交到远程仓库,并自动进行代码构建、测试和分析。

CD(Continuous Deployment/Delivery,持续部署/交付):通过自动化的方式,将测试通过的代码部署到服务器,实现无缝更新。


常见的 CI/CD 工具包括:

o Jenkins(老牌 CI/CD 工具,功能强大但配置复杂)

o GitHub Actions(与 GitHub 结合紧密,适合个人项目)

o GitLab CI/CD(GitLab 内置 CI/CD,适合团队协作)

o Drone、CircleCI、Travis CI(适合云端 CI/CD)


2. 从零开始搭建 CI/CD


(1)选择 CI/CD 工具


本次我们使用 GitHub Actions,因为它免费、易用,并且与 GitHub 仓库无缝集成,非常适合个人开发者。


(2)创建 GitHub Actions 工作流

1. 创建 GitHub 仓库

在 GitHub 上新建一个代码仓库,例如 my-ci-cd-project。

2. 编写 Actions 工作流文件

在项目根目录创建
.github/workflows/deploy.yml 文件,并添加以下内容:

name: CI/CD Workflow


on:

push:

branches:

- main


jobs:

build:

runs-on: ubuntu-latest

steps:

- name: 检出代码

uses: actions/checkout@v2


- name: 安装 Node.js

uses: actions/setup-node@v3

with:

node-version: '16'


- name: 安装依赖

run: npm install


- name: 运行测试

run: npm test


- name: 部署到服务器

run: |

ssh user@your-server "cd /var/www/my-project && git pull && npm install && pm2 restart app"

解释:

o 当代码 push 到 main 分支时,触发 CI/CD 工作流。

o 运行 checkout、Node.js 安装、依赖安装、测试和部署 任务。

o 使用 ssh 远程登录服务器,拉取最新代码并重新部署。


3. 自动化部署到云服务器


如果你有自己的服务器(如阿里云、腾讯云、VPS 等),可以通过 SSH 远程执行部署命令。

但如果你希望用 完全托管的 CI/CD 方案,可以考虑:

o Vercel / Netlify(适用于前端项目)

o Heroku / Render(适用于全栈应用)

o Docker + Kubernetes(适用于企业级应用)


4. 如何提升 CI/CD 体验?

o 启用 Webhook:让 GitHub 仓库的每次变更都自动触发 CI/CD 任务。

o 使用 Docker 容器:将 CI/CD 任务打包到 Docker 容器,减少环境依赖问题。

o 结合 Kubernetes:实现更大规模的自动化部署。


总结


通过 GitHub Actions,我们从零开始搭建了一个高效的 CI/CD 自动化部署环境,可以大大提升软件开发效率。你可以在此基础上:

o 加入数据库迁移

o 添加 Slack / 微信通知

o 结合 AWS / GCP / Azure 进行云端部署


有了 CI/CD,你将彻底告别手动部署的烦恼! 现在,赶紧动手试试吧!


你是否已经在用 CI/CD?欢迎留言讨论你的 CI/CD 方案!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3662.html

标签: 集成环境
分享给朋友:

“从零开始,打造你的个人 CI/CD 持续集成环境” 的相关文章

Linux世界的多样性:yum和apt的对比,让你感受不同发行版的特色

yum和apt是两种常用的Linux软件包管理器,它们都可以用来安装、更新和删除软件包。但是,它们之间也有一些重要的区别,本文将对它们进行分析对比。yum是Yellowdog Updater Modified的缩写,它是基于RPM(Red Hat Package Manager)的软件包管理器,主要...

vue:组件中之间的传值

一、父子组件之间的传值----props/$emit1、父组件向子组件传值--props2.子组件想父组件传值-this.$emit('select',item)二、父组件向下(深层)子组件传值----provide/injectprovide:Object | () => O...

java调用API操作GitLab

最近需要在一个WEB项目中集成GitLab,用到了GitLab的API操作,在网上找了很久都是说直接调用GitLab的Http接口,而且API官方只有javadoc没有其它说明文档,特别记录下,以备查询。这里采用Token的认证方式,因此需要先登陆GitLab新建一个Token,创建方式如下:创建完...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

深入理解vue-router原理

说到vue-router就表明他只适合于vue和vue是强绑定的关系;不适合其他框架;现在我们模仿实现一个VueRouter;1.要使页面刷新;借助vue本身的响应式原理;import Home from "./views/Home"; import About from "...

原生微信小程序打包成安卓/IOS应用!#小程序开发

原生微信小程序打包成公。好消息,微信小程序可以直接打包成APP了你们知道吗?微信团队近日开发了一个多端开发平台。多端据文档描述,多端开发框架是支持使用小程序原生语法开发移动端应用的框架。开发者可以一次编码分别编译为小程序安卓以及iOS应用,实现多端开发。我们进入多端框架开发的文档,来看看怎么使用微信...