概述

相关资料

Jenkins+maven+git的可持续集成实践
Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

实践操作

说明:JDK、SSHD已经默认安装了,这里就不复述了。

安装Tomcat

tomcat的安装很简单。不多讲。这里用的是[tomcat8]( “http://tomcat.apache.org/download-80.cgi“)。

安装maven

  1. maven官网下载maven最新的安装包apache-maven-3.0.4-bin.tar.gz,并解压至/usr/local/目录,或可选地修改maven的使用用户:sudo chown -R user:group apache-maven-3.0.4 或者 chmod 777 apache-maven-4.0.4 -R
  2. 添加M2_HOME环境变量:在/etc/environment或~/.bashrc文件中添加
export M2_HOME=/usr/local/apache-maven-3.0.4
export PATH=$PATH:$M2_HOME/bin
#optional
export MAVEN_OPTS="-Xms256m -Xmx512m"

安装git

ubuntu下直接apt-get install git -y即可安装。
安装完后,执行git --version看看版本信息:

root@36ab2c1af70e:~# git --version
git version 1.9.1

安装Jenkins

Jenkins官网下载最新版本的war包。然后放入到tomcat的webapps目录下:
这里使用Jenkins默认的工作空间。
启动tomcat,然后访问:http://localhost:8080/jenkins 即可看到页面。

但是却看到如下的错误信息:

AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"? See also: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+got+java.awt.headless+problem

java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at java.awt.Toolkit$3.run(Toolkit.java:1636)
    at java.awt.Toolkit$3.run(Toolkit.java:1634)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
    at java.awt.Toolkit.<clinit>(Toolkit.java:1668)
    at java.awt.Font.<clinit>(Font.java:246)
    at hudson.util.ChartUtil.<clinit>(ChartUtil.java:255)
    at hudson.WebAppMain.contextInitialized(WebAppMain.java:186)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

根据上面的提示,发现是少了libxrender,于是执行命令

sudo apt-get install libxrender-dev

完成后重启tomcat,发现又有新的错误:

java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory

于是执行命令:

apt-get install libxtst-dev

继续重启tomcat。
刷新页面,可以看到正常启动了

启动完后,需要输入管理员密码:

去服务器的/root/.jenkins/secrets/initialAdminPassword查看密码,输入密码然后继续。

然后选择需要安装的plugin,接着等待插件安装完成

这个过程很慢(看个人网络),可能有些插件安装不了(应该是被墙了),但是只要git安装也就行。安装完后,设置管理员账号跟密码,就能开始使用Jenkins了,如图

后来发现Git plugin 并没有安装成功。因为Git plugin 依赖于其他的插件(Credentials Plugin、SSH Credentials Plugin、Git Client Plugin),然后人工去下载了最新版本的依赖插件,最后才把git plugin安装上去。

使用Jenkins

新建任务

点击主界面左上角的“新建”按钮,弹出如下界面

配置Git仓库

如图所示

输入git地址,如果需要授权登录的话,就添加相应的授权。

配置maven命令

我们希望在git pull完成后,编译代码成jar,然后运行。
如图所示

  1. Maven Vesion 要选择正确(可以在配置中修改),不然找不到mvn命令
  2. 先执行mvn clean package -Dmaven.skip.test=true命令,进行编译,这个根据实际情况来修改
  3. 编译完后,就要执行jar文件。此时我们要判断一下这个jar是否已经执行过了,如果执行中就先kill掉
  4. 最后用nohup后台运行我们的jar,同时保存pid到jenkins.pid,方便下次kill掉进程。

这样的话就能构建项目了。
同时可以配置一个定时器去判断git上面的代码有没有更新,如果更新了,就自动构建,真是太方便了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