项目管理

添加新项目

  • 项目名称 随意设置,主要用于区别不同项目,不是真实的应用目录。

  • 环境 如果是同一个发布系统支持发布不同环境的应用,该字段可以用于区分环境,如果不同应用环境使用不同发布系统来发布则作用不大。

  • 空间 作用不大,可以当做中文项目名来设置

  • 发布方式 支持scp(rsync)发布和pm2 deploy两种发布方式

  • 配置文件 使用文本的配置方式,主要是由于最开始使用pm2发布,其配置文件是json或js,所以沿用了文本的配置方式。

scp配置说明

{
      "user": "root",
      "host": ["10.11.12.13"],
      "ref":"master",
      "repo": "git@github.com/yuedun/zhuque.git",
      "path": "/data/www/zhuque",
      "preBuild" : "",
      "build":"go build",
      "preDeploy" : "echo '发布前置';",
      "postDeploy" : "pm2 restart zheque;pm2 ls",
      "rsyncArgs":"-u --delete --exclude '.git' --exclude '.env'"
}
  • user:用户名

  • host[]:主机地址

  • ref:分支

  • repo:仓库地址

  • path:项目部署路径,需要包含项目目录

  • preBuild:编译前置,在发布机上编译代码设置的环境变量,比如前端项目设置不同的环境变量使用不同的接口地址。

  • build:编译命令,例如:npm run build

  • preDeploy:发布前置,应用服务重启前设置环境变量等操作。

  • postDeploy:发布命令,例如:pm2 reload zhuque

  • rsyncArgs:rsync参数

常用rsync参数:

  • --exclude 排除不进行同步的文件,比如--exclude="*.iso"

  • --delete参数删除只存在于目标目录、不存在于源目标的文件,即保证目标目录是源目标的镜像。

    如果想要排除指定的文件,即不删除某个文件,可以使用exclude指定,例如:--exclude '.env',会删除其他文件而不会删除.env文件。

pm2配置说明

js配置

module.exports = {
    apps : [{
        script: 'index.js',
        watch: '.'
    }],
    
    deploy : {
        production : {
            user : 'SSH_USERNAME',
            host : 'SSH_HOSTMACHINE',
            ref  : 'origin/master',
            repo : 'GIT_REPOSITORY',
            path : 'DESTINATION_PATH',
            'pre-deploy-local': '',
            'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
            'pre-setup': 'npm config set registry https://registry.npm.taobao.org'
        }
    }
};

json配置

{
   "apps" : [{
      "name" : "HTTP-API",
      "script" : "http.js"
   }],
   "deploy" : {
     // "production" 是环境变量名
     "production" : {
       "user" : "ubuntu",
       "host" : ["192.168.0.13"],
       "ref"  : "origin/master",
       "repo" : "git@github.com:Username/repository.git",
       "path" : "/var/www/my-repository",
       "post-deploy" : "npm install; grunt dist"
      },
   }
}

选项名称

描述

类型

默认

key

SSH密钥的路径

String

$HOME/.ssh

user

SSH用户

String

host

SSH主机

[String]

ssh_options

SSH选项,不包括命令行标志,查看man ssh

String[String]

ref

GITremote/branch

String

repo

GITremote

String

path

服务器中的路径

String

pre-setup

1.远程机器拉代码之前

String

post-setup

2.远程服务器拉代码

String

pre-deploy-local

3.post-deploy前在宿主机上执行的命令

String

post-deploy

4.部署后执行

String

最后更新于