使用Gitlab和Gitlab CI做持续集成(理论篇)
2016-07-25 20:11
323 查看
持续集成是一种软件开发实践。
在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。
每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。
关于持续集成,可以阅读Martin Fowler(马丁·福勒 )的经典文章:http://www.martinfowler.com/articles/continuousIntegration.html
集成的频率越高越好,更频繁的集成意味着更早的发现问题。
通过持续集成,及时发现和解决代码故障,提高代码质量,减少故障处理成本等等。
当下持续集成工具不胜枚举,开源的或商业的,可本地安装的或Sass的,如:
当前最最流行的,一骑绝尘的Jenkins
与Github紧密集成的Travis CI
有着持续集成DNA的ThoughtWorks GO
Atlassian工具链之一的Bamboo
与Gitlab紧密集成的Gitlab CI
……
持续集成工具技术选型(Jenkins VS Gitlab CI):
Jenkins有GUI
GUI使得易于学习与使用,但一系列插件可能会变得混乱不堪
如果需要用户访问与管理,这个是首选
与Gitlab的集成,Jenkins不及Gitlab CI
Jenkins需要为Project创建JOB,commit与build对应关系无法直观体现
Gitlab8.0版本开始完全集成了持续集成工具Gitlab CI
Gitlab CI有漂亮的界面,每个构建有迹可循,偏于回溯
使用yaml定义Build Pipeline更清晰
使用yaml定义Pipeline的CI产品
Travis CI
Bitbucket Pipelines
Circle CI
Magnum CI
Jenkins2.0也支持更高级的Pipeline
使用Jenkinsfile和Pipeline插件,Jenkinsfile 使用Groovy DSL定义
Pipeline、Stage、Job的概念类似ThoughtWorks GO中的概念
一个pipeline包含一个或多个stage,stage是串行的
一个stage包含一个或多个job,job是并行的
鉴于Gitlab CI与Gitlab集成的更友好,而且想尝试下Gitlab CI + Docker,于是选择了Gitlab CI做持续集成。
使用Gitlab CI进行持续集成实践的流程:
代码Check In到GitLab
提交后触发Gitlab CI(使用Docker进行Build)
Gitlab CI 拉取代码进行编译、质量分析(SonarQube )
SonarQube 将质量分析报告反馈到GitLab相应的commit(以Comment的形式)
Gitlab将构建结果反馈给Develop (以Email的形式 )
参考:
https://about.gitlab.com/gitlab-ci/
http://stackoverflow.com/questions/37429453/gitlab-ci-vs-jenkins
https://about.gitlab.com/2016/07/22/building-our-web-app-on-gitlab-ci/
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。
每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。
关于持续集成,可以阅读Martin Fowler(马丁·福勒 )的经典文章:http://www.martinfowler.com/articles/continuousIntegration.html
集成的频率越高越好,更频繁的集成意味着更早的发现问题。
通过持续集成,及时发现和解决代码故障,提高代码质量,减少故障处理成本等等。
当下持续集成工具不胜枚举,开源的或商业的,可本地安装的或Sass的,如:
当前最最流行的,一骑绝尘的Jenkins
与Github紧密集成的Travis CI
有着持续集成DNA的ThoughtWorks GO
Atlassian工具链之一的Bamboo
与Gitlab紧密集成的Gitlab CI
……
持续集成工具技术选型(Jenkins VS Gitlab CI):
Jenkins有GUI
GUI使得易于学习与使用,但一系列插件可能会变得混乱不堪
如果需要用户访问与管理,这个是首选
与Gitlab的集成,Jenkins不及Gitlab CI
Jenkins需要为Project创建JOB,commit与build对应关系无法直观体现
Gitlab8.0版本开始完全集成了持续集成工具Gitlab CI
Gitlab CI有漂亮的界面,每个构建有迹可循,偏于回溯
使用yaml定义Build Pipeline更清晰
使用yaml定义Pipeline的CI产品
Travis CI
Bitbucket Pipelines
Circle CI
Magnum CI
Jenkins2.0也支持更高级的Pipeline
使用Jenkinsfile和Pipeline插件,Jenkinsfile 使用Groovy DSL定义
Pipeline、Stage、Job的概念类似ThoughtWorks GO中的概念
一个pipeline包含一个或多个stage,stage是串行的
一个stage包含一个或多个job,job是并行的
鉴于Gitlab CI与Gitlab集成的更友好,而且想尝试下Gitlab CI + Docker,于是选择了Gitlab CI做持续集成。
使用Gitlab CI进行持续集成实践的流程:
代码Check In到GitLab
提交后触发Gitlab CI(使用Docker进行Build)
Gitlab CI 拉取代码进行编译、质量分析(SonarQube )
SonarQube 将质量分析报告反馈到GitLab相应的commit(以Comment的形式)
Gitlab将构建结果反馈给Develop (以Email的形式 )
参考:
https://about.gitlab.com/gitlab-ci/
http://stackoverflow.com/questions/37429453/gitlab-ci-vs-jenkins
https://about.gitlab.com/2016/07/22/building-our-web-app-on-gitlab-ci/
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
相关文章推荐
- centos 6.5安装GitLab全过程和问题记录
- 全新安装gitlab后出现504 bad gateway 及提示输入默认帐号错误
- Gitlab安装
- CentOS源码安装GitLab汉化版
- redhat6.3部署gitlab
- Git LFS(Large File Storage)
- gitlab的安装配置
- centos gitlab安装
- TortoiseGit升级操作说明
- gitlab进入数据库增加或删除管理员
- gitlab取消对文件的编辑选项
- gitlab取消用户注册时需要管理员认证功能
- gitlab的web hook,接收不到数据?其实藏在流里
- CentOS6.x下GitLab安装
- gitlab 数据备份
- Ubuntu 14.04下安装GitLab指南
- gitlab 遇到 internal API unreachable remote rejected 问题
- gitlab
- maven/jekinsFailed to connect to repository : Command