公司前后端分离 ,前端代码需要单独打包
jenkins安装:
https://blog.csdn.net/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']]
}
}
}
构建成功!!!