一,实验环境
1,需要两台centos7的系统
192.168.136.128 安装jenkins,git ,nodejs
192.168.136.129 安装nginx
安装软件的步骤省略
2,jenkins需要安装以下插件
3,nodejs的安装可以到官网下载
官网下载地址:https://nodejs.org/dist/latest/
wget https://nodejs.org/dist/latest/node-v10.10.0-linux-x64.tar.gz
4,解压安装
tar -xvf node-v10.10.0-linux-x64.tar.gz -C /usr/local
重命名
cd /usr/local
mv node-v10.10.0-linux-x64 nodejs
配置环境
vim /etc/profile
export PATH=/usr/local/nodejs/bin:$PATH
source /etc/profile
安装cnmp与配置淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
查看npm,cnpm,node版本号
npm和 cnpm区别:
npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等) npm安装插件过程:从http://registry.npmjs.org下载对应的插件包(该网站服务器位于国外,所以经常下载缓慢或出现异常)。
cnpm是国内的淘宝团队分享的镜像,同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。
5,需要192.168.136.128这台机器向192.168.136.129发送公钥实现免密登录(过程省略)
Jenkins实现凭证配置(两种方式都行用户名密码或者私钥认证)
Publish over SSH配置用来发送文件到192.168.136.129这台机器
6,jenkins的nodejs配置(Global Tool Configuration)
7,新建一个项目(名称就是项目的名字)pipeline流水
8,主要的配置如下:
配置一个参数,如果以后还有项目,构建的时候可以灵活选择
pipeline如下:
pipeline{
agent any
stages {
stage('checkout'){ //通过git把代码拉取下来
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'aa23ce80-8140-4b17-b17b-f1cb82718f8a', url: 'https://github.com/cpaqyx/fastwave.cloud.framework.git']]])
}
}
stage('build') { //安装并运行nodejs
steps {
nodejs('node10') { //node10就是前面jenkins中配置的nodejs别名
sh '''
cd ${single_project_name}
rm -rf dist
npm install
npm run build
cd dist
JENKINS_NODE_COOKIE=dontKillMe nohup npm start &
'''
}
}
}
stage('publish'){ //把项目的文件推送到nginx的工作目录/usr/share/nginx/html
steps{
sshPublisher(publishers: [sshPublisherDesc(configName: 'web_client', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/share/nginx/html', remoteDirectorySDF: false, removePrefix: 'fastwave-web-admin/dist/', sourceFiles: 'fastwave-web-admin/dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
以上checkout的pipeline语法可以如下生成:
以上publish的pipeline语法可以如下生成:
9,构建成功
10,如果192.168.136.129这台nginx没启动需要启动,启动不用管
访问192.168.136.129,直接点击登录即可