安装Gitlab & 配置Jenkins CI & 解决换源部署的坑

这两周负责将公司仓库从Github换到Gitlab

安装Gitlab

推荐使用官方推荐的Omnibus package安装

最先在自己的服务器上装,总是会出现502问题,找了各种资料最后感觉这篇文章讲得比较好

修改gitlab使用现有nginx服务及502问题解决

原因可能是系统内存不足,无法分配足够内存,导致启动失败,这种情况只能升级服务器配置来解决。

所以在公司的AWS上开了台4g内存的装上就可以了。。。。

附:Gitlab命令

配置

  1. 关闭服务器上所有无关的端口

  2. 起始用户名:root, 密码:5iveL!fe

  3. 因为是公司自己用,所以关闭注册,全部采取邀请注册机制

  4. 创建项目的时候切记关闭Gitlab CI!(Gitlab新版本默认开启CI,如果没配置又没关闭会出现一个关不掉的表示CI正在运行的图标,应该是Gitlab的小bug)

    Edit Project –> Repository –> Build –> Disabled

配置Jenkins

  1. Jenkins安装Gitlab插件: Gitlab Hook Plugin & GitLab Plugin
  2. 新建一个job
  3. 源码管理部分选Git, Repository URL填入 git@gitlabXXXX.git
  4. 添加Credential,把Jenkins所在服务器的SSH填入到Gitlab用户中
  5. 选择分支 这一步有大坑,下面会讲到
  6. 源码库浏览器选择gitlab,填入url(http://gitlabxxxxxx)和版本
  7. 构建触发器里面勾选Build when a change is pushed to GitLab. GitLab CI Service URL: XXXXX, 到Gitlab项目中Webhook里面添加这个URL
  8. 添加自己项目需要的构建脚本

Branch Filter 大坑

上面第五步分支过滤,以前用Github在构建的时候在Git –> Branches to build –> Branch Specifier 里面填需要筛的分支即可比如 */staging

但是Gitlab由于用了Gitlab Plugin, 它有自己的一套过滤系统, 并且不走Jenkins自带的。

在Build when a change is pushed to GitLab. GitLab CI Service URL:XXXX (这个就是插件提供的)里面点开“高级”,可以看到Allowed branche的选项,选择Filter branches by regex 填入自己需要的分支,比如(.*master)

注意,这个地方的正则可能和大家平常写的有一点点区别,一定要看下帮助。

对于CI的流程自己的一些理解

  1. push 代码, Gitlab触发hook, 访问Jenkins提供的api
  2. Jenkins Branch Filter 系统判断自己需要处理的分支是否有改动,如果有开始构建
  3. 运行构建脚本

搬迁Github仓库至Gitlab

Git 拉下所有分支

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

git fetch --all

git pull --all

参考资料:http://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches

更换remote源

git remote -v
git remote rm origin
git remote add origin git@XXXXXX 

如何批量删除分支

本地

git branch |grep 'xxx' |xargs git branch -D

远端

git branch |grep 'xxx' |xargs git push origin --delete 

参考资料:http://www.jianshu.com/p/3602f666799a

如何看分支数

git branch | wc -l

文件行数,从0开始计数:wc -l filename

wc -l a.txt

远端:

git ls-remote

git ls-remote | wc -l

上传

git push origin --all / git push -u origin master 之后 git push —all /git push --all origin

Capistrano部署的坑

修改Capistrano里面部署的配置文件deploy.rb,将url从github改成gitlab源

不过即使是这样,最后发现部署时还是从github拿的代码

google了很久后找到了解决方案,需要删除repo这个文件夹(这个是Capistrano自己建的存放远端相关信息的文件夹)

参考资料:https://github.com/capistrano/capistrano/issues/1227

I remove directory repo, and it works with new repo

mv repo repo.bak
rm -rf repo

手动更改remote源

在部署和被部署的服务器上没有repo文件夹的地方,可能需要手动更改remote源,方法见上面的”更换remote源”

手动指定分支

上面更改了远端remote源的地方可能需要自己指定分支

git branch --set-upstream-to=origin/master master
    原文作者:林檎君
    原文地址: https://www.jianshu.com/p/f5af41ed5da6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