服务器部署和发布NodeJs项⽬
⼀、原始的nodejs项⽬发布
1、scp、winscp上传⽂件到服务器 - 把代码拷到服务器即可
scp 命令:scp -r .\dist\ root@116.62.229.124:/usr/local/nginx/html
2、git拉取分⽀
通过分⽀控制拉取代码拷贝到服务器即可
centOS 安装git:yum install -y git
⼆、gulp脚本发布项⽬
⼀个⾃动话构建⼯具,可以使⽤它在项⽬开发过程中⾃动执⾏常见任务
基于Nodejs构建的,利⽤Nodejs流的威⼒,可以快速构建项⽬并减少频繁的IO操作
通过配置gulp-ssh执⾏上传任务即可
1/**
2 * gulpfile.js
3 * 定义任务
4 * 1、删除dist rm dist
5 * 2、上传dist upload
6*/
7const fs = require('fs')
8const gulp = require('gulp')
9const gulpSSH = require('gulp-ssh')
10
11const filePath = '/usr/local/nginx/html/dist'
12const command = `rm -rf ${filePath}`
13
14const config = {
15 host: '116.62.229.124',
16 port: 22,
17 username: 'root',
18// privateKey: fs.readFileSync('C:/Users/pf184/.ssh/id_rsa')
19 password: '#服务器密码#'
20 }
21
22// eslint-disable-next-line new-capnginx部署前端项目
23const gulpSsh = new gulpSSH({
24 ignoreErrors: false,
25 sshConfig: config
26 })
27
28// 登录远程服务器,删除dist⽂件
29 gulp.task('del', (done) => {
30 console.log(command)
31 gulpSsh.shell([command])
32 done()
33 })
34
35// 上传⽂件
36// * 只能上传⼀级⽬录,不能长传⼦⽂件夹
37// ** ⽂件夹下所有内容
38 gulp.task('upload', (done) => {
39 gulp.src('./dist/**')
40 .pipe(gulpSsh.dest(filePath)) // 传到服务器
41 done()
42 })
// 运⾏脚本
"build:dist": "npm run build:stage && npm run del && npm run upload"
1// node 项⽬
2 gulpSsh.shell(['cd /root/test', 'cnpm install', 'pm2 delete all', 'pm2 start /root/test/app.js'])
3
4// 运⾏命令
5"node": "gulp node"
三、⾃动化构建gitlab、gitlab-runner、jenkins
0、准备
⼀个云服务器
⼀个GitLab仓库
1、gttlab-runner
⾸先仍是简单说⼀下什么是gitlab-runner,官⽹是这么描述的:git
GitLab Runner is the open source project that is used to run your jobs and send the results back to GitLab. It is used in conjunction with , the open-source continuous integration service included with GitLab that coordinates the jobs.docker
也就是说gitlab-runner是配合gitlab-ci进⾏使⽤的。
通常地,gitlab⾥⾯的每个⼯程都会定义⼀个属于这个⼯程的软件集成脚本,⽤来⾃动化地完成⼀些软件集成⼯做。
当这个⼯程的仓库代码发⽣变更时,好⽐有⼈push了代码或者分⽀合并,gitlab就会将这个变更通知gitlab-ci。这时gitlab-ci会出与这个⼯程相关联的runner,
并通知这些runner把代码更新到本地并执⾏预约义好的执⾏脚本。
GitLab-CI 就是⼀套配合gitLab使⽤的持续集成系统
使⽤GitLab-CI我们可以使⽤ GitLab-Runner
每个项⽬配置⼀个⾃动化的runner,当项⽬发⽣变化(⽐如push代码),当然这个变化⾏为是可定义的,
我们的GitLab-CI就会到于这个项⽬相关的runner,通知runner把代码更新到本地,并且执⾏定义好的执⾏脚本(l)
太难了,来来回回捣⿎好⼏遍,好像有点懂了,,虽然还没成功,,⽬前报错 bash: line 118: npm: command not found,记录下过程吧 1、编写CI/CD脚本,CI/CD编辑器,可选模版Docker,我的配置如下
1 # docker-build:
2 # Use the official docker image.
3 image: node:10
4 stages:
5 - install_deps
6 # services:
7 # - docker:dind
8 before_script:
9 - echo "before_script 开始构建"
10 after_script:
11 - echo "after_script 构建结束"
12 install_deps:
13 stage: install_deps
14 tags:
15 - master
16 only:
17 - master
18 script:
19 - cd /usr/local/nginx/html/front-vue
20 - users
21 - pwd
22 - ls -al
23 - git remote set-url origin git@gitlab:pfSlight/front-vue.git
24 - git pull origin master
25 - rm -rf ./dist
26 - rm -rf ./node_modules
27 - npm config set registry register.npm.taobao.prg
28 - npm install -g cnpm --registry=registry.
29 - cnpm install
30 - npm run build:stage
2、需要配置CI/CD Runner,设置 - CI/CD - Runner
配置前,长这样配置后,就这样过程是真的难,,,
1、点击按钮,,
要安装的插件,配置的账号,都很清楚,照着做就可以了
2、查看运⾏状态 gitlab-runner status
3、运⾏流⽔线 CI/CD - 流⽔线 - Run pipeline
失败,查看⽇志,,报错就是最上⾯说的 npm: command not found ,,然后参照上⾯连接的⽂章进⾏处理
2)配置环境变量,命令:source ~/.bashrc (有问题,参照前⾯的随笔)
3)安装node,命令:nvm install 12.18.4
4)得,npm有了,别的错⼜来了,如下:,接着改脚本,改成https//
5)上结果,,完美,,,欸,就是个玩⼉
7)这是后补的,因为我过了⼀段时间去操作的时候,练习着多建⼏个runner,没想到,怎么做都不好使,,
建了有4个runner,⼀直怀疑是操作有问题,浪费了两个下去
直到今天周末有时间,百度了很多,其实⼀开始就有搜到可能是因为git版本过低导致,但是不愿意相信,因为第⼀次建好的时间,多次操作都能成功, 哎,以后不能轴了,多⾓度嘛,⼲嘛不相信⾃⼰的配置。
8)npm run build报错:building Killed
按照他⼈的说法是,服务器内存不够⽤了,这样就给他配置⼀个单独的内存出来就解决了
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
2、jenkins
开源CI/CD软件领导者,提供超过1000个插件来⽀持构建、部署、⾃动化、满⾜任何项⽬需要。
优点:简单安装、
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论