使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境
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
创建一个用于实验的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) -- 准备环境的更多相关文章
- Jenkins的CI持续集成
Jenkins的CI持续集成 全局配置 系统管理->全局工具配置,配置Git,JDK和Maven 1)解压maven到当前目录 tar zxf apache-maven-3.5.4-bin.ta ...
- 基于jenkins搭建一个持续集成服务器
1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部 ...
- docker + gitlab + jenkins 搭建 CI/CD 系统
gitlab+jenkins+docker 计算机网络大全
- 使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不同触发条件执行不同的构建任务
前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin# ...
- 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建
1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...
- 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish
publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...
- [原创]CI持续集成系统环境---部署gerrit环境完整记录
开发同事提议在线上部署一套gerrit代码审核环境,不用多说,下面就是自己部署gerrit的操作记录. 提前安装好java环境,mysql环境,nginx环境 测试系统:centos6.5 下载下面三 ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...
随机推荐
- Team Foundation Server (TFS)集成Flyway,实现数据库的版本管理
1 概述 在系统开发过程中,我们对软件源代码的版本管理,已经有了比较成熟的解决方案.通过使用TFVC或GIT等源代码管理工具,可以非常方便的对软件代码实现回退.比较.分支合并等版本操作.对于软件依赖的 ...
- SQL Server 维护计划(数据库备份)
公司的项目都需要定期备份,程序备份关掉iis站点复制文件就可以了,难受的地方就是数据库的备份了.服务器上装的大都是英文版,一看见英文,操作都变得小心翼翼起来,生怕哪里搞错,第二天就要被安排写辞职申请了 ...
- 使用vs code开发纸壳CMS并启用Razor智能提示
关于纸壳CMS 纸壳CMS是一个开源免费的,可视化设计,在线编辑的内容管理系统.基于ASP .Net Core开发,插件式设计: 下载代码 GitHub:https://github.com/Seri ...
- 在Asp.net Core中使用中间件来管理websocket
介绍 ASP.NET Core SignalR是一个有用的库,可以简化Web应用程序中实时通信的管理.但是,我宁愿使用WebSockets,因为我想要更灵活,并且与任何WebSocket客户端兼容. ...
- Socket网络编程(TCP/IP/端口/类)和实例
Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...
- Android UI/UX 工具
Zeplin 用于界面图片自动导出. 图标 : https://material.io/icons/
- LiLicense server OR Activation code
JET BRAINS系列工具下载地址: https://www.jetbrains.com/products.html?fromMenu License server 输入下列两个任何一个点击 Act ...
- 弦论(tjoi2015,bzoj3998)(sam(后缀自动机))
对于一个给定长度为\(N\)的字符串,求它的第\(K\)小子串是什么. Input 第一行是一个仅由小写英文字母构成的字符串\(S\) 第二行为两个整数\(T\)和\(K\),\(T\)为0则表示不同 ...
- express form/ajax 后端获取前端数据
-------------------2017/12/02补充:缺了一个重要条件... var bodyParser = require('body-parser');var app = expres ...
- [兼容]——IE 8 常见兼容性问题
接触了一个PC端网页开发的项目,要求兼容到IE 8,遇到不少坑,在这里记录下: 1.IE8 的兼容性视图 bug描述:IE8有许多新更新,但微软为了兼容以前的IE浏览器,提出了"兼容性视图& ...