cicd自动化部署(Ubuntu22.04)

一、CI/CD 自动化部署是什么?

CI/CD(持续集成/持续交付/持续部署) 是一种通过自动化工具和流程,将软件开发中的构建、测试、部署等环节自动化的方法。它的核心目标是提高软件交付效率、降低风险,并确保软件质量。

  • 持续集成(CI)

:开发人员频繁将代码合并到主分支,每次提交都会触发自动化构建和测试,确保代码集成没有问题。

  • 持续交付(CD)

:在持续集成的基础上,自动化地将代码部署到测试或预发布环境,确保代码可以随时发布。

  • 持续部署(CD)

:在持续交付的基础上,自动化地将代码部署到生产环境,实现完全自动化的发布流程。

CI/CD 自动化部署依赖于一系列工具(如 Jenkins、GitLab CI、GitHub Actions、CircleCI 等)和脚本,将开发、测试、部署等环节串联起来,形成一个高效的流水线。

对比维度

CI/CD 自动化部署

手动部署

脚本化部署

部署速度

极快,自动化流水线可以在几分钟内完成构建、测试和部署。

慢,依赖人工操作,容易出错且耗时。

较快,但需要手动触发脚本,且脚本可能不够灵活。

部署频率

支持高频部署,每天可以多次发布。

低频部署,通常以周或月为单位。

中频部署,依赖脚本的完善程度。

人为错误

几乎无,自动化流程减少了人为干预。

高,依赖人工操作,容易出错。

较低,但仍需人工触发脚本,存在一定风险。

测试覆盖率

高,每次提交都会触发自动化测试,确保代码质量。

低,测试依赖人工操作,可能遗漏。

中,脚本可以包含测试,但覆盖范围有限。

回滚能力

快速回滚,自动化工具支持一键回滚到稳定版本。

慢,回滚需要人工操作,容易出错。

较快,但需要手动执行回滚脚本。

环境一致性

高,自动化工具确保每次部署的环境一致。

低,人工操作可能导致环境差异。

中,脚本可以部分保证一致性,但仍有风险。

团队协作

高效,开发、测试、运维团队通过自动化流水线紧密协作。

低效,团队之间沟通成本高,容易产生误解。

中效,脚本化部署需要团队协作编写和维护脚本。

学习成本

较高,需要学习和配置 CI/CD 工具和流水线。

低,依赖人工操作,无需额外学习。

中,需要编写和维护脚本,学习成本适中。

适用场景

适合需要快速迭代、高频发布的现代软件开发(如互联网应用、微服务架构)。

适合小型项目或对发布频率要求不高的场景。

适合中等规模项目,但对自动化要求不高的场景。

工具依赖

依赖 CI/CD 工具(如 Jenkins、GitLab CI、GitHub Actions 等)。

无需额外工具,依赖人工操作。

依赖脚本(如 Shell、Python 脚本)和简单工具。

成本

初期投入较高(工具、学习、配置),但长期收益显著(效率提升、风险降低)。

初期成本低,但长期效率低、风险高。

初期成本适中,但维护脚本的成本较高。

 二、准备工作

准备一个服务器

工具xftp8和xshell8

三、具体步骤

1.更新服务器

sudo apt update

 2.下载docker

sudo apt install docker-ce

3. 验证是否安装成功

docker

4. 安装成功会显示以下内容

 5.使用docker拉取镜像

docker pull jenkins/jenkins:lts

 6.运行jenkins容器

Jenkins运行端口是8080给他映射到8899 50000是jenkins用于通信的

jenkins-data2:容器卷 名字

/var/run/docker.sock:/var/run/docker.sock -v在物理机中可以使用docker 把物理机的docker可以让容器用

jenkins/jenkins:lts 镜像

docker run -u root --name jenkins-test1 -d -p 8899:8080 -p 50000:50000 -v jenkins-data2:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts

7. 服务器安全组放行8899端口

8.服务器放行端口

sudo ufw allow 8899/tcp

9. 访问服务器的公网ip:8899

10. 服务器进入容器

docker exec -it  jenkins-test1 /bin/bash

11. 查看管理员密码(路径就是第8步的路径)

cat /var/jenkins_home/secrets/initialAdminPassword

12. 填写密码

13.安装插件

14.创建管理用户

15.实例配置(服务器ip:8899)

16.安装插件

 

17.下载nvm

18. 下载gitee

19. 添加凭据

 

20. 返回Dashboard创建item

21. 添加gitee仓库

22.添加nvm 

