jenkins 部署 vue(nodejs)打包项目

本文指导如何使用Jenkins配置pipeline,通过GitParameterPlugin参数化,SSH部署Vue和Node.js项目的npm打包成果,实现从代码分支到生产环境的无缝流程。

jenkins 部署 vue(nodejs)打包项目

准备:

  • jenkins
  • jenkins 插件 Git Parameter Plugin 参数化构建过程
  • jenkins 插件 ssh Publisher 远程部署
  • 全局配置好 ssh 远程服务器,测试联通
  • 「可选」全局配置,git 仓库,或者 项目配置 git 仓库,建议使用 token 访问仓库

配置 pipeline 项目

def url = "https://oauth2:Lxxxxxxxxxxxxxx@gitlab.xxxx.com/good/good_project.git"
def remote_directory = "/data/project/web-back/"

pipeline {
  agent any
  parameters {
      // 需要安装 Git Parameter Plugin
      gitParameter name: 'BRANCH_TAG',
                    type: 'PT_BRANCH_TAG',
                    branchFilter: 'origin/(.*)',
                    defaultValue: 'master',
                    selectedValue: 'DEFAULT',
                    sortMode: 'ASCENDING_SMART',
          description: 'Select your branch or tag.'
  }
  stages {
    stage('echo env') {
        steps {
          sh 'printenv'
        }
    }
    stage("git fetch") {
      steps {
         checkout([$class: 'GitSCM',
                          // branches: [[name: "*/${branch}"]],
                          branches: [[name: "${params.BRANCH_TAG}"]],
                          doGenerateSubmoduleConfigurations: false,
                          extensions: [],
                          submoduleCfg: [],
                          userRemoteConfigs: [[
                            url: "${url}",
                            // credentialsId: 'for_gitlab',
                          ]]
                        ])
      }
    }
    stage('npm打包') {
      steps {
          //使用NodeJS的npm进行打包
          nodejs('nodejs14'){
              sh '''
                  yarn
                  yarn build
                '''
          }
      }

    }
    stage('远程部署') {
      steps {
        //远程调用进行项目部署
        // *.js      所有js文件
        // *          只传输文件,文件夹不会传输
        // **         所有文件
        sshPublisher(publishers: [sshPublisherDesc(configName: '172.16.4.152',
                                                    transfers: [sshTransfer( cleanRemote: true,
                                                                              excludes: '',
                                                                              execCommand: '',
                                                                              execTimeout: 120000,
                                                                              flatten: false,
                                                                              makeEmptyDirs: false,
                                                                              noDefaultExcludes:false,
                                                                              patternSeparator: '[, ]+',
                                                                              remoteDirectory: "${remote_directory}",
                                                                              remoteDirectorySDF: false,
                                                                              removePrefix: 'dist/',
                                                                              sourceFiles: 'dist/**')],
                                                      usePromotionTimestamp: false,
                                                      useWorkspaceInPromotion: false,
                                                      verbose: true)])
      }
    }
    stage("chore") {
      steps {
        sh """
        pwd
        tar -zcf dist.tar.gz -C dist . # 打包dist目录的内容,不包括dist目录自身
        ls -al dist*
        """
      }
    }
  }
  post {
    success {
    // 打包成功就 归档
      archiveArtifacts artifacts: 'dist*.gz',
                       allowEmptyArchive: true,
                       fingerprint: true,
                       onlyIfSuccessful: true
    }
  }
}

参数化构建
image-参数化构建

流水线构建
在这里插入图片描述

