gitLabCICD

传统应用发布模式

问题:

  1. 错误发现不及时
  2. 人工低级错误
  3. 团队工作效率低
  4. 开发运维对立

引入CI/CD

CI(持续集成):

  • 合并开发人员正在开发编写的所有代码的一种做法
  • 通常一天内进行多次合并和提交代码
  • 从此存储库或生产环境中进行构建和自动化测试,以确保没有集成问题

CD(连续交付)

  • 通常可以通过将更改自动推送到发布系统来随时将软件发布到生产环境中
  • 持续部署会更进一步,并自动将更改推送到生产中

代码版本管理-gitlab

  1. 代码审查
  2. 问题跟踪
  3. 动态订阅
  4. 易于扩展
  5. 项目wiki
  6. 多角色项目管理
  7. 项目代码在线预览
  8. CI工具集成

持续集成-Jenkins

  1. 可扩展自动化服务器
  2. 安装配置简单
  3. 丰富的插件库
  4. 分布式架构设计
  5. 支持所有的平台
  6. 可视化的管理页面

GitLabCI/CD优势:

  • 开源
  • 易于学习:具有详细的入门文档
  • 无缝集成:GitLab CI/CD是GitLab的一部分支持从计划到部署
  • 可扩展:测试可以在单独的计算机上分布式运行
  • 更快的结果
  • 针对交付进行了优化

GitLabCI/CD特点

  • 多平台
  • 多语言
  • 稳定构建:构建在GitLab不同的机器上运行
  • 并行构建:GitLab CI/CD再多台机器上拆分构建,已实现快速执行
  • 实时日志记录:合并请求中的连接将您带动动态更新的当前构建日志
  • 灵活的管道
  • 版本管道:一个.gitlab-ci.yml文件 包含您的测试,整个过程的步骤,是每个人都能贡献更改
  • 自动缩放:您可以自动缩放构建机器,以确保立即处理您的构建并将成本降至最低
  • 构建工件:您可以将二进制文件和其他构建工件上载到GitLab并浏览和下载他们
  • Docker支持
  • 容器注册表
  • 受保护的变量:部署期间使用受每个环境保护的变量安全的存储和使用机密
  • 环境:定义多个环境

GitLabCI/CD工作原理

  • 将代码托管到Git存储库
  • 在项目根目录创建ci文件 .gitlab-ci.yml,在文件中指定构建,测试和部署脚本
  • GitLab将检测到它并使用名为GitLab Runner的工具运行脚本
  • 脚本被分组为作业,他们共同组成了一个管道

Jenkins与GitLabCI对比:

  1. 分支可配置性

    • GitLab CI,新创建的分支无需任何进一步配置即可立即使用CI管道中的已定义作业
    • Jenkins2基于gitlab的多分支流水线可以实现,向对配置来说,gitlab更加方便一些
  2. 定时执行构建

    • 使用Jenkins可以立即使用
    • GitLab CI没有此功能,但是可以通过一种变通方法来实现
  3. 拉取请求支持

    • Jenkins没有与源代码管理系统进一步集成,需要管理员自行写代码或者插件实现
    • GitLab与其CI平台紧密集成,可以放查看每个打开和关闭拉动请求的运行和完成管道
  4. 权限管理

    • 由于GitLab与GitLabCI的深度整合权限可以统一管理
    • 由于Jenkins2没有内置的存储库管理器,因此他无法直接在存储库管理器和CI/CD平台之间合并权限
  5. 存储库交互

    • GitLab CI是Git存储库管理器GitLab的固定组件,因此在CI/CD流程和存储库功能之间提供了良好的交互
    • Jenkins2与存储库管理器都是松散耦合的,因此在选择版本控制系统时它非常灵活。此外,九江其前身一样,jenkins2强调了对插件的支持
  6. 插件管理

    • 扩展Jenkins的本机功能是通过插件完成的,插件的维护保护和升级成本很高
    • GitLab是开放式的,任何人都可以直接向代码库贡献更改,一旦合并,它将自动测试并维护每个更改

    总结

    GitLabCI

    • 轻量级
    • 配置简单
    • 实时构建日志十分清晰,UI交互体验很好
    • 使用YAML进行配置
    • 没有统一的管理界面,无法统筹管理所有项目
    • 配置依赖于代码仓库,耦合度没有Jenkins低

    Jenkins

    • 编译服务和代码仓库分离,耦合度低
    • 插件丰富,支持语言中多
    • 有统一的web管理揭秘那
    • 插件以及自身安装较为复杂
    • 体量较大,不是很适合小型团队44

GitLab安装

1、使用rpm包安装

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.0-ce.0.e17.x86_64.rpm
rpm -ivh gitlab-ce-12.9.0-ce.0.e17.x86_64.rpm
vim /etc/gitlab.rb #编辑站点地址
gitlab-ctl reconfigure #配置

#服务控制
gitlab-ctl start
gitlab-ctl status
gitlab-ctl stop

2、使用Docker安装

mkdir -p -/data/gitlab/config -/data/gitlab/logs -/data/gitlab/data docker pull gitlab/gitlab-ce:12.9.0-ce.0

docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /Users/zeyang/data/gitlab/config:/etc/gitlab -v 
/Users/zayang/data/gitlab/logs:/var/log/gitlab -v
/Users/zeyang/data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:12.9.0-ce.0

docker exec -it gitlab bash
vim /etc/gitlab.rb #编辑站点地址
gitlab-ctl reconfigure #配置

docker restart gitlab

#服务控制
docker start gitlab
docker stop gitlab
docker rm gitlab

你可能感兴趣的:(分布式,java,docker)