现在服务端基本都是微服务了,多个工程之间肯定有许多公共的基础组件,比如日志、队列、邮件等等,这些都是每个工程都可能要用到的,可以封装成公司的私有组件包,这样各个工程需要用到的时候只要引入这个包就可以了,这就需要搭建一个包仓库了,这里我们选用了比较简单的satis。
安装
1 | cd /data/www/ |
配置
satis的配置是通过satis.json进行的,我们在当前目录新建一个satis.json。
1 | { |
1 | 简单解释下这个json |
创建一个测试组件包
去git上新建一个工程
在项目根目录新建composer.json
内容如下
1 | { |
生成
1 | php bin/satis build satis.json public/ |
配置nginx
1 | server { |
重新加载nginx配置nginx -s reload
我们就可以通过packages.dev.com进行访问了。
使用
修改相关工程的composer.json文件
1 | { |
执行composer update即可
下载
上面satis.json的配置会去我们的git中clone,有时候会比较慢,我们并不希望每次都clone,其实我们也可以缓存在我们的仓库中,这样每次update的时候就只用下载了。
在satis.json中增加
1 | { |
参数说明
1 | directory: 必需要的,表示生成的压缩包存放的目录,会在我们build时的目录中 |
再次生成
1 | php bin/satis build satis.json public/ |
会发现public目录多了一个dist目录,里面有很多tar的压缩包,这就是我们的package。
之后再执行composer update就会发现快了很多
其他错误
composer出现Your configuration does not allow connections to
1 | 出现这样的问题是,镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了 |
用webhook自动更新satis仓库
webhooks可以通过监听push触发回调,发送post请求到所指定的地址,服务端收到该请求进行对应的git pull更新代码的操作
我这边用的代码仓库是码云
添加上你的webhook回调接口就行
这里在推荐一个很好用的webhook管理工具webhook,是用go实现的