<think>首先,用户的问题是:“我想查找使用JenkinsNode.js进行项目打包的方法 请问使用JenkinsNode.js打包项目的详细步骤和方法”。用户要求查找使用JenkinsNode.js进行项目打包的详细步骤和方法。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 - 参考站内引用:提供了几个引用,我需要参考这些引用,但用户说“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答”。用户没有提供上一次的问题,所以我会基于给定的引用。 给定的引用: - [^1]: 关于通过Jenkins完成持续集成、持续部署的流程,包括在服务器上通过docker安装Jenkins和配置。 - [^2]: 在CentOS 7上为Jenkins配置Node.js和npm的指南,解决环境变量问题。 - [^3]: Node.js开发环境的组成,包括安装方式。 - [^4]: Node.js调试和测试的基本步骤。 - [^5]: 在Windows上安装Node.js的方法。 用户的问题是关于使用JenkinsNode.js打包项目,所以我需要聚焦于如何设置Jenkins打包Node.js项目。 核心步骤: 1. **安装Jenkins**:参考[^1],使用Docker安装Jenkins。 2. **配置Node.js环境**:参考[^2],在Jenkins中配置Node.js和npm,确保环境变量正确。 3. **设置Jenkins项目**:创建Jenkins job来打包Node.js项目。 4. **打包过程**:在Jenkins job中使用npm命令来打包项目,比如npm install和npm run build。 回答结构: - 逐步解释过程。 - 使用中文。 - 在适当的地方添加引用。 - 最后生成相关问题。 详细步骤: 1. **安装Jenkins**: - 使用Docker安装Jenkins,如引用[^1]所述。 - 启动Jenkins服务。 2. **安装和配置Node.js**: - 在Jenkins服务器上安装Node.js和npm。参考[^2],使用NVM安装Node.js。 - 配置环境变量,确保Jenkins用户(通常是jenkins)可以访问Node.js和npm。 3. **配置Jenkins**: - 在Jenkins中安装必要的插件,比如Node.js plugin。 - 在Jenkins系统设置中配置Node.js版本。 4. **创建Jenkins Job**: - 创建一个新的Freestyle project或Pipeline job。 - 设置源代码管理,如Git,指向Node.js项目仓库。 - 在构建步骤中添加执行shell命令或使用Node.js插件。 - 在命令中,运行npm install来安装依赖,然后运行npm run build来打包项目(假设build脚本在package.json中定义)。 5. **打包后操作**: - 可以添加步骤来存档制品或部署到其他服务器。 引用应用: - 在相关步骤末尾添加引用,例如在安装Jenkins时引用[^1],在配置Node.js时引用[^2]。 生成相关问题: - 在回答结束时,生成3个相关问题,如示例所示。 完整回答框架: 1. 介绍主题。 2. 详细步骤: a. 安装Jenkins b. 配置Node.js环境 c. 设置Jenkins项目 d. 定义打包命令 3. 总结。 4. 相关问题。 确保语言自然流畅。</think>### 使用JenkinsNode.js进行项目打包的详细步骤和方法 Jenkins是一个开源的持续集成/持续部署(CI/CD)工具,结合Node.js可以高效地自动化打包Node.js项目(如前端React/Vue应用或后端服务)。打包过程通常包括安装依赖、编译代码和生成可部署的制品(如dist目录)。以下是详细步骤,基于真实可靠的实践,确保环境配置正确。整个过程分为环境准备、Jenkins配置和打包执行三个阶段。 #### 1. **环境准备:安装JenkinsNode.js** - **安装Jenkins**: - 推荐使用Docker安装Jenkins,以避免环境冲突。运行以下命令: ```bash docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home --name my-jenkins jenkins/jenkins:lts ``` - 访问`http://<服务器IP>:8080`,通过初始密码解锁Jenkins,并安装推荐插件[^1]。 - **安装Node.js和npm**: - 在Jenkins服务器上安装Node.js(确保Jenkins用户有权限)。推荐使用NVM(Node Version Manager)管理多版本: ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 18 # 安装Node.js 18 LTS版本 nvm use 18 ``` - 验证安装:`node -v` 和 `npm -v` 应输出版本号。如果Jenkins运行时报错(如“npm command not found”),需在Jenkins系统设置中添加环境变量`PATH`,包含Node.js路径(如`/home/jenkins/.nvm/versions/node/v18.x.x/bin`)[^2][^5]。 #### 2. **配置Jenkins:集成Node.js项目设置** - **安装Jenkins插件**: - 在Jenkins控制台,进入“Manage Jenkins” > “Plugins”,搜索并安装“NodeJS”插件(用于自动管理Node.js环境)。 - 可选安装“Git”插件(用于拉取代码)和“Pipeline”插件(用于定义复杂流程)。 - **配置全局Node.js环境**: - 进入“Manage Jenkins” > “Tools”,添加Node.js安装。指定版本(如18.x),并勾选“自动安装”。这样Jenkins job会自动使用该环境[^2]。 - **创建Jenkins Job**: - 新建一个“Freestyle project”或“Pipeline” job。 - 在“Source Code Management”中,选择Git并填入项目仓库URL(如`https://github.com/your-node-project.git`),添加凭证(如SSH key)。 - 在“Build Environment”中,启用“Provide Node & npm bin/ folder to PATH”,确保打包命令能访问Node.js[^2][^3]。 #### 3. **定义打包步骤:执行Node.js命令** - **添加构建步骤**: - 在“Build”部分,添加“Execute shell”或“NodeJS script”步骤。 - 输入打包命令,典型流程包括: ```bash # 安装项目依赖 npm install # 运行打包脚本(例如,Vue项目vue-cli-service build) npm run build # 可选:测试代码(如运行Jest) npm run test ``` - 假设`package.json`中已定义`build`脚本(如`"build": "vite build"`)。 - **处理制品和部署**: - 在“Post-build Actions”中,添加“Archive the artifacts”来保存打包输出(如`dist/**`)。 - 可选:添加部署步骤,例如使用SSH将制品推送到目标服务器[^1][^4]。 - **保存并运行Job**: - 点击“Build Now”,Jenkins会拉取代码、执行打包命令。控制台输出中查看日志,排查错误(如依赖缺失或权限问题)。 #### 关键注意事项 - **环境一致性**:确保Jenkins服务器和开发环境的Node.js版本一致,避免兼容性问题[^3]。 - **权限问题**:如果Jenkins运行在`jenkins`用户下,需确保该用户有权限访问Node.js项目目录(使用`chown`或`sudo`配置)[^2]。 - **性能优化**:大型项目可使用缓存(如`npm cache clean --force`)和并行构建加速打包。 - **错误处理**:常见错误包括`npm not found`(环境变量未配置)或构建失败(检查`package.json`脚本)。调试工具如Jenkins Console Output或Node.js调试器(`node --inspect`)可辅助排查[^4]。 通过以上步骤,Jenkins能自动化打包Node.js项目,提升开发效率。实际效果取决于项目结构和配置,建议参考Jenkins官方文档进行微调[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值