服务器部署和发布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小时内删除。