jenkins打包nodejs

本文详细介绍如何在Jenkins上配置前端项目的自动化打包流程,包括使用NodeJS进行环境准备,通过Pipline实现从代码检出到构建、打包、归档及部署的全过程自动化。

公司前后端分离 ,前端代码需要单独打包

jenkins安装:

https://blog.youkuaiyun.com/wanchaopeng/article/details/83538629

nodejs自动打包准备环境:

1.使用自带做简单打包 

1.1.打开jenkins工作桌面,选择新任务

然后填写工程名称,选择"构建一个自由风格的软件项目",

General信息

这里填写项目或任务的基本信息,如下:

源码管理:

然后添加源码,比如本例中使用的是git作为源码版本管理,那么选择源码管理标签,选中git(Jenkins需要安装git插件),填写源码地址,选好分支:

构建环境

构建环境可以理解为要构建的项目需要什么样的环境,这里我们设置环境为node环境:

这里的“NodeJS Installation”是下拉选择的,需要提前在如下地方添加:

系统管理->全局工具配置->NodeJs下面,如下,

注意:如果没有NodeJS项的话,考虑如下插件是否安装:

构建

构建就是指怎么样去操作“源代码”,这里我们填写如下:

然后立即构建,查看控制台输出

2. 使用pipline 打包

添加流水线任务

 
pipeline {
    agent any
    options {
        disableConcurrentBuilds()
        buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '8')
        timestamps()
        timeout(30)
        
    }
    environment {
        //gitlab key唯一标识符
		git_access_key='gzcfe_gitlab_key'
        //部署应用名称
		deploy_app="shunmai-pay-vue"
        //部署服务器组
		deploy_host="vue_onetree_beta"
        //拉去分支
		deploy_branch="beta"
		//自动部署分支
		Automation_branch="shunmai_vue_beta"
        //定义生成配置
		build_configuration="test"
        //项目目录
		Primary_path="${JOB_NAME.split('/')[0]}"
        //主文件目录
		app_dir="pay.qrcode"
        //ansible文档目录
        Automation_dir="Automation_onetree_config"
        //ansible应用文档目录
        Automation_app_dir="global_template"
    }
    stages {
        stage('checkout') {
            options {
                retry(3)
            }
            steps {
                echo '检查源码'
                sh 'sleep 1'
                checkout([$class: 'GitSCM', \
                        branches: [[name: "*/${deploy_branch}"]], \
                        doGenerateSubmoduleConfigurations: false, \
                        extensions: [[$class: 'RelativeTargetDirectory', \
                                    relativeTargetDir: "${Primary_path}"]], \
                        submoduleCfg: [], \
                        userRemoteConfigs: [[credentialsId: "${git_access_key}", \
                                            url: 'https://git.one.com/dev/shunmai.zhirongyougou.h5client.git']]])
                checkout([$class: 'GitSCM', \
                        branches: [[name: "*/${Automation_branch}"]], \
                        doGenerateSubmoduleConfigurations: false, \
                        extensions: [[$class: 'RelativeTargetDirectory', \
                                    relativeTargetDir: "${Automation_dir}"]], \
                        submoduleCfg: [], \
                        userRemoteConfigs: [[credentialsId: "${git_access_key}", \
                                            url: 'http://git.one.com/yunwei/Automation_onetree_config.git']]\
                        ])
            }
        }
        stage('install') {
            steps {
                echo 'install'
                dir("/${WORKSPACE}/${Primary_path}/${app_dir}"){
                    sh "cnpm install"
                }
            }
        }
        stage('build') {
            steps {
                echo 'build'
                dir("/${WORKSPACE}/${Primary_path}/${app_dir}"){
                    sh "npm run build"
                }
            }
        }
        stage('archive') {
            steps {
                echo '归档'
                dir("/${WORKSPACE}/${Primary_path}/${app_dir}/dist/"){
                    sh 'cp -pr ./qrcode/* ./   &&\
                        tar cf ${deploy_app}.tar * && \
                        mv ${deploy_app}.tar ${WORKSPACE}'
                }
                archiveArtifacts artifacts: '*.tar', \
                                fingerprint: true
            }
        }
        stage('deploy') {
            steps {
                echo '拷贝归档文件'
                copyArtifacts filter: '*.tar', \
                            fingerprintArtifacts: true, \
                            projectName: "${deploy_app}", \
                            selector: specific('${BUILD_NUMBER}'), \
                            target: 'deploy'
                ansiblePlaybook disableHostKeyChecking: true, \
                                extras: '--extra-vars "App_var=${deploy_app} Inventory_var=${deploy_host}"', \
                                installation: 'ansible_2.7', \
                                inventory: "${Automation_dir}/hosts", \
                                playbook: "${Automation_dir}/${Automation_app_dir}/deploy.yml"
            }
        }
    }
    post {
        always {
            cleanWs deleteDirs: true, notFailBuild: true, patterns: [[pattern: "${JOB_NAME.split('/')[0]}", type: 'INCLUDE'],[pattern: "${deploy_app}.tar", type: 'INCLUDE'] , [pattern: 'deploy', type: 'INCLUDE']]
        }
    }
}

构建成功!!!

<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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值