尊重劳动成果,转载请注明转自:https://my.oschina.net/u/164010/blog/861261
注意:安装jenkins之前,请先安装JAVA 8
一、VisualSVN Server安装和配置
- 在www.visualsvn.com/server/download/下载VisualSVN Server版本。
- 傻瓜式安装后打开visualsvn server
- 右击左边树的VisualSVN Server>>Properties>>Network中将主机名,修改为ip地址。如下图:
- 右击左边树的Users>>Create User创建用户名admin/admin。
- 右击左边树的Repositories>>Create New Repositorie...创建SVN仓库,并设置admin用户拥有读写权限(web是一个java的web网站的项目根目录),如下图:
- SVN安装和配置完成。
二、sonar安装配置
- 在https://www.sonarqube.org/downloads/下载sonar的LTS版本(非LTS有可能安装有错误)。
-
在数据库中创建用户和数据库,执行以下代码:
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'sonar' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
-
修改数据库下的conf的sonar.properties
sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.jdbc.url=jdbc:mysql://192.168.1.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
-
依次运行管理员运行bin/windows-x86-xx/下的InstallNTService.bat,StartSonar.bat。
-
运行成功后,打开浏览器,输入http://192.168.1.1:9000,就可以访问sonar,输入admin/admin就可以登录sonar。
-
在配置>>系统>>更新中心中安装需要的插件。本人安装了:C#、Chinese Pack、Git、Java、SVN、SonarJS、SonarXML、Timeline、Web,安装后重启sonar服务。
-
在配置>>SCM>>SVN中输入svn的用户名和密码(不输入这个在执行sonar和jenkins的时候会出现SVN E170001错误),如图:
-
在Administrator>>安全>>Tokens中,随便输入一个名字,点击Generate,生成token,拷贝生成好的token,预留到之后和jenkins集成的时候使用。
-
如果是maven项目,修改maven项目下的sonar配置,修改conf/settings.xml文件的profiles节点,增加sonar的配置
<profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Optional URL to server. Default value is http://localhost:9000 --> <sonar.host.url> http://192.168.1.1:9000 </sonar.host.url> </properties> </profile>
之后在maven项目的pom.xml下执行以下代码就可以将项目的质量分析交给sonar处理了。
mvn clean install sonar:sonar
-
sonar安装和配置到此结束。
三、nexus安装和配置
- 在https://www.sonatype.com/download-oss-sonatype下载2.x版本的bundle.zip(3.x本人安装不成功)
- 解压并依次用管理员运行nexus-xxx\bin\jsw\windows-x86-xx的install-nexus.bat和start-nexus.bat。
- 运行成功后,在浏览器输入http://192.168.1.1:8081/nexus,输入admin/admin123登录。
- 登录成功后,复制Repositories中的Public Repositories的url地址,预留后面结合maven使用。
- 顺便说下:
(1)在3rd party中可上传第三方包。在Releases和Snapshots个人开发的jar包。Releases为发布的版本,Snapshots为快照,只要在maven的pom文件中的版本号有-Snapshots的后缀,就会自动上传到Snapshots中。
(2)在pom文件中可以配置下面代码上传到Releases和Snapshots。
(3)命令行运行到个人开发库的pom目录,执行下面命令行就可以发布到Releases和Snapshots(后面命令为跳过测试)。<!-- 配置repleash和snapshots --> <distributionManagement> <repository> <id> nexus-releases</id> <name> Nexus Release Repository</name> <url> http://192.168.1.1:8081/nexus/content/repositories/releases/</url> </repository> <!-- 如版本号中包含-SNAPSHOT则会传到快照中 --> <snapshotRepository> <id> nexus-snapshots</id> <name> Nexus Snapshot Repository</name> <url> http://192.168.1.1:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
mvn deploy -Dmaven.test.skip=true
(4)当然,这还需要在maven的settings.xml配置文件中,配置nexus的服务器、用户名和密码信息。这个稍后再讲。
-
nexus安装和配置完成。
四、maven安装和配置
- 在maven.apache.org/download.cgi下载maven。
- 解压后并将maven的根目录添加到系统环境变量中。
- 修改conf/settings.xml,修改节点localRepository设置maven下载的jar包存放路径
修改servers节点,添加上传到nexus的Releases和Snapshots的用户名和密码,修改了这个后上一节后面说的就可以上传到nexus了。<localRepository>E:/maven-repo</localRepository>
修改mirrors节点,设置nexus公共库的地址<servers> <server> <id> nexus-releases</id> <username> admin</username> <password> admin123</password> </server> <server> <id> nexus-snapshots</id> <username> admin</username> <password> admin123</password> </server> </servers>
设置完成后,就可以从nexus私服下载pom和jar了。<mirrors> <mirror> <id> nexus-public</id> <name> Nexus Mirror</name> <url> http://192.168.1.1:8081/nexus/content/groups/public/</url> <mirrorOf> central</mirrorOf> </mirror> </mirrors>
- maven安装完成。
四、tomcat安装和配置
- 在tomcat.apache.org下载tomcat 7(在写本文的时候jinkins还没有tomcat8)
- 解压后conf/server.xml的端口号为9900。修改conf/tomcat-users增加以下节点。
运行tomcat的服务,打开浏览器输入192.168.1.1:9900/manager看是否能访问。能访问并且输入tomcat/tomcat能登录说明配置成功。(manager项目是用来jenkins自动发布项目用的)<role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
- 加入到系统服务中,如果命令行没有service.bat文件就自行想办法吧(tomcat8貌似没有这个文件)。命令行打开到bin目录下,执行service.bat install将tomcat安装到系统服务中,再到系统服务中将其设置为自动启动。
- tomcat安装和配置完成。
五、jenkins安装和配置
- 在https://jenkins.io下载jenkins。
- 复制上一节下载的tomcat并解压到另一个目录,修改端口号为9100(8005和8009端口号也修改下,不要和9900设置的tomcat端口号冲突)。
- 将jenkins复制到webapps目录下。
- 运行tomcat的服务(安装到系统服务可上上一节,但是要注意修改tomcat7.exe和tomcat7w.exe的名字不要和上一节的tomcat冲突,比如修改为:tomcat-jenkins.exe和tomcat-jenkinsw.exe,同时修改service.bat文件中的所有tomcat7为tomcat-jenkins)。
- 浏览器输入192.168.1.1:9100/jenkins。
- 初始登录需要到提示目录中复制初始密码。登录并安装一些插件后就可以进入主界面了。(本人安装后不知道为什么后来修改密码后登录不了,如知晓答案的请您给我留言,谢谢。),如果之后忘记密码,可注释.jenkins目录下的config文件的下列内容,就可以免没密码登录(本人安装后在C:\Windows\System32\config\systemprofile\.jenkins下面)
<useSecurity>true</useSecurity> <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> <denyAnonymousReadAccess>true</denyAnonymousReadAccess> </authorizationStrategy> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <disableSignup>true</disableSignup> <enableCaptcha>false</enableCaptcha> </securityRealm> <disableRememberMe>false</disableRememberMe>
- 在系统管理>>管理插件>>可选插件中安装插件以下插件并重启jenkins:
Subversion Plug-in:svn插件 Deploy to container Plugin :tomcat自动部署插件,要结合tomcat的manager项目。 NodeJS Plugin : nodejs插件,可处理Nodejs相关。 SonarQube Scanner for Jenkins : sonar插件 其他的自己选...
- 在Credentials>>global>>Add Credentials添加SVN的用户名和密码。
- 配置sonar:在系统管理>>系统配置中,找到SonarQube servers节点。增加一个SonarQube,输入用户名、url地址、sonar的token(就是前面在sonar创建的token)后保存,如下图:
- 配置jenkins全局工具。在系统管理>>Global Tool Configuration中。
(1)、新增JDK,如图:
(2)、新增SonarQube Scanner,如图:
(3)、新增Maven,如下图:
(4)、新增Nodejs(NodeJS建议使用自动安装,不要使用自己安装的NodeJs,同时在Global npm packages to install中自动安装到apidoc到全局中,使用自己安装的NodeJs容易出现安装后找不到全局安装的模块的命令),如下图: - 环境基本就配置到这里,接下来我再说明怎么在jenkins中新建任务。
一、新建jenkins的任务
- 在jenkins面板中,点击新建。
- 在新建面板中,输入任务名和和选择构建一个自由风格的软件项目,点击OK。如图:
- 在General标签中,点击高级,勾上使用自定义的工作空间,输入目录名,如图:
- 在源代码管理设置SVN的项目路径(即第一章节中的截图),和在jenkins设置过的Credentials。如下图:
- 在构建触发器设置要执行的任务时间,其中Build periodically为设置多少周期内强制构建,Poll SCM设置的是多少周期内定期构建一次,本人设置的是每天晚上12点构建一次,每3天晚上1点强制构建一次,如下图:
- 在构建环境中,选择之前在jenkins的Global Tool Configuration中设置的Nodejs的环境。用于之后构建apidoc生成文档。如下图:
- 在构建中增加maven的构建,选择Invoke top-level Maven targets。并选择在jenkins的Global Tool Configuration中设置的maven环境,同时添加maven构建命令和pom。如下面两图:
- 在构建中增加sonar构建,选择Execute SonarQube Scanner,并选择在jenkins的Global Tool Configuration中设置的JDK环境。同时,还要设置sonar的项目配置(或在Path to project properties输入sonar-project.properties的目录位置,可以把Analysis properties中输入的内容拷贝到项目根目录下的sonar.properties文件中,当执行命令行时,根目录就是上面设置过的自定义空间的目录名),如下两图:
另外,Analysis properties代码如下(本人只试验成功java-module,所以其他的都注释了,以后有机会再继续研究):#required metadata #projectKey项目的唯一标识,不能重复。 sonar.projectKey=web #projectName值不能是中文,否则web页面部分是乱码 sonar.projectName=web sonar.projectVersion=0.0.1-SNAPSHOT sonar.sourceEncoding=UTF-8 #sonar.modules=java-module,javascript-module,html-module,CSS-module sonar.modules=java-module # Java module java-module.sonar.projectName=xmist.traffic.web java-module.sonar.language=java # .表示projectBaseDir指定的目录 java-module.sonar.sources=src java-module.sonar.projectBaseDir=. sonar.binaries=target\classes # JavaScript module #javascript-module.sonar.projectName=web_js #javascript-module.sonar.language=js #javascript-module.sonar.sources=webapp #javascript-module.sonar.projectBaseDir=. # Html module #html-module.sonar.projectName=web_html #html-module.sonar.language=web #html-module.sonar.sources=webapp #html-module.sonar.projectBaseDir=. # CSS module #CSS-module.sonar.projectName=web_css #CSS-module.sonar.language=css #CSS-module.sonar.sources=webapp #CSS-module.sonar.projectBaseDir=.
- 在构建中增加windows批处理,如下图:
输入以下命令执行apidoc生成接口文档。apidoc -i ./src/main/ -o E:/tomcat-9900/webapps/api [-c ./] -f ".*\.java$" exit 0
上面命令中意思是在src/main目录中找到所有的java文件并将生成的代码输出到E:/tomcat-9900/webapps/api目录下(9900就是之前设置的tomcat服务器)。
当然,执行上面的命令是不会通过的,因为在项目根目录下没有apidoc.json文件。在项目的根目录下创建json文件,内容如下(url地址是生成的接口文档的接口的访问地址,比如生成出来会是:http://192.168.1.1:9900/admin/list):
apidoc的介绍也可以访问另一篇博客:https://my.oschina.net/u/164010/blog/848729{ "name": "web", "version": "0.0.1-SNAPSHOT", "description": "web API", "title": "web API", "url" : "http://192.168.1.1:9900", "sampleUrl": "http://192.168.1.1:9900", "forceLanguage":"zh-cn", "template": { "withCompare": true, "withGenerator": true } }
-
最后,最重要的tomcat服务器部署。
-
在构建后操作中,新增Deploy war/ear to a container,并设置tomcat的构建信息。如下两图:
设置war/ear的目录,即maven编译后的target目录。
设置Context path,本人设置到编译后自动部署到tomcat ROOT下。也可以设置到其他目录下。
设置Containers,添加tomcat 7.x,并设置之前设置的tomcat下的manager目录的用户名和密码,还有tomcat的访问地址。 -
最后,写了好长。。。。就到此为止了。。。终于写写完了。
-
再最后,保存后点击立即构建,就可以自动从svn中检出代码,并执行maven构建、sonar代码分析、apidoc的接口文档生成了。然后,也可以自动的部署到tomcat目录下啦。
-
再来,对自己说:辛苦啦!!!