Web前端开发的持续构建环境的搭建,主要完成以下几个目标:
- 可以采用jslint/jshint对js代码进行检查,并能够输出报表。
- 能够运行js的UT,并输出报表。
- 能够采用minify工具,对js、css代码进行压缩、合并,输出部署的代码,并且压缩、合并后,能够自动处理HTMl页面中的引用。
- 以上所有的功能,能够集成到自动构建环境(jenkins)中自动执行,并且产生报表。
- 能够根据配置,自动构建测试版本、发布版本,并且自动部署到相应的服务器上。
具体实现如下:
实现概述:
采用Jenkins作为持续集成环境,采用ant作为构建工具,集成jslint4java, jsTestDriver, requriejs(r.js)来完成实际的构建工作,并把构建结果输出的指定的目录,Jenkins从指定的目录中读取结果并展示。
基础环境:
- Java
- Ant
- Jenkins
- Git(可以采用其他源码控制系统)
- Nodejs
源码目录结构:
采用jslint对js代码进行检查,并输出报表
- 下载jslint4java。
http://code.google.com/p/jslint4java/。
jslint4java是一个java对jslint工具的封装,可以通过java执行jslint对js代码进行检查。并且,此项目提供了ant task,可以直接ant中调用执行。
- 把下载的jar包(jslint4java-xxx.jar)放到build目录。
- 在Ant脚本中增加如下代码:
<taskdef name="jslint"
classname="com.googlecode.jslint4java.ant.JSLintTask"
classpath="./build/jslint4java-2.0.2.jar" />
<target name="jslint" depends="clean">
<mkdir dir="${stat.result.folder}/jslintOutput"></mkdir>
<jslint failureProperty="false" haltOnFailure="false">
<formatter type="checkstyle" destfile="${stat.result.folder}/jslintOutput/jslintresult.xml"/>
<fileset dir="scripts">
<include name="**/*.js"/>
<exclude name="require.js"/>
</fileset>
</jslint>
</target>
说明:实际上,是把jslint的检查结果输出成checkstyle的格式,Jenkins中有checkstyle插件可以读取这个格式
采用jsTestDriver执行js的UT
- 下载jsTestDriver。
http://code.google.com/p/js-test-driver/,把下载的jar包放到build目录。
jsTestDriver可以通过java,运行js编写的UT,并且可以同时指定多个浏览器运行环境同时运行。
- 编写jsTestDriver的配置文件,放到build目录
server: http://localhost:9876
load:
- ../scripts/*.js
- ../scripts-test/*.js
3. 在ant中,采用java task调用
jsTestDriver来运行编写的ut
<target name="jsut" depends="clean">
<mkdir dir="${stat.result.folder}/jsUTOutput"></mkdir>
<java jar="build/JsTestDriver-1.3.4.b.jar" fork="true" failonerror="true">
<arg value="--port"/>
<arg value="9876"/>
<arg value="--config"/>
<arg value="build/jsTestDriver.conf"/>
<arg value="--browser"/>
<arg value="C:\Users\juns6831.CHN\AppData\Local\Google\Chrome\Application\chrome.exe"/>
<arg value="--tests"/>
<arg value="all"/>
<arg value="--testOutput"/>
<arg value="${stat.result.folder}/jsUTOutput"/>
</java>
</target>
说明:jsTestDriver的运行输出的结果是junit格式的,Jenkins的Junit插件可以读取此结果。
采用requriejs的optimizer来压缩js, css
- 下载requirejs.js,放到scripts目录。下载r.js,放到build目录。
http://requirejs.org/。目前,有很多js的minify工具,但是采用这些工具压缩、合并js代码后,html中的js、css引用不容易修改。采用requriejs来管理js代码,会比较容易处理这种情况。
- 编写minify.bat,执行js, css代码的压缩
node r.js -o name=main out=../%1/scripts/main.js baseUrl=../scripts
node r.js -o cssIn=../css/main.css out=../%1/css/main.css optimizeCss="standard.keepLines"
3. 采用ant的exec task,调用minify.bat,执行压缩
<target name="minify" depends="clean">
<exec executable="cmd" osfamily="windows" dir="build" failonerror="true">
<arg value="/c"/>
<arg value="minify.bat"/>
<arg value="${target.folder}"/>
<arg value="-p"/>
</exec>
</target>
HTML、JS、CSS代码
index.html(根目录)
<!DOCTYPE html>
<html>
<head>
<title>My Sample Project</title>
<script data-main="scripts/main" src="scripts/require.js"></script>
</head>
<body>
<h1>My Sample Project</h1>
</body>
</html>
JS代码(scripts目录)
main.js
require(["helper/util"], function(util) {
//This function is called when scripts/helper/util.js is loaded.
//If util.js calls define(), then this function is not fired until
//util's dependencies have loaded, and the util argument will hold
//the module value for "helper/util".
console.log("util js loaded.");
console.log(util.a + ',' + util.b);
});
GreatTest.js
GreeterTest = TestCase("GreeterTest");
GreeterTest.prototype.testGreet = function() {
var greeter = new myapp.Greeter();
assertEquals("Hello World!", greeter.greet("World"));
jstestdriver.console.log("JsTestDriver", greeter.greet("World"));
console.log(greeter.greet("Browser", "World"));
};
GreeterTest.prototype.testGreet3 = function() {
var greeter = new myapp.Greeter();
assertEquals("Hello World!", greeter.greet("World3"));
jstestdriver.console.log("JsTestDriver", greeter.greet("World3"));
console.log(greeter.greet("Browser", "World3"));
};
GreeterTest2 = TestCase("GreeterTest2");
GreeterTest2.prototype.testGreet2 = function() {
var greeter = new myapp.Greeter();
assertEquals("Hello World2!", greeter.greet("World2"));
jstestdriver.console.log("JsTestDriver", greeter.greet("World2"));
console.log(greeter.greet("Browser", "World2"));
};
main.css
@import url("common.css");
body{
color:red
}
common.css
Ant脚本
<project name="js build" default="install" basedir=".">
<property name="target.folder" value="target" />
<property name="stat.result.folder" value="stat-result" />
<property name="tomcat.webapp" value="D:\apache-tomcat-6.0.32\webapps"></property>
<taskdef name="jslint"
classname="com.googlecode.jslint4java.ant.JSLintTask"
classpath="./build/jslint4java-2.0.2.jar" />
<target name="jslint" depends="clean">
<mkdir dir="${stat.result.folder}/jslintOutput"></mkdir>
<jslint failureProperty="false" haltOnFailure="false">
<formatter type="checkstyle" destfile="${stat.result.folder}/jslintOutput/jslintresult.xml"/>
<fileset dir="scripts">
<include name="**/*.js"/>
<exclude name="require.js"/>
</fileset>
</jslint>
</target>
<target name="jsut" depends="clean">
<mkdir dir="${stat.result.folder}/jsUTOutput"></mkdir>
<java jar="build/JsTestDriver-1.3.4.b.jar" fork="true" failonerror="true">
<arg value="--port"/>
<arg value="9876"/>
<arg value="--config"/>
<arg value="build/jsTestDriver.conf"/>
<arg value="--browser"/>
<arg value="C:\Users\juns6831.CHN\AppData\Local\Google\Chrome\Application\chrome.exe"/>
<arg value="--tests"/>
<arg value="all"/>
<arg value="--testOutput"/>
<arg value="${stat.result.folder}/jsUTOutput"/>
</java>
</target>
<target name="minify" depends="clean">
<exec executable="cmd" osfamily="windows" dir="build" failonerror="true">
<arg value="/c"/>
<arg value="minify.bat"/>
<arg value="${target.folder}"/>
<arg value="-p"/>
</exec>
</target>
<target name="build" depends="jslint,jsut,minify">
<copy todir="${target.folder}">
<fileset dir="${basedir}">
<include name="*.html"></include>
</fileset>
</copy>
<copy file="scripts/require.js" todir="${target.folder}/scripts"></copy>
</target>
<target name="install" depends="build">
<mkdir dir="${tomcat.webapp}/jsci"></mkdir>
<copy todir="${tomcat.webapp}/jsci">
<fileset dir="${target.folder}"></fileset>
</copy>
</target>
<target name="clean">
<delete dir="${target.folder}"></delete>
<delete dir="${tomcat.webapp}/jsci"></delete>
<delete dir="${stat.result.folder}"></delete>
</target>
</project>
安装Jenkins插件
- Git plugin
- checkstyle plugin
- ant, junit plugin在安装jenkins是已经自动安装
创建Jenkins项目
- 配置SCM。Git的仓库地址,分支名称(master)
- 配置调用ant
- 选中“
Publish Checkstyle analysis results ”,文件地址输入"stat-result/jslintOutput/*.xml"
- 选中“
Publish JUnit test result report ”,文件地址输入“stat-result/jsUTOutput/*.xml”
- 保存。
- 运行Jenkins构建,可以在项目的主页上看到UT, jslint的运行结果,可以在target目录下面看到完整的压缩、合并后的js、css代码,和HTML代码。
根据配置,自动构建开发、测试、发布等版本,下一个博客再写。
- 大小: 13.5 KB
分享到:
相关推荐
用Vue-cli快速构建web前端项目 Vue-cli 是Vue.js的脚手架,用于自动生成Vue.js模板工程的。Vue-cli 提供一个官方命令行工具,可用于快速搭建大型单页应用。该工具提供开箱即用的构建工具配置,带来现代化的前端开发...
为了UED前端团队更好的协作开发同时提高项目编码质量,我们需要将Web前端使用工程化方式构建; 目前需要一些简单的功能: 1. 版本控制 2. 检查JS 3. 图片合并 4. 压缩CSS 5. 压缩JS 6. 编译SASS 这些...
本系列课程是专门为零基础学习Web前端开发的朋友准备的,老师将多年的教学经验与案例相结合,深入浅出,循序渐进,让大家轻松的进入Web开发行业。 本系列课程主要讲述Web开发的前端技术:html、css、JavaScript,...
介绍了环境配置与工具准备、Web应用服务器、数据库访问层、客户端框架、CSS框架、客户端测试框架、现代的前端开发方式、编写更容易维护的JavaScript代码、本地构建、持续集成、单元测试与集成测试、环境搭建的自动化...
WijmoJS 凭借先进的触控设计、全面的框架支持、顶级的控件性能、零依赖的产品特性和易用、轻松的操作体验,全面满足前端开发所需,已成为构建企业 Web 应用程序最高效的纯前端开发工具包。 与此同时,WijmoJS 的...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
作为前端开发工程师,您的简历应该突出您的技能和经验,以吸引潜在的雇主。下面是一个前端开发工程师专用简历模板描述的示例: 个人简介: 我是一名有着X年前端开发经验的工程师,对于Web开发和用户体验有着深入的...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
WijmoJS 凭借先进的触控设计、全面的框架支持、顶级的控件性能、零依赖的产品特性和易用、轻松的操作体验,全面满足前端开发所需,已成为构建企业 Web 应用程序最高效的纯前端开发工具包。 与此同时,WijmoJS 的...
Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式。本文给大家介绍用Go+Vue.js快速搭建一个Web应用(初级demo)。 环境准备: 1. 安装go语言,配置go开发环境; 2. 安装node.js以及npm...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
同时,也需要借助一些工具,如代码编辑工具(WebStorm、VS Code)、代码版本控制工具(Git、SVN)、代码包管理工具(npm、Yarn)、前端构建工具(Webpack、Vite)等,来提升开发效率和质量。 总的来说,前端开发是...
该存储库称为web-apps-pro项目信息官方网站: : 代码存储库: : SaaS版本: : 用户反馈和支持如果您对有任何疑问或疑问,请访问我们的官方论坛以找到您的问题的答案: 或者您可以在上询问和回答ONLYOFFICE开发问题...