lvs
v1.0.4
Published
a simple library for publish software version
Downloads
4
Readme
lvs 是一个用来简单的管理项目发布的工具。纯手工化的发布流程中,我们有很多方式去将打包后的代码发布到服务器上,比如通过ftp,通过rsync等等,又或者在服务器上直接拉取源代码之后进行编译打包。
这里提供了一种新的方式,创建一个软件包管理服务,然后通过命令行的方式,将打包后的文件夹发布到软件包管理服务上,然后通过命令行的方式,将对应的软件包拉取到服务器上。
下面介绍一下具体的使用方式。
1.安装
npm install -g lvs
2. 创建软件包管理服务
lvs start
这个命令表示在当前目录下创建一个软件包管理服务,端口号为11111。
你会发现当前目录下多了一个文件lvs-server.json
,文件内容如下:
{
"port": 11111,
"dir": "/home/xie/code-work-space/js/lvs",
"projects": {}
}
其中port
表示服务的端口号,dir
表示软件包管理服务的根目录,projects
表示项目列表。
实际上start的命令的执行流程是这样的:
- 从命令行中获取参数
port
和dir
的值。 - 从命令行中获取参数
cfg
的值(如果没有指定,则默认值为lvs-server.json
),该值表示配置文件的路径, 然后读取配置文件的内容,如果配置文件不存在,那么返回一个空的配置项目{}
。 - 将命令行中的参数的值与配置文件中的值合并,如果有冲突,以命令行中的参数为准。如果都没有配置
port
和dir
,那么使用默认值(11111
和.
)。 - 将合并后的配置写入到指定的配置文件中。
- 启动软件包管理服务。
所以直接使用lvs start
命令,就可以创建一个默认的软件包管理服务,并生成了配置文件lvs-server.json
。
当然你也可以指定配置去生成:
lvs start --port 22222 --dir /home/xie/code-work-space/js/lvs --cfg /home/xie/code-work-space/js/lvs/lvs-server.json
最终这些参数会写入到/home/xie/code-work-space/js/lvs/lvs-server.json
中。并且下一次启动的时候,命令可以简化成:
lvs start --cfg /home/xie/code-work-space/js/lvs/lvs-server.json
或者,当你在/home/xie/code-work-space/js/lvs
目录下的时候,命令可以精简到最后一步:
lvs start
最后,命令是阻塞式的,所以你可以使用nohup
命令来后台启动:
nohup lvs start >/dev/null 2>&1 &
如果需要停止服务,可以找到对应的进程,然后kill掉就可以了。当然我们也提供了一个停止服务的命令:
lvs stop
这个命令会寻找当前目录下的lvs-server.json
文件,从中读取端口号,然后关闭对应的服务。
也可以使用cfg
参数指定配置文件:
lvs stop --cfg /home/xie/code-work-space/js/lvs/lvs-server.json
或者使用port
参数直接指定端口号,程序就不会去读取配置文件了:
lvs stop --port 11111
3. 创建项目
软件包管理服务不允许匿名用户上传不受管理的文件夹,所以我们需要在配置文件中进行相关的配置。打开对应的配置文件如lvs-server.json
,添加一个项目:
{
"port": 11111,
"dir": "/home/xie/code-work-space/js/lvs",
"projects": {
"test-project": {
"r": "test-user-1",
"w": "test-user-2",
"rw": "test-user-3"
}
}
}
上面的配置表示创建了一个名字叫做test-project
的项目,该项目有三个用户,分别是test-user-1
,test-user-2
和test-user-3
。其中r
表示只能获取项目文件,w
表示只能上传文件,rw
表示既能上传文件,又能获取文件。
当想配置多个用户的时候,可以替换成数组格式:
{
"port": 11111,
"dir": "/home/xie/code-work-space/js/lvs",
"projects": {
"test-project": {
"r": [
"test-user-1",
"test-user-2"
],
"w": [
"test-user-3",
"test-user-4"
],
"rw": "test-user-5"
}
}
}
4. 上传软件包
服务器的环境配置完成之后,我们就可以在其他的机器上上传打包后的软件包了。首先我们需要安装lvs
到对应的机器上:
npm install -g lvs
然后将我们的软件包上传到服务器上,比如前端的项目文件夹一般是dist文件夹,我们可以将dist文件夹上传到服务器上:
lvs push --server 192.168.3.143 --port 11111 --dir dist --project test-project --version 20241901 --auth test-user-3
--server
表示服务器的ip地址--port
表示服务器的端口号--dir
表示要上传的文件夹--project
表示要上传到的项目--version
表示要上传的版本号--auth
表示上传的用户
与服务端的命令一致,都会将对应的参数自动写入到配置文件中,所以下次上传的时候,可以简化成:
lvs push
需要注意的是,不允许上传重复的版本号,如果上传的版本号已经存在,那么会提示错误。
5. 拉取软件包
当我们需要在服务器上拉取对应的软件包的时候,我们可以使用lvs pull
命令:
lvs push --server 192.168.3.143 --port 11111 --dir . --project test-project --version 20241901 --auth test-user-4
--server
表示服务器的ip地址--port
表示服务器的端口号--dir
表示要拉取到的文件夹--project
表示要拉取的项目--version
表示要拉取的版本号--auth
表示拉取的用户
todo: 1.处理无版本的情况 2.美化输出 3.命令创建用户以及项目 4.强制覆盖版本 5.垃圾版本回收