持续集成,持续交付,持续部署。
持续集成:对源代码进行自动化编译、测试、代码检查,以及打包程序、部署(发布)到应用服务器上。主要使用jenkins。
通过主干开发分支发布进行,首先从主干上拉取代码到本地进行开发,代码修改完成定点将代码合入到主干后进行编译扫描,跑自动化测试任务。自动化测试包括单元测试、集成测试、系统测试、验收测试、性能测试等。
Jenkins:
配置项目配置任务流配置任务。
主要在于任务的管理,有拉取代码任务,扫描任务,编译等。可通过使用ant脚本或者shell脚本或者其他脚本实现各功能。
Ant脚本是一个基于开放的操作系统构建和部署的工具,用xml的文档来编写,就如linux下的shell脚本,windows下的cmd命令。通过一个xml文件来制定一系列文件的创建删除任务、编译任务、运行任务、测试任务、打包任务等。我们可以通过ant指令执行这个xml脚本,来批处理这些任务,这样就可以实现“一键”完成编码后的编译、运行、测试、打包导出等工作,使我们可以更加专注于代码的编写与质量。
ps:ant的使用和学习:https://www.w3cschool.cn/ant
<?xml version="1.0"?> <project name="pro" default="info2">
<copy file="C:/Users/user/Desktop/startup.txt" tofile="C:/Users/user/Desktop/copy.txt"/> 拷贝文件
<path id="build.classpath"> <fileset dir="lib"> <include name="*.jar"/> </fileset> <pathelement path="${build.dir}"/> </path>
<target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes" encoding="UTF-8" includes="com/**"> <classpath refid="build.classpath" /> </javac> </target> 使用ant编译java项目。将build.xml存放于项目下,跑命令跑该脚本 ant -buildfile xml路径
<property name="sitename" value="www.xxxxx.com"/> 属性相当于参数定义 <target name="info2" depends="info1"> 可包含多个target,每个target就是一个任务,target中有name、depends、description、if、unless <echo>测试</echo> </target> <target name="info1" depends="info"> <echo>扫描</echo> </target> <target name="info" > <echo>编译 ${sitename} ${ant.project.name}</echo> 参数的使用 ant的预定义属性也可以使用。 </target> </project>
java用来运行一个.class文件 java -buildfile xxx.java
javadoc用来生成api文档
jar用来生成jar包
javac用来把.java文件编译为.class文件 java xxx
初始化、编译、打包
<?xml version="1.0" encoding="UTF-8"?> <project name="ant_web_hello" default="jar" > <target name="init"> <mkdir dir="build/classes"/> </target> <!-- 定义编译时的classpath --> <path id="compile.path"> <fileset dir="webContent/WEB-INF/lib" includes="*.lib"> </fileset> </path> <target name="compile" description="编译源文件" depends="init" > <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5"> <classpath refid="compile.path" /> </javac> <echo>编译完成!</echo> </target> <target name="jar" depends="compile"> <jar destfile="webContent/WEB-INF/lib/util.jar" > </jar> <echo>打包完成!</echo> </target> <target name="clean" description="清理" depends="jar"> <delete dir="build/classes" /> <echo>清理完成!</echo> </target> </project>
Jenkins配置: 使用的是java语言写的代码,代码开发时使用jdk1.8版本,服务器使用1.7版本,需要更新jdk版本。下载安装jdk,在环境变量中配置环境变量。 环境变量配置时找到jdk地址,之后设置参数进行修改。 在cmd命令中确认java的版本,java -version 在出现java.lang.ArrayIndexOutOfBoundsException: 5 问题时,是参数有问题,
<path id="build.classpath"> <fileset dir="lib"> <include name="*.jar"/> </fileset> <pathelement path="${build.dir}"/></path>
Bamboo
以上是jenkins的简单描述,一直看到过bamboo这个jira的插件,但是不知道是干嘛的,今天去翻了一下原来也是持续集成的,一款持续集成构建服务器软件,但是是非开源的。
windows上支持:MSBuild, NAnt, Visual Studio
Java平台: Ant, Maven 1, Maven 2, Maven 3 包括另外一些编译脚本 custom script, command line, Bash
在通知方面支持XMPP, Google Talk, E-mail, RSS, Remote API 协议等
可以和以下平台集成: IntelliJ IDEA, Eclipse, Visual Studio FishEye, Crowd, JIRA, Clover
在SCM方面支持常见的主流版控工具,如CVS,Subversion,Git,CC等。