jenkins 持续集成环境搭建

持续集成

持续集成(CI)是一种软件工程流程,将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。

依赖以下原则达到目标

  • 维护一个代码库
  • 自动建置
  • 让建置时会自我测试
  • 所有人每天至少提交一次
  • 应该要建置每一个提交
  • 让建置维持快速
  • 用在线环境的复本测试
  • 让获取最新发布版本更容易
  • 任何人都可以查看最后建置的结果
  • 自动部署

产生的效益

  • 及早发现集成错误且由于修订的内容较小所以易于追踪,这可以节省项目的时间与成本。
  • 避免发布日期的前一分钟发生混乱,当每个人都会尝试为他们所造成的那一点点不兼容的版本做检查。
  • 当单元测试失败或发生错误,若开发人员需要在不除错的情况下还原代码库到一个没有问题的状态,只需要放弃一小部分的更改 (因为集成的次数频繁)。
  • 让 “最新” 的程序可保持可用的状态供测试、展示或发布用。
  • 频繁的提交代码会促使开发人员创建模块化,低复杂性的代码。 Jenkins是一个用Java编写的开源的持续集成工具,前身是Hudson (软件)项目,有丰富的插件支持;

Jenkins安装

安装jdk

jdk下载地址: http://www.oracle.com/technetwork/java/archive-139210.html

tar xf jdk-8u112-linux-x64.tar.gz -C /usr/local/

配置jdk环境变量
vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_112
export CLASSPATH=.:$JAVA_HOME/lib/:$JAVA_HOME/jre/lib/
export PATH=$JAVA_HOME/bin:$PATH

安装jenkins

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

添加java路径到jenkins启动脚本中
vim /etc/init.d/jenkins

/usr/local/jdk1.8.0_112/bin/java

img

修改jenkins默认时区

vim /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai"

启动jenkins

/etc/init.d/jenkins start
chkconfig --level 35 jenkins on

访问路径 http://192.168.6.102:8080
默认密码存在这个文件中 /var/lib/jenkins/secrets/initialAdminPassword

img

创建一个管理用户

img

img

Jenkins 配置

安装maven

jdk下载地址: http://apache.mirrors.lucidnetworks.net/maven/maven-3/

tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/

配置maven环境变量
vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_112
export CLASSPATH=.:$JAVA_HOME/lib/:$JAVA_HOME/jre/lib/
export M3_HOME=/usr/local/apache-maven-3.3.9
export PATH=$JAVA_HOME/bin:$PATH:$M3_HOME/bin

全局工具配置

点击系统配置-Global Tool Configuration

img

针对项目中使用的jdk和maven情况添加对应的版本
img

插件安装配置

点击系统配置-插件管理

img

  • 可选插件直接安装
    右上角的过滤功能很好用,可以直接搜索安装
    安装以下插件
    Hudson SCP publisher plugin
    Deploy to container Plugin
    Maven Integration plugin
    Publish Over SSH
    Publish Over CIFS
    Backup plugin / ThinBackup
    Email Ext Recipients Column Plugin
    Localization: Chinese (Simplified)
  • 高级选项中上传插件安装
    http://mirrors.jenkins-ci.org/plugins/
    安装完插件之后,建议重启一下jenkins,防止插件未加载上,不生效;

发布一个静态网站

配置Hudson SCP publisher plugin插件

此插件用于发布静态网站,拷贝文件很方便

img

配置需要发布的服务器hostname,端口,路径,用户名,密码(如果是正式环境,不建议使用root用户)

ps:这里有个小技巧,如果这台机器上有多个静态网站目录的话,可以在服务器设置多个hosts记录,这里使用主机名来分区不同的路径

新建一个软件项目test

img

源码管理:
填写svn路径
有获取代码权限的用户名密码
img

构建后操作:
选择需要scp的路径
Source ** 表示所有
Keep Hierarchy 保持目录结构(否则不能拷贝文件夹)

img

点击立即构建

img

通过 Console Output可以看到详细日志

img

至此,一个静态网站就发布完成了!

发布一个java后台工程

安装Deploy to container Plugin插件

此插件可以将war/ear 包发布到tomcat,glassfish,jetty,weblogic等中间件上

配置tomcat web管理

vim /usr/local/apache-tomcat-7.0.77/conf/tomcat-users.xml

<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<role rolename="manager-gui,manager-script,manager-jmx,manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

由于jenkins把8080端口占用,我这里修改tomcat端口为8081
vim /usr/local/apache-tomcat-7.0.77/conf/server.xml

<Connector port="8081" protocol="HTTP/1.1"

tomcat8之后的版本,为了安全,默认只有本机可以访问管理控制台,因此需要修改 T O M C A T / w e b a p p / m a n a g e r / M E T A − I N F 和 TOMCAT/webapp/manager/META-INF和 TOMCAT/webapp/manager/METAINFTOMCAT/webapp/host-manager/META-INF目录下的content.xml
修改

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

一个简单的maven工程代码

https://github.com/nsxq/hello-world-war

maven 的简单使用

查看版本

mvn -version

查看详细信息

mvn X

测试

mvn test

清理(target目录下的编译内容)

mvn clean

编译项目

mvn compile

打包发布

mvn package

生成eclipse项目文件

mvn eclipse:eclipse

产生site

mvn site

安装当前工程的jar安装到本地仓库

mvn install

安装jar包到本地仓库

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=/usr/local/src/ojdbc14-10.2.0.4.0.jar

分析项目的依赖信息

mvn dependency:analyze / mvn dependency:tree

新建一个maven工程

获取代码

img编译参数

img

构建后发布

img

点击立即构建
查看日志,已经发布完成了

img

访问项目
http://192.168.6.102:8081/hello

img

至此,一个maven工程已经实现自动化编译、打包、发布!

版本回退

有时候发布一个新版本失败或发布有问题,我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署。我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是退

对文件进行存档

为了能够进行版本回退,构建完成的需要对文件进行存档

img

使用参数化构建过程

让后面的脚步可以根据不同的变量执行不同的操作。添加“Choice”参数配置不同的选项,让选择发布还是回滚,添加“String Parameter”参数来传递要回退的版本号。

img

构建选择“Execute Shell”的方式

自己根据变量,自定义构建的脚本,此时如果是发布安装maven的构建过程进行新的构建,如果是回滚,知道历史构建后的文件,复制到当前构建结果目录。

case $deploy_env in
	deploy)
    	echo "deploy:$deploy_env"
        mvn clean test compile install package
        ;;
    rollback)
    	echo "rollback:$deploy_env"
        echo "version: $version"
        rm -fr target/hello-1.war
        cp -R ${JENKINS_HOME}/jobs/myapp/builds/${version}/com.efsavage\$hello/archive/com.efsavage/hello/1/hello-1.war .
        pwd && ls
        ;;
	*)
    exit
    	;;
esac

执行回退操作

点击构建,根据不同的参数选择发布还是版本回退,回退的时候填写要回退到的历史版本号

img

img

PS: Tomcat8配置web管理后,Tomcat访问 manager页面 报403的解决办法:https://blog.52itstyle.com/archives/274/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值