在前面已经完成git和gitlab的相关操作

1.持续集成的概念:

1. 什么是持续集成:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
2. 好处:
节省人力成本
加快软件开发进度
实时交付
3. 整体流程
成员通过git提交代码--》持续集成引擎来去代码并使用构建工具自动构建--》发布项目
4. 重要组成部分:
git : 版本管理
gitlab : 远程仓库
jenkins 持续集成引擎
maven 构建工具
sonarqube 代码质量管理
junit 自动执行单元测试
JDK
Tomcat 几个war--》微服务架构

2.jdk与maven的安装

1. 版本说明:
* jdk1.8(目前大部分公司内部使用的还是JDK8,大部分依赖java的工具或框架,对JDK8的支持度是最好的)
* maven3.5.3
2. 将下载好的jdk跟maven上传到服务器上(jdk的安装可以参考linux命令)
3. jdk的安装
解压jdk到/usr/local/
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
配置环境变量
vim /etc/profile
在最下面,按i进入insert模式,添加一下内容
JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
export PATH
按esc进入命令行模式,再按:wq保存退出
激活配置
source /etc/profile
5. maven的安装
解压: tar -zxvf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
配置: vim /etc/profile
MAVEN_HOME=/usr/local/apache-maven-3.5.3
export MAVEN_HOME
PATH=$PATH:$MAVEN_HOME/bin
export PATH
按esc进入命令行模式,再按:wq保存退出
激活配置
source /etc/profile

3.nexus私服搭建

1. 上传到服务器
2. 解压:tar -zxvf nexus-3.12.1-01-unix.tar.gz -C /usr/local/
3. 修改配置文件(文件在安装目录的etc下):
vim /usr/local/nexus-3.12.1-01/etc/nexus-default.properties
修改对应的端口:默认是8081,没有使用的就可以不用修改
修改防火墙
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -ACCEPT
重启防火墙:
service iptables restart
4. 进入bin目录进行启动:
./nexus start (如果是root用户启动会有提示不建议使用root用户)
5. 关闭nexus服务:
ps aux | grep nexus
kill 进程号
6. 新建用户:
useradd nexus
chown -R nexus:nexus /usr/local/nexus-3.12.1-01 (自己的目录,解压出来有两个文件夹,两个文件夹的权限都要给该用户)
su nexus(如果出现bash-4.2$,就使用su root切换回root用户,使用cp -a /etc/skel/. /home/nexus之后再切换用户)
使用cd命令进入nexus的bin目录,使用./nexus start执行就好。
7. 通过 ps aux | grep nexus 可以查看nexus是否真正启动, 如果没有,可以使用 ./nexus run来查看没有启动的问题(错误信息)
8. 访问: 在本地使用 ip:8081 进行访问,如果可以正常访问,就安装成功(默认的账户是admin,密码是admin123),进行登录.
9. 使用root账户进入到bin目录下,修改上传的文件大小,使用 ulimit -a可以看到open file是1024,将他增加到65536,使用 vi /etc/security/limits.conf,在倒数第二行添加两行:
* soft nofile 65536
* hard nofile 65536
10. 修改nexus自启动: vi /etc/rc.d/rc.local,添加一行:
su - nexus -c '/usr/local/software/nexus/nexus-3.12.1-01/bin/nexus start'
11. 切换回nexus账户: su nexus,使用./nexus restart 重新启动

4. 私服的使用

