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

1.持续集成的概念:

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

2.jdk与maven的安装

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

3.nexus私服搭建

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

4. 私服的使用

  1. 1. 仓库的类型:
  2. * proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接
  3. * group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包
  4. * hosted:宿主仓库,内部项目、付费jar
  5. 1. releases 发布内部release版本的仓库
  6. 2. snapshots 发布内部snapshots版本的仓库
  7. 3. third 自建第三方jar
  8. 2. 新建
  9. * 点击设置,就是小齿轮那个标签
  10. * 点击左侧导航的Repositories
  11. * 点击create repository
  12. * 选择 maven hosted,输入字段(maven-third),点击create完成
  13. 3. 配置本地的maven(家目录下的.m2,没找到,就去maven_home下的setting),修改mavensetting文件
  14. * servers标签内配置远程私服的账号和密码:
  15. <server>
  16. <id>xdclass-releases</id>
  17. <username>admin</username>
  18. <password>admin123</password>
  19. </server>
  20. <server>
  21. <id>xdclass-snapshots</id>
  22. <username>admin</username>
  23. <password>admin123</password>
  24. </server>
  25. * 在<profiles>中配置私有库和插件库的地址(地址指向私服的group地址):
  26. <profile>
  27. <id>xdclass</id>
  28. <activation>
  29. <activeByDefault>false</activeByDefault>
  30. </activation>
  31. <!-- 私有库地址-->
  32. <repositories>
  33. <repository>
  34. <id>xdclass</id>
  35. <url>http://192.168.88.128:8081/repository/maven-public/</url>
  36. <releases>
  37. <enabled>true</enabled>
  38. </releases>
  39. <snapshots>
  40. <enabled>true</enabled>
  41. </snapshots>
  42. </repository>
  43. </repositories>
  44. <!--插件库地址-->
  45. <pluginRepositories>
  46. <pluginRepository>
  47. <id>xdclass</id>
  48. <url>http://192.168.88.128:8081/repository/maven-public/</url>
  49. <releases>
  50. <enabled>true</enabled>
  51. </releases>
  52. <snapshots>
  53. <enabled>true</enabled>
  54. </snapshots>
  55. </pluginRepository>
  56. </pluginRepositories>
  57. </profile>
  58. * 新加标签在setting结束标签之前加上下面代理,用来激活配置
  59. <activeProfiles>
  60. <activeProfile>xdclass</activeProfile>
  61. </activeProfiles>
  62. * 修改私服上的代理地址,将代理地址改为阿里云的:
  63. http://maven.aliyun.com/nexus/content/groups/public
  64. 4. 上传本地项目到私服,在maven项目的pom.xml中进行配置:
  65. <!--pom.xml 远程仓库的配置 id要跟本地mavensetting.xml相同 -->
  66. <distributionManagement>
  67. <repository>
  68. <id>xdclass-releases</id>
  69. <name>Wangzhi Release Repository</name>
  70. <url>http://192.168.88.128:8081/repository/maven-releases/</url>
  71. </repository>
  72. <snapshotRepository>
  73. <id>xdclass-snapshots</id>
  74. <name>Wangzhi Snapshot Repository</name>
  75. <url>http://192.168.88.128:8081/repository/maven-snapshots/</url>
  76. </snapshotRepository>
  77. </distributionManagement>
  78. 5. 点击deploy就可以发布了
  79. 6. 上传第三方jar包到私服:
  80. * 选择私服的upload,选择上传到哪个?一般选择自己新建的.
  81. * 选项的填写:
  82. 1. file : 选择本地的第三方jar
  83. 2. extension: 是什么jar包,也就是后缀名
  84. 3. group id : com.xdclass
  85. 4. artifact id : wiggin
  86. 5. version: 1.0
  87. 6. 选中generate a pom那一行,点击upload就可以了
  88. 7. 本地项目的引用按照上面填写的引用就可以

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

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

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

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

Jenkins的安装及常见问题定位

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

    一.简介 django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似). ...

  2. 20155321 《网络攻防》 Exp9 Web安全基础

    20155321 <网络攻防> Exp9 Web安全基础 基础问题 SQL注入攻击原理,如何防御 原理:在事先定义好的SQL语句的结尾上添加额外的SQL语句(感觉一般是或上一个永真式),以 ...

  3. 使用pandas,7行代码实现朴素贝叶斯

    作者:hhh5460 大抵分成两类 一.离散的.标签化的数据 原文没有使用pandas,我使用pandas重新实现了朴素贝叶斯算法,看起来非常简洁.清爽. import pandas as pd '' ...

  4. xgboost学习与总结

    最近在研究xgboost,把一些xgboost的知识总结一下.这里只是把相关资源作总结,原创的东西不多. 原理 xgboost的原理首先看xgboost的作者陈天奇的ppt 英文不太好的同学可以看看这 ...

  5. [CF1065F]Up and Down the Tree[树dp]

    题意 给定一棵以 \(1\) 为根的树,你每次可以选择跳到某个叶子节点,再跳到和他深度差不超过 \(k\) 的祖先.询问最多能够跳到多少个叶子节点. \(n,k\leq 10^6\) . 分析 最后的 ...

  6. stl源码剖析 详细学习笔记 hashtable

    //---------------------------15/03/24---------------------------- //hashtable { /* 概述: sgi采用的是开链法完成h ...

  7. VS 远程调试 Azure Web App

    如果能够远程调试部署在 Azure 上的 Web App,将会极大的提高我们修复 bug 的效率.Visual Studio 一贯以功能强大.好用著称,当然可以通吃基于 Azure 应用的创建.发布和 ...

  8. 关于java线程池的一丢丢

    线程池应用达到的目的 1.降低资源消耗:可以重复利用已创建的线程从而降低线程创建和销毁所带来的消耗. 2.提高响应速度:当任务到达时,不需要等线程创建就可以立即执行. 3.提高线程的可管理性:使用线程 ...

  9. Unity角色对话

    对话类------------------------------------------------------------------------------------------------- ...

  10. H5游戏接微信小游戏的支付,满满的都是坑!

    h5小游戏接微信的支付,简直是在为难我胖虎,说多了都是泪. 准备工作: 准备工作一定要做好,不然很容易出错.首先是session_key这个字段,这个session_key是登录的时候需要用到的,根据 ...