23.添加构建步骤 

 

#我这里使用了淘宝镜像源

npm install --registry=https://registry.npm.taobao.org


npm run build --registry=https://registry.npm.taobao.org

24.再次添加步骤 

 

docker build -t test-ui:latest .

 执行完成之后再次增加构建步骤(80需要关闭防火墙才可以执行下面我改为了99端口 )

# 定义容器名称
container_name="test-ui"

# 检查容器是否存在
if docker ps -a | grep -q $container_name; then
    # 如果容器存在,则删除它
    docker rm -f $container_name
else
    # 如果容器不存在,跳过删除操作
    echo "容器不存在,跳过删除操作。"
fi

# 通过镜像运行一个新的容器
docker run -d --name $container_name -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -v /home/ddxpc/ui/logs:/home/ddxpc/ui/logs -p 99:8088 test-ui:latest

 25.在项目中创建两个文件

 

 Dockerfile文件
FROM nginx

# 设置别名
RUN echo 'alias ll="ls -"' >> ~/.bashrc

# 更新 apt-get 包索引
RUN apt-get update

# 安装 bash 和 vim
RUN apt-get install -y bash vim

# 安装 ping
RUN apt-get install -y iputils-ping

# 安装并配置语言工具包,防止中文乱码
RUN apt-get install -y locales
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8  

# 安装 net-tools 包,它包含了 netstat 工具
RUN apt-get install -y net-tools

# 复制构建好的 dist 文件
COPY ./dist /home/ddxpc/ui/dist

# 移除 Nginx 配置文件中的默认配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义的 Nginx 配置文件到容器中
COPY ./nginx_dev.conf /etc/nginx/conf.d

# 暴露 Nginx 的 80 端口
EXPOSE 80
nginx_dev.conf文件
server {
    listen 8088;
    server_name 123.57.222.215;
    charset utf-8;

    # 指定日志路径
    access_log /home/ddxpc/ui/logs/access.log;
    error_log /home/ddxpc/ui/logs/error.log;  

    # 根目录配置
    location / {
        root /home/ddxpc/ui/dist;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
    }


    # 错误页面配置
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

26.把本地代码推送gitee仓库

27.打开服务器公网ip:8899开始构建

构建中

控制台详情

构建完成

访问 http://123.57.222.215:99/ 启动本地做对比

28. 推送代码自动构建并部署

 

 

 

推送代码

 

访问

### CI/CD 自动化部署流程图解释 #### 一、触发构建 当开发者向仓库提交代码更改时,GitLab 的 Webhook 将检测到这些变化并通知 GitLab CI/CD 系统。此时会触发一个新的流水线执行[^1]。 ```mermaid graph LR; A[开发人员推送代码更新] --> B{Webhooks监听} ``` #### 二、运行单元测试和其他静态分析工具 一旦收到通知,GitLab CI/CD 开始创建一个或多个作业来编译应用程序源码,并对其进行必要的质量检查,比如运行单元测试套件以及使用各种静态分析器扫描潜在的安全漏洞等问题[^2]。 ```mermaid graph LR; C(Webhooks接收到事件) --> D[启动Pipeline]; D --> E[准备环境]; E --> F[拉取最新版本库]; F --> G[安装依赖项]; G --> H[执行构建命令]; H --> I[运行单元测试及其他QA任务] ``` #### 三、打包制品 如果上述阶段均成功完成,则继续进入打包环节,在这里通常会对应用进行压缩处理形成可分发文件包(如 Docker 镜像),以便后续能够方便快捷地将其发布至目标服务器上。 ```mermaid graph LR; J(所有测试通过) --> K[创建Artifacts]; K --> L[上传制品存储服务] ``` #### 四、部署前验证 为了确保即将上线的应用程序稳定可靠,在正式对外提供之前还需要经历一轮更严格的验收测试——即所谓的“预生产”环境下的功能性和性能方面的全面检验;只有当一切正常无误之后才会考虑进一步的动作。 ```mermaid graph LR; M(制品已准备好) --> N[部署到Staging环境]; N --> O[执行集成测试]; O --> P[确认稳定性] ``` #### 五、自动部署至生产环境 最后一步就是把已经过充分考验后的软件产品直接推送到实际使用的线上环境中去,整个过程由 GitLab Runner 完成自动化操作而不需要任何人为干涉,从而实现了真正的持续交付乃至持续部署的目标。 ```mermaid graph LR; Q(满足条件) --> R[触发生产环境部署]; R --> S[监控部署状态直至结束] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值