建立目的
为了不让代码公开,能够让项目基于gitlab快速自动化部署,简化单个composer.json文件配置内容
安装
使用composer
composer create-project composer/satis --keep-vcs
安装完之后与github中的目录结构一致
配置satis.json
接着在项目根目录下创建satis.json文件
{
"name": "satis packages",
"homepage": "http://satis.example.com",
"repositories": [
{ "type": "git", "url": "ssh://git@gitlab.example.com/tim/test.git" }
],
"require":{
"tim/test":"dev-master"
}
}
-
homepage
在satis上显示的默认私有镜像地址
-
repositories
需要被索引的git代码仓库地址
-
require
明确定义包名可以减少索引内容,s中使用require-all经过测试发现会索引全网的php包
接下来对镜像中的packages创建索引
php bin/satis build satis.json ./web -v #-v参数可以看到被索引的包
使用docker
pull image
git pull composer/satis
在build目录下创建satis.json文件之后运行
docker run --rm -it -v /build:/build composer/satis
上面这条命令的作用与bin/satis
命令一样,都是创建索引
自动更新
使用crontab执行创建索引
命令,时间间隔看具体情况
访问web界面
配置nginx将root指向索引输出目录
访问域名之后可以看到如下界面
与gitlab一起工作
在配置satis.json
中看到repositories
的定义是使用ssh://
协议
目的在于方便管理项目成员开发以及项目部署中的权限。
假设同一个包有多个开发人员则将其他人员设置为组成员,在同一台跳板机上部署项目,并且设置项目的Visibility Level
为Internal
。
这样在开发环境中通过登陆gitlab来判断权限。
在跳板机上则通过添加该机器的公钥到deploy keys
来判断权限
这样就算其他人有仓库地址也不能拉到代码,目的基本达成。
使用私有镜像中的包建立项目
创建一个目录,再创建一个composer.json文件,依赖添加刚刚创建的包
{
"repositories": [
{ "type": "composer", "url": "http://satis.example.com" }
],
"config": {
"secure-http": false
},
"require": {
"tim/test": "dev-master"
}
}
secure-http设置为false是因为satis默认为https
repositories是为了告诉composer镜像源不仅仅只有packagist.org,还包括了刚刚我们设置的私有镜像
这些配置可以单独在每个composer.json文件中设置,也可以像下面这样(全局加 -g )配置
composer config secure-http false
composer config repo.packagist composer http://satis.example.com
创建完之后composer install(忽略域名于之前配置的不同,这是我本地域名,但是已经弄完了懒得改)
最后附上tim/test
包的composer.json
{
"name": "tim/test",
"authors": [
{
"name": "tim",
"email": "tim@example.com"
}
],
"require":{
"monolog/monolog":"1.0.*"
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。