1. 环境设计

    搭建一个从开发到测试知道发布上线可以自动换完成的CI系统。这个系统中包含4个环境。

  开发(dev)环境: 码农使用。

  测试(test)环境: 测试人员使用。

  预发布(prepublish)环境: 预发布环境,用于上线前的最后验证。

正式(realpublish)环境: 正式上线运行环境

  

  我期望的效果是这样的:

  代码推送到master分支,自动构建、部署到dev

  代码推送到test分支, 自动构建、部署到test

  test上测试通过后,在jenkins中手动触发relase分支构建, jenkins自动将test分支代码合并到release上, 然后构建、部署到prepublish

prepublish验证通过后,在jenkins中手动触发publish构建,使用release分支代码, 构建、部署到publish

以上步骤中,在不同的环境中自动使用不同的配置。

2. 环境准备

  操作系统:centos7

  用虚拟机虚拟出5个主机:

  192.168.1.35: gitlab

  192.168.1.36: jenkins

  192.168.1.41: dev环境

  192.168.1.42: test环境

  192.168.1.43, 192.168.1.44 prepublish 环境

  192.168.1.45,192.168.1.46   realpublish环境    

  2.1 安装gitlab, 创建实验用的project

  在192.168.1.35上安装gitlab, 这个主机需要配置至少4G内存,否则gitlab会很慢。

  具体安装过程参考:https://about.gitlab.com/installation/#centos-7

  第一步:

  curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

  第二步:

  sudo EXTERNAL_URL="http://192.168.1.35" yum install -y gitlab-ce

 

  完成之后gitlab将会在192.168.1.35 提供服务

  

  打开浏览器输入: http://1192.168.1.35

  第一次进入初始化root账号

  创建一个用于创建project的账号

  至此,gitlab环境就准备好了。

  2.2 安装配置jenkins

  在192.168.1.36上运行jenkins

  安装jdk8

  下载jenkins:  http://mirrors.jenkins.io/war-stable/latest/jenkins.war

  将jenkins.war放在 /root/jenkins中

  启动jenkins

  cd /root/jenkins

  ./java -jar jenkins.war --httpPort=80

  打开浏览器输入192.168.1.36登录jenkins。第一次进入会要求安装默认的plugin, 安装完成之后, 创建一个管理员账号,然后用这个管理账号重新登录。

  系统管理 - 管理插件 - 可选插件  选择gitlab相关插件进行安装:

  GitLab Plugin

  Gitlab Hook Plugin

      
  2.3 创建实验project
  
  在gitlab中创建一个group: examples

创建一个用于实验的project: example-springbootmvc。 我在github上有这个用于实验的project: https://github.com/brandonlyg/examples-springbootmvc.git。可以clone下来,导入到gitlab中。使这个project在gitlab中个url是 git@192.168.1.35:examples/example-springbootmvc.git

  

  2.4 让jenkins所在的主机可以免密码登录到其他的主机上

  生成ssh key

  ssh-keygen

  将公钥copy目标主机上,然后ssh登录异常

  ssh-copy-id root@192.168.1.41

  ssh root@192.168.1.41

  重复这两个步骤,配置好42, 43, 44, 45, 46这几个主机。

使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境的更多相关文章

  1. Jenkins的CI持续集成

    Jenkins的CI持续集成 全局配置 系统管理->全局工具配置,配置Git,JDK和Maven 1)解压maven到当前目录 tar zxf apache-maven-3.5.4-bin.ta ...

  2. 基于jenkins搭建一个持续集成服务器

    1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部 ...

  3. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  4. 使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不同触发条件执行不同的构建任务

    前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin# ...

  5. 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建

    1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...

  6. 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish

    publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...

  7. [原创]CI持续集成系统环境---部署gerrit环境完整记录

    开发同事提议在线上部署一套gerrit代码审核环境,不用多说,下面就是自己部署gerrit的操作记录. 提前安装好java环境,mysql环境,nginx环境 测试系统:centos6.5 下载下面三 ...

  8. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  9. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

随机推荐

  1. Linux系统下ping命令报错 name or service not know

    问题描述 CentOS,但是当执行ping命令的时候,提示name or service not known 解决方法 1.添加DNS服务器 vi /etc/resolv.conf 进入编辑模式,增加 ...

  2. Django:form.save()方法

    参考:https://blog.csdn.net/it_yuan/article/details/53580756 背景: 之前的博客是不支持上传文章缩略图的,后来新增了此功能,但是发现修改老的文章时 ...

  3. SQL Server 紧急状态下的数据库恢复

    背景:由于服务器硬盘损坏,服务器异常关机.重新进入后,数据库为质疑状态.(数据库名字上面有个感叹号,连接不了) 经过无数次的百度以及大佬们的指点下,终于成功恢复,下面来说一下方法. 第一种: 1.在服 ...

  4. WebAPI+Html跨域时对session的支持

    1.Global.asax中添加对Session的支持,重新Init方法: public override void Init() { this.PostAuthenticateRequest += ...

  5. asp.net使用SpeechSynthesizer类生成语音文件部署到iis遇到的几个坑

    首先需要引入命名空间System.Speech.Synthesis,代码如下: using (var speechSyn = new SpeechSynthesizer()) { speechSyn. ...

  6. javascript js 完美解决 click 与 dblclick 冲突,并且不会导致click延迟

    示例代码: marker.addEventListener("click", function(){ if (!window.markerClicked) { window.mar ...

  7. vs installer 将.net framework 集成到安装包中

    Missing .NET Framework 4.0 in Visual Studio 2017 Prerequisites whenhttps://stackoverflow.com/questio ...

  8. Exp4 恶意代码分析 20164321 王君陶

    Exp4 恶意代码分析 20164321 王君陶 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具 ...

  9. Django 项目中设置缓存

    一.配置文件settings.py中 # 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启 ...

  10. 双向链表的实现——java

    实现类: /** * Java 实现的双向链表. * 注:java自带的集合包中有实现双向链表,路径是:java.util.LinkedList * * @author skywang * @date ...