配置服务的由来,请看这篇文章,如何基于GitLab优雅的管理项目配置数据
conf/dev
下添加app.conf
配置文件,配置项说明看后面go mod vendor
安装依赖go run migrate.go
初始化数据库信息go run main.go
启动服务- 打开
gitlab-config-web
界面
- 第一次启动
API
或者Web
的时候,需要手动编辑app.conf
,config.js
,等服务启动成功后,就可以利用配置服务自举。- 修改
.config.sh
的${GITLAB_CONFIG_SERVER}
为${API}/v1/generate
,或者设置CI
的Variables
,然后运行./.config.sh > conf/dev/app.conf
。- 配置编辑、删除权限是基于
gitlab
的用户在这个项目权限来的,只有MaintainerAccess
用户有编辑、删除权限,其它用户只可以查看- 项目信息会在每个用户登录后同步一次,服务器每
5
分钟同步一次,可以修改GitLabSyncTTL
配置来设置同步时间,单位是分钟
.gitlib-ci.yml
的deploy_test
根据自己实际情况修改,直接在gitlab
上跑应该是跑不通过的。
domain = "http://localhost:9090" #API域名
appname = "gitlab-config-server" #随意
httpport = 9090 #API监听的端口
CopyRequestBody = true #不用改
runmode = "dev" #生产环境用prod
Graceful = false #生产环境用true
servername = "nginx/1.8" #随意
GitLabDomain = "https://gitlab.example.cn" #gitlab域名
GitLabToken = "" #用管理员账号创建一个GitLabToken,拥有API权限
GitLabClientId = "" #admin/applications下创建一个 application, Redirect URI配置:${API}/gitlab/callback
GitLabClientSecret = "" #admin/applications下创建一个 application, Redirect URI配置:${API}/gitlab/callback
dbhost = "localhost:3306" #数据库地址
dbuser = "root" #数据库用户
dbpasswd = "" #数据库密码
dbname = "gitlab-config" #数据库名
redisHost = "localhost:6379" #redis地址
redisPasswd = #redis密码
redisDB = 1 #redis DB
gitlab-config-web.domain = "http://localhost:8080/" #gitlab web域名,用于登录成功后跳转用
该配置服务是基于分支或者tag来拉取配置的,所以项目要统一分支信息要统一才能更好的利用起来,暂时不能跨分支引用,也就是说master
分支只能引用master
分支的,不可以引用test
的,所有tag
只有一份配置,如果配置修改了,先找跟该配置所在项目的最新tag
的同名tag
,更新依赖项目的最新tag
,如果该模式不能满足,大家可以再扩展一下,我们公司的.config.sh
加了个envBranch
字段,手动配置环境和分支的映射关系,branch
换成env