美文网首页
持续集成nodejs

持续集成nodejs

作者: Gin_714d | 来源:发表于2018-12-14 12:26 被阅读0次

集成步骤

  1. 写yml
  2. 提交
  3. 建runner

yml 关键字

yml的编写规则体现了ci的部分机制,对于本次使用到的一些参数进行说明。

job

yml可以定义无限job。

举个例子,假设一个工程中 有多个项目需要构建,a1/a2/a3(我知道可以放一起,这不是假设吗。。。)。那么a1可以有build/test/depoly的job,a2、a3同上。

相同stage的job会被并行执行。job name唯一,且可以由一列参数来定义job的行为。

stage

stage只能在build/test/depoly里选择。即stage是持续集成流程内的步骤,这些步骤被固定了,即构建/测试/发布。

script

执行的终端命令集

yml工具

格式锱铢必较,而且不易校错。http://yaml-online-parser.appspot.com/ 可以在线校验。

yml实例

最后来个yml例子

develop:
  stage: deploy
  script: 
   - rsync -Pa --exclude-from '.gitignore' -e 'ssh -i /home/gitlab-runner/.ssh/id_rsa' ./ root@xx:/root
   - ssh -i /home/gitlab-runner/.ssh/id_rsa -t root@xx 'cd /root && pm2 start process.json'
  only:
   - develop

release:
 stage: deploy
 script:
  - rsync -Pa --exclude-from '.gitignore' -e 'ssh -i /home/gitlab-runner/.ssh/id_rsa' ./ root@xx:/root/x
  - ssh -i /home/gitlab-runner/.ssh/id_rsa -t root@xx 'cd /rootxx && pm2 start process.json --env production'
 only:
  - master

步骤说明:

  1. 同步文件到目标主机

  2. 在目标主机执行启动命令


最后写一个使用pm2指定env的方法

在process.json中

{
    "apps" : [
      {
        "name"        : "xx",
        "script"      : "app.js",
        "log_date_format" : "YYYY-MM-DD HH:mm Z",
        "instances": 3,
        "max_memory_restart": "2G",
        "max_restarts": 5,
        "restart_delay": 3,
        "listen_timeout": 10000,
        "env": {
          "NODE_ENV": "dev"
      },
        "env_production": {
          "NODE_ENV": "prod"
        }
      }
    ]
  }
  

然后使用pm2 --env production可以切换呢。暂时只发现支持两种环境的写法。多种的找到再补充。

相关文章

网友评论

      本文标题:持续集成nodejs

      本文链接:https://www.haomeiwen.com/subject/xoawhqtx.html