1. 仓库的类型:
* proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接
* group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包
* hosted:宿主仓库,内部项目、付费jar
1. releases 发布内部release版本的仓库
2. snapshots 发布内部snapshots版本的仓库
3. third 自建第三方jar
2. 新建
* 点击设置,就是小齿轮那个标签
* 点击左侧导航的Repositories
* 点击create repository
* 选择 maven hosted,输入字段(maven-third),点击create完成
3. 配置本地的maven(家目录下的.m2,没找到,就去maven_home下的setting),修改maven的setting文件
* 在servers标签内配置远程私服的账号和密码:
<server>
<id>xdclass-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>xdclass-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
* 在<profiles>中配置私有库和插件库的地址(地址指向私服的group地址):
<profile>
<id>xdclass</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<!-- 私有库地址-->
<repositories>
<repository>
<id>xdclass</id>
<url>http://192.168.88.128:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!--插件库地址-->
<pluginRepositories>
<pluginRepository>
<id>xdclass</id>
<url>http://192.168.88.128:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
* 新加标签在setting结束标签之前加上下面代理,用来激活配置
<activeProfiles>
<activeProfile>xdclass</activeProfile>
</activeProfiles>
* 修改私服上的代理地址,将代理地址改为阿里云的:
http://maven.aliyun.com/nexus/content/groups/public
4. 上传本地项目到私服,在maven项目的pom.xml中进行配置:
<!--pom.xml 远程仓库的配置 id要跟本地maven的setting.xml相同 -->
<distributionManagement>
<repository>
<id>xdclass-releases</id>
<name>Wangzhi Release Repository</name>
<url>http://192.168.88.128:8081/repository/maven-releases/</url>
</repository> <snapshotRepository>
<id>xdclass-snapshots</id>
<name>Wangzhi Snapshot Repository</name>
<url>http://192.168.88.128:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
5. 点击deploy就可以发布了
6. 上传第三方jar包到私服:
* 选择私服的upload,选择上传到哪个?一般选择自己新建的.
* 选项的填写:
1. file : 选择本地的第三方jar
2. extension: 是什么jar包,也就是后缀名
3. group id : com.xdclass
4. artifact id : wiggin
5. version: 1.0
6. 选中generate a pom那一行,点击upload就可以了
7. 本地项目的引用按照上面填写的引用就可以

5. 安装Mysql(可以参考linux常用命令中的安装mysql,比这个相对简单)

linux下安装mysql的方式
yum 安装简单
自行编译安装 自由
mysql下载
http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17.tar.gz
编译安装mysql
1.解压
tar -zxvf mysql-5.7.17.tar.gz
2.安装相应的依赖
yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-devel autoconf automake wget
3.下载boost
mkdir /usr/local/boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
4.添加用户并创建相应目录存放数据
useradd mysql
cd /home/mysql/
mkdir data logs temp
chown -R mysql:mysql data logs temp
4.执行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/usr/local/boost
5.编译安装
make 进行编译
make install 安装
6.修改mysql安装目录权限
chown -R mysql:mysql /usr/local/mysql
7.初始化mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
产生密码 eqK:iH;+S6dC
8.删除/etc下的my.cnf
rm /etc/my.cnf
9.复制服务启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
10.启动 MySQL 服务:
service mysql start
11.设置mysql服务开机自启动
chkconfig mysql on
12.登陆mysql并设置可远程登陆
mysql -u root -p 回车
粘贴初始化时产生的临时密码 eqK:iH;+S6dC
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;此时不让改,提示要先设置下密码
SET PASSWORD = PASSWORD('xdclass');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
exit;
重新登陆,使用刚刚设置的密码
mysql -u root -p
登陆完成之后,即可设置允许远程登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;
13.开启防火墙端口
vim /etc/sysconfig/iptables
加入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
14.使用连接工具测试远程连接

6. sonarQube(代码质量管理工具)的安装和使用(可以检查项目代码的错误,覆盖率等等)

前置依赖
mysql 5.6 or 5.7
jdk 1.8
1.下载
https://www.sonarqube.org/
2.安装unzip并解压sonarqube并移动到/usr/local
yum install unzip
unzip sonarqube-6.7.4.zip
mv sonarqube-6.7.4 /usr/local/
3.mysql里新增数据库
CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;
4.修改sonarqube相应的配置(下面的配置都是在原来的配置中找见进行修改)
vim /usr/local/sonarqube-6.7.4/conf/sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=wiggin
sonar.jdbc.url=改成步骤3创建的库名
sonar.web.context=/sonar
sonar.web.host=0.0.0.0
5.新增用户,并将目录所属权赋予该用户
useradd sonar
chown -R sonar:sonar sonarqube-6.7.4/
6.启动
su soanr
/usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh start (可能会启动失败,可以查看 logs下的日志文件来查看失败原因)
7.界面访问
http://192.168.56.101:9000/sonar
开启防火墙
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
8. 进行登录:
默认的账户名和密码都是admin,登录成功之后需要生成token(8e8d2ede68954ddf387e50efb24a140f0e3ff7d4) 在界面产生令牌,并将项目代码使用以下命令进行提交由sonarqube进行分析,完成后,查看相应的分析结果
mvn sonar:sonar \
-Dsonar.host.url=http://192.168.88.128:9000/sonar \
-Dsonar.login=8e8d2ede68954ddf387e50efb24a140f0e3ff7d4 在项目的根目录,使用git bash命令,将上面3行放入git bash命令行中运行,就可以build success

Jenkins的安装及常见问题定位

