Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享

前言

本文详细记录如何使用 Coding (以 Jenkinsfile 为核心) 和 Nginx 部署 Vue 项目,包含完整流程、配置细节及注意事项,为开发者提供一个高效的实践参考。


准备工作

这里借用一个优秀的开源项目做演示:芋道源码/yudao-ui-admin-vue2

以下是准备工作的相关指引和教程,确保服务器环境和工具安装已完成:

  1. 配置服务器环境,确保安装以下组件:

  2. 安装 Nginx:


构建 Vue 项目

以下是构建 Vue 项目的详细步骤:

1. 修改项目域名并提交至 Coding 仓库

在下载代码后,需修改项目中的域名配置,然后提交到 Coding 仓库中。例如:


2. 在 Coding 中创建自定义构建计划

创建自定义构建计划,并配置 Jenkinsfile,示例如下:

groovy 复制代码
pipeline {
    agent any
    stages {
        stage('检出') {
            steps {
                checkout([
                    $class: 'GitSCM',
                    branches: [[name: GIT_BUILD_REF]],
                    userRemoteConfigs: [[
                        url: GIT_REPO_URL,
                        credentialsId: CREDENTIALS_ID
                    ]]
                ])
            }
        }
        stage('安装依赖') {
            steps {
                sh 'npm install'
            }
        }
        stage('编译') {
            steps {
                sh 'npm run build:dev'
            }
        }
        stage('部署到远端服务器') {
            steps {
                script {
                    def remoteConfig = [:]
                    remoteConfig.name = "my-remote-ltby"
                    remoteConfig.host = "${REMOTE_HOST}"
                    remoteConfig.port = 22
                    remoteConfig.allowAnyHosts = true

                    withCredentials([
                        usernamePassword(
                            credentialsId: "${REMOTE_CRED}",
                            passwordVariable: 'password',
                            usernameVariable: 'userName'
                        )
                    ]) {
                        remoteConfig.user = userName
                        remoteConfig.password = password

                        stage("通过 SSH 执行命令") {
                            sshPut(
                                remote: remoteConfig,
                                from: 'dist',
                                into: '../d/nginxWebUI/',
                                recursive: true
                            )
                        }
                        echo "部署成功,请访问 http://web.ip.com 预览效果"
                    }
                }
            }
        }
    }
}

注意事项:

  • 如果服务器内核版本较新,推荐使用的账号和密码登录。使用密钥时,内置的jenkins插件可能不兼容的较新的内核版本。
  • 修改环境变量如: ${REMOTE_HOST}(服务器地址)和 ${REMOTE_CRED}(Coding 凭证)。
  • 如果使用 Vue3 项目,不要使用默认的环境构建,需要修改 Node.js 为较新的版本。
  • 免费版 Coding 构建内存限制为 4G,如果出现网络错误,可能是内存不够。
  • 确保将编译后的 dist 文件上传至 Nginx 的指定目录(../d/nginxWebUI/修改为服务器上nginx放置静态文件的目录)。

3. 运行构建计划

构建成功示例如下:


为当前项目配置 Nginx.conf

1. 查看 Nginx 目录

确认 dist 文件已成功上传至服务器的 Nginx 目录:

2. 配置 Nginx

以下是 nginx.conf 文件的配置示例:

bash 复制代码
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
worker_processes auto;

events {
    worker_connections  1024;
    accept_mutex on;
}

http {
    include mime.types;
    default_type application/octet-stream;

    # 前端代理
    server {
        server_name web.ip.com;
        listen 80;
        location / {
            root /home/nginxWebUI/dist/;
            index index.html;
            try_files $uri $uri/ /index.html;  
        }
    }

    # 后端代理
    server {
        server_name demo.ip.com;
        listen 80;
        location / {
            proxy_pass http://127.0.0.1:48080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $http_host;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

配置说明:

  • server_name web.ip.com; 指定前端项目域名。
  • listen 80; 监听 HTTP 的 80 端口。
  • root /home/nginxWebUI/dist/; 设置网站根目录。
  • try_files $uri $uri/ /index.html; 确保支持单页应用的路由功能。

3. 重启 Nginx 并访问项目

成功部署后访问效果如下:

至此,自动构建vue项目完成


结语

通过以上步骤,成功实现了 Vue 项目从 Coding 构建到 Nginx 部署的完整流程,本文提供了详细的参考配置及注意事项,适合有类似需求的开发者实践。

"如果此文章对您有帮助💪,帮我点个赞👍,感激不尽🤝!"

相关推荐
傻小胖3 分钟前
路由组件与一般组件的区别
前端·vue.js·react.js
Elena_Lucky_baby6 分钟前
在Vue3项目中使用svg-sprite-loader
开发语言·前端·javascript
重生之搬砖忍者33 分钟前
uniapp使用canvas生成订单小票图片
前端·javascript·canva可画
万水千山走遍TML38 分钟前
console.log封装
前端·javascript·typescript·node·log·console·打印封装
阿雄不会写代码1 小时前
使用java springboot 使用 Redis 作为消息队列
前端·bootstrap·html
m0_748236581 小时前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
@C宝2 小时前
【前端面试题】前端中的两个外边距bug以及什么是BFC
前端·bug
Burt2 小时前
@antfu/eslint 支持 globals 全局变量
前端·uni-app·eslint
m0_528723812 小时前
如何在新窗口打开pdf文件,并修改网页标题
前端·javascript·pdf
m0_748248772 小时前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端