自动化部署方案
 
由于来来也的时间不久,可能对现有的部署情况不是很了解,以下是个人对POC自动化部署的设计方案。
自动化部署优点
降低成本,提高生产力,高可用,更可靠,性能优化
 
与gitlab持续集成的比较流行的有jenkins和gitlab-ci
Jenkins:
优点:编译服务和代码仓库分离,而且编译配置文件不需要在工程中配置,如果团队有开发、测试、配置管理员、运维、实施等完整的人员配置,那就采用jenkins,这样职责分明。jenkins依靠它丰富的插件,可以配置很多gitlab-ci不存在的功能,比如说看编译状况统计等。
缺点:配置相对复杂,维护成本较高等
gitlab-ci:
优点:完美和gitlab进行集成,gitlab-ci已经集成进gitlab服务器中,在使用的时候只需要安装配置gitlab-runner即可。 gitlab-runner基本上提供了一个可以进行编译的环境,负责从gitlab中拉取代码,根据工程中配置的gitlab-ci.yml,执行相应的命令进行编译。
缺点:功能相对少一些,没有web页面查看等
总结:
个人觉得gitlab-ci更简单易用,如果有gitlab-ci达不到的要求,可以考虑使用jenkins。如果只部署poc相似的项目使用gitlab-ci可以满足需求。
 
方案一:gitlab-ce + gitlab-runner + docker
 
从左往右看,首先研发人员完成需求提交代码到 GitLab。GitLab 触发一次 Build,构建好服务,然后开始跑单元测试、集成测试。等待测试结果通过后,再由负责该项目的同事进行 CodeReview(可省略),灰度发布,正式部署到线上,支持shell部署和docker部署。

 
gitlab-ce 代码仓库管理与pipeline主控台
gitlab-runner 则是当pipeline启动时,会根据gitlab特有的gitlab-ci.yml执行CI/CD
gitlab-ce 每个project会有一组自己的token,用以注册gitlab-runner
gitlab-runner注册时,可以选择执行方式(executor),我们选择docker
gitlab-runner会另外开几个container来pull code与执行CI/CD,最后push到服务器上
 
主要步骤:
编写统一格式dockerfile,如果多应用关联编写docker-compose文件
编写统一pipeline,注册ci-runner等

上图是一个典型的 Pipeline,一共有 5 个阶段,Build,Test,Release, Staging, Production,每个阶段里都至少有一个 Job,Test 中有两个 Job。GitLab 会从左往右依次把任务给到 Runner 处理,如果中途有一个任务没有处理成功的话,整个 Pipeline 就会退出。这就是持续集成(CI)、持续发布(CD) 的一个流程。
 
方案二:gitlab + jenkins + docker
  • 开发者向自己的gitlab网站提交了代码
  • 通过webhook让jenkins执行自动化构建过程
  • jenkins从git上拉取代码进行构建,如构建失败可配置邮件通知开发人员
  • jenkins在自动化构建脚本中调用docker命令将构建好的镜像push 私有镜像服务器
  • 同时,jenkins也可以直接执行remote shell启动构建好的容器
  • 服务端可以手动通过docker命令,从镜像仓库中心拉取镜像,进行手动

总结:个人意见如果只部署poc类似不是很复杂的应用可以选择方案一满足

原因:配置简单使用方便,可以花较少的时间完成自动化部署,节约成本,主要比较符合现状。但是如果以后需要区分环境部署,做一些类似sonar代码的健康检查等,可能不能很好的完成。
 
个人不成熟建议:随时时间变长,poc的项目也会越来越多,每个人的项目也会越来越多,可能需要一些资产的管理,例如CMDB,权限系统控制每个人操作的权限等,可以引入devops的概念,从急需的需求,慢慢做起。

自动化部署方案CICD的更多相关文章

  1. .NetCore基于Jenkins和Gogs的自动化部署方案

    准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明  和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...

  2. ezdpl:完全依赖脚本和ssh的自动化部署方案

    ezdpl是easy deployment的简写,使用简单的ssh和shell脚本来部署.升级.回滚和重新配置linux服务器. 重要提示:警告:这个项目还处于测试过程中,请仔细阅读说明,并且自己承担 ...

  3. Docker自动化部署方案

    一 概述 Docker发布版本应该与现有的版本发布尽量一致,参考jenkins的版本发布过程:我认为maven库和docker库有很多类似的地方,因此打包过程参考maven的打包过程:重点实现dock ...

  4. 前端自动化部署方案-实践(配合shell)

    以下实例项目为vue项目,其他项目当然也雷同咯 在项目中建一个这个么脚本文件 不说了,上代码 #!/bin/sh handle=$1; env=$2; # 远程部署机 webhook # 如果用远程机 ...

  5. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  6. 使用GitHub Actions实现自动化部署

    前言 大家在工作中想必都是通过自动化部署来进行前端项目的部署的,也就是我们在开发完某个需求时,我们只需要将代码推送到某个分支,然后就能自动完成部署,我们一般不用关心项目是如何build以及如何depl ...

  7. 基于 Jenkins Pipeline 自动化部署

    最近在公司推行Docker Swarm集群的过程中,需要用到Jenkins来做自动化部署,Jenkins实现自动化部署有很多种方案,可以直接在jenkins页面写Job,把一些操作和脚本都通过页面设置 ...

  8. jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

    一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...

  9. [转]基于AWS的自动化部署实践

    作者 徐桂林 发布于 2014年1月22日 -------------------------------------------------------------------- 1. 背景 在过去 ...

随机推荐

  1. 使用Arcgis Pro 发布矢量切片

    ArcGIS Pro 中的任何地图或底图都可以创建矢量切片,但是有一些局限性和特殊注意事项.为创建矢量切片制作地图的重点是构建一个有效的地图,以快速绘制生成的切片. 软件环境 操作系统:Windows ...

  2. SYN2136型 北斗NTP网络时间服务器

    SYN2136型  北斗NTP网络时间服务器 北斗NTP网络时间服务器时间服务器使用说明视频链接: http://www.syn029.com/h-pd-109-0_310_36_-1.html 请将 ...

  3. 管理分布式session的四种方式。

    应用服务器的高可用架构设计最为理想的是服务无状态,但实际上业务总会有状态的,以session记录用户信息的例子来讲,未登入时,服务器没有记入用户信息的session访问网站都是以游客方式访问的,账号密 ...

  4. Mac和Windows以及Linux上WingIDE Pro激活

    写这篇文章的原因,主要是网上的很多激活方式都不适用最新版的软件.要么要你付费下载别人破解好的内容,要么各种文章你抄我,我抄你,根本没有自己实践过. 本篇文章合适Mac.Windows.Linux平台, ...

  5. Python开发【第七篇】: 面向对象和模块补充

    内容概要 特殊成员 反射 configparser模块 hashlib模块 logging模块 异常处理 模块 包 1. 特殊成员 什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线 ...

  6. C#学习笔记:ListBox控件的用法

    样式如下: 实现的代码一: using System;using System.Collections.Generic;using System.ComponentModel;using System ...

  7. 源码阅读 - java.util.concurrent (四)CyclicBarrier

    CyclicBarrier是一个用于线程同步的辅助类,它允许一组线程等待彼此,直到所有线程都到达集合点,然后执行某个设定的任务. 举个例子:几个人约定了某个地方集中,然后一起出发去旅行.每个参与的人就 ...

  8. windows7(win7)64/32位激活工具

    win7激活工具中文绿色免费版是改自binbin的作品,我们修改的windows7激活工具grldr模拟激活是别人的东西,能激活win7旗舰.原作者是binbin,其他的激活工具都是基于grldr模拟 ...

  9. 再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)

    Gitlab runner 快速搭建CICD pipeline 背景 日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署 ...

  10. 彻底透析SpringBoot jar可执行原理

    ​ 文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定 ...