安装tomcat
1. 安装tomcat(创建用户操作tomcat)
useradd tomcat 新建用户
passwd tomcat 修改密码(密码不能过于简单)--Mypwd123456$
2. 使用root命令进行解压tomcat
3. 将解压的目录的权限给tomcat用户:
chown -R tomcat:tomcat apache-tomcat-9.0.12 安装Jenkins(基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。)
1. 下载 https://jenkins.io/download/
下载长期支持的war包(通用)
2. 将下载的war包上传到安装的tomcat的webapps目录下
3. 将jenkins的war包操作权限给tomcat用户
chown tomcat:tomcat jenkins.war
4. 启动tomcat
进入bin目录, ./startup.sh
5. 配置防火墙
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
6. 不能访问查看日志: 进入logs目录, more catalina.out可以看到端口已经被使用,关闭tomcat,使用netstat -tlun可以看到8080端口还在被使用,使用netstat -tlunp | grep 8080.可以看到哪个程序占用了80端口,发现是与gitlab相关,所以修改tomcat的端口号.
7. 修改端口号:
进入tomcat的conf目录,修改server.xml,找到8080端口,将端口修改为9999,重新进入bin目录进行启动,可以使用netstat -tlun查看到9999端口已经启动
8. 防火墙
firewall-cmd --zone=public --add-port=9999/tcp --permanent
firewall-cmd --reload
9. 就可以在本机访问了:
访问 http://192.168.88.128:9999/jenkins 就可以进行安装jenkins了,会提示到某一个目录下去查找密码,使用 more + 目录就可以进行查看了,复制内容,进行操作就好
10. 安装(如果出现离线问题)
离线解决:
访问 http://192.168.56.101:9999/jenkins/pluginManager/advanced 目录,拉到最底下,将https--》改成http,之后提交,重启tomcat, 再次访问就可以进行安装了,默认安装就好.
11. 创建管理员用户:
用户名: wangzhi
密码 : nrblwbb7
全名 : wangzhi
电子邮件: 2585700076@qq.com
点击保存并完成就好
12. 发现一片空白,重启tomcat.然后再次访问,就可以了

敏捷持续集成(Jenkins)的更多相关文章

  1. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...

  2. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  3. 持续集成~Jenkins构建GitHub项目的实现

    有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...

  4. 持续集成-jenkins 环境搭建

    转自:http://blog.jxdev.me/blog/2015/03/26/jian-xin-de-chi-xu-ji-cheng-zhi-lu-%5B%3F%5D-da-jian-jenkins ...

  5. 1.jenkins持续集成-jenkins安装

    1.为什们要使用jenkins Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目; 2.监控外部调用执行的工作. 2.安装jen ...

  6. 持续集成Jenkins + robot framework + git

    Jenkins + robot framework + git持续集成 一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Git Client Plugin.GIT plugi ...

  7. 持续集成Jenkins+sonarqube部署教程

    1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简 ...

  8. python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

    11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...

  9. 持续集成-jenkins介绍与环境搭建

    什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...

随机推荐

  1. day 11 前方高能-迭代器

    第一类对象 -----函数名  == 变量名 函数对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 可以作为返回值返回 def wrapper():     def inner():      ...

  2. Android Notification的使用 - z

    http://blog.csdn.net/new_one_object/article/details/55511253 另,博主其它文章也很好  

  3. 20155223 Exp8 WEB基础实践

    20155223 Exp8 WEB基础实践 基础问题回答 什么是表单? 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素. 表单使 ...

  4. 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具

    本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...

  5. mfc 类三种继承方式下的访问

    知识点 public private protected 三种继承方式 三种继承方式的区别 public 关键字意味着在其后声明的所有成员及对象都可以访问. private 关键字意味着除了该类型的创 ...

  6. python 回溯法 子集树模板 系列 —— 11、全排列

    问题 实现 'a', 'b', 'c', 'd' 四个元素的全排列. 分析 这个问题可以直接套用排列树模板. 不过本文使用子集树模板.分析如下: 一个解x就是n个元素的一种排列,显然,解x的长度是固定 ...

  7. [BZOJ2138]stone[霍尔定理+线段树]

    题意 一共有 \(n\) 堆石子,每堆石子有一个数量 \(a\) ,你要进行 \(m\) 次操作,每次操作你可以在满足前 \(i-1\) 次操作的回答的基础上选择在 \([L_i,R_i]\) 区间中 ...

  8. JavaScript快速入门-简介

    一.JavaScript历史(摘自w3school) JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互 ...

  9. 前端项目模块化的实践2:使用 Webpack 打包基础设施代码

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  10. PAT甲题题解-1062. Talent and Virtue (25)-排序水题

    水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...