自动化部署

1. 什么是自动化部署

自动化部署是指通过代码仓库的变动,自动触发构建、测试、部署等流程。vercel 部署博客就是自动化部署,本地提交代码到 github, vercel 监听到代码部署后自动构建,部署到服务器。省去了将项目打包、上传服务器、部署的繁琐步骤,将一切交给软件自动完成。

这里仅介绍我个人使用的两个部署方案: jenkins 与 云服务商提供的自动部署服务,如果你在阿里云等云服务商购买了服务器,而他们也提供自动化部署服务,那么我更推荐使用云服务商提供的自动化部署服务,毕竟 jenkins 相对臃肿,也更费服务器的性能;

友情提示:正真自动化部署远比我这个复杂、全面,我的方案仅供参考

2. 通过 jenkins & nginx 部署

jenkins 是一个自动化部署工具,更多信息详见 jenkins 官网

2.1 安装 jenkins

官网详细介绍了 jenkins 的安装: jenkins 安装

使用 jenkins 还需要安装 java: java 下载注意:推荐下载 JDK21

安装 java 使用 dpkg -i 命令安装,安装完成后使用 java -version 查看版本,如果安装成功,会显示 java 版本信息。

2.2 jenkins 配置

jenkins 默认配置文件目录为:/lib/systemd/system/jenkins.service,需要端口被占用可以修改配置文件的 port 配置项

jenkins 默认工作目录为:/var/lib/jenkins/workspace/

在使用前我们还需要给 jenkins root 权限,否则在自动化部署过程中涉及文件的操作可能会显示权限不足

jenkins 设置 root 权限:

更改配置文件的配置项 jenkins 为 root:
root权限

重新加载配置文件: systemctl daemon-reload

重启 jenkins: systemctl restart jenkins

当 jenkins 启动后,访问 http://ip:port 即可进入 jenkins 页面

创建自动部署项目

  1. 安装 node

    在 系统管理 - 插件管理 - available plugins 中,添加 nodejs 安装包

    nodejs

  2. 下载对应的 node 版本
    在 系统管理 -> 全局工具配置 -> NodeJS 安装 (在最下面)选择相应的 node 版本点击 保存

    nodejs

  3. 创建自动化部署任务

    选择新建任务,输入任务名称,选择 构建一个自由风格的软件项目:

    新建任务

    在源码管理处选择 git,输入仓库地址和分支,分支需要对应正确否则会导致构建失败:
    git

    如果你之前没有配置,点击 添加 - jenkins 来添加 github 用户名和密码:

    添加用户

    用户名为 github 用户名,密码为 github token 需要在 github 生成:

    github - setting - developer settings - personal access tokens -tokens,点击 generate new token 选择 classic,将生成的 token 填入 jebkins 密码中

    github

    分支地址选择 main(与你项目中的分支保持一致),分支不一致会导致构建项目执行失败
    构建

    构建触发器选择:github hook
    github

    构建环境选择 node
    node

    buildstep: 代码拉下来后的动作,我们选择执行 shell, 并添加以下命令
    shell

    完整命令:

    1
    2
    3
    4
    5
    6
    7
    rm -rf node_modules
    npm i
    npm run build
    rm -rf /usr/share/nginx/test
    mv ./dist /usr/share/nginx
    cd /usr/share/nginx
    mv ./dist test

    当 git 仓库拉下后会执行以下命令:

    • 删除 node_modules
    • 下载
    • 打包
    • 删除原有的资源文件夹(nginx 有缓存,对于缓存的静态资源,页面不会更新)
    • 移动 dists 文件到 /nginx 目录
    • 进入到 nginx 目录
    • 重命名 dist 文件按夹为 test

    shell 命令可以根据自己的需求创建

3. nginx 配置

nginx 进行以下配置:

1
2
3
4
5
6
7
8
server {
listen 9999;
server_name localhost;
location / {
root /usr/share/nginx/test; # 你的资源目录
index index.html index.htm;
}
}

4,github 设置

我们已经在构建项目中的构建触发中选择了 github,接下来还需要在 github 中进行配置:

点击 项目 - setting - webhooks - add webhook: payload url 填入 [http://ip:port/]github-webhook/,centente-type 选择 application/json

github

更加详细的设置参考:github hook 配置

至此所有配置已经完成,当 git push时,仓库更新,jenkins 会自动构建项目并部署到 nginx 中

参考


自动化部署
https://www.zphl.top/posts/autoBuild.html
作者
lzp
发布于
2024年6月19日
许可协议