一、构建一个maven项目
 在jenkins主页上,左侧,选择“新建”,然后填写项目名称,选择“构建一个maven项目”
 二、Git配置
 保存之后,进入详细配置页面:
 这里的源码管理:选择git,输入代码的git地址,Credentials,填写代码分支(默认是*/master主分支)
 Credentials,需要点击Add按钮,添加具体的git凭证,
 ①如果当前git项目配置为通过用户名+密码认证,则kind选择username with password;
 centos的root用户生成的公钥密钥信息位置信息如下:
 ②如果用的是公钥+私钥的方式,则kind需要选择:ssh username with private key
 在private key里面填写私钥,私钥 位置(在开通git代码权限时生成):
 windows下:C:\Users\Administrator\.ssh\id_rsa
 centos 下 /root/.ssh/id_rsa
 文件内容:
 此时需要把这个id_rsa文件中的所有内容都粘贴到文本框中(包括BEGIN RSA PRIVATE KEY和END RSA PRIVATE KEY这两行)
 三、构建项目触发器
 build periodically:周期性构建,比如每隔十分钟构建一次,是通过cron表达式控制的,具体可以点击右侧的帮助
 poll scm:每隔多长时间pull一次代码,如果有更新,则编译,也是通过cron表达式控制的
 点击后面的?标识可以查看说明:
 配置maven编译的pom文件和部署脚本:
 root pom文件:由于现在当前文章中tool代码中的主pom.xml就在根目录下,所以root pom直接填写:pom.xml
 如果不是在根目录下,例如:toolsamdin项目中的pom.xml文件,则root pom直接填写:toolsamdin\pom.xml
 goals and options:这里调用maven的命令:clean install(如果项目中配置了多套配置文件profile,这里需要应用id=test的profile这套配置,则此处填写:clean install -P test)
 这里我们简单的测试一下,写一个 clean install
 点击立即构建:
 第一次由于要拉代码,所以比较慢,过了一会之后,出现如下变化:
 这里蓝色的圈表示成功,红色表示失败
 点击 # 进去之后
 点击 Console Output 查看本次构建的输出记录 ,最底部显示成功,如果有错误的话,这里会显示失败信息的。
 这时候,去我们的centos服务器的/root/.jenkins/jobs 目录下查看变化,首先多了一个weds-common文件夹,这个是根据我们的job的名字创建的。
 进入目录中 cd weds-common目录,查看
 这里是项目的构建记录
 进入 cd /root/.jenkins/workspace/ 目录查看
 这里多了我们的项目文件夹,这个是从我们的git服务器上pull下来的代码
 至此,本机的拉取,构建代码大功告成。
 四、构建项目发布到远程linux centos 服务器
 点击Post Steps,如图是一个正确的配置,报错可以不管。
 其中SSH Server是我们之前在系统设置 Publish over SSH 中设置好的
 post steps需要发布到远程linux,所以选择:
 然后填写目标war或jar到远程linux机器上的哪个目录下,然后调用远程机器上的shell脚本,自动重启tomcat,自动备份等功能
 其 中Source files的目录是基于当前job的目录(可以从jenkins的安装目录下找到):例如当前job名称为weds-common,则对于root用户,Source files中的目录是相对于/root/.jenkins/workspace/weds-common目录下的,因此,如果我们要发送weds-common下的weds-pay项目的war包,这里需要填写:weds-pay/target/weds-pay.war
 Remove prefix:表示需要移除的目录,比如这里填写weds-pay/target,则表示发布时,只把weds-pay.war发布到远程linux,而不包含weds-pay/target目录结构
 Remote directory:表示需要把编译好的war包发布到远程linux的哪个目录下
 Exec command:需要执行的shell命令,shell命令在远程linux服务器上,比如。一般是需要执行:停止tomcat,复制war到tomcat,备份,启动tomcat等。
 注:本人在配置的是soure files 路径填写有问题,导致构建的时候, Console Output一直报SSH: Transferred 0 file(s),关于相对路径的问题,如果搞不清楚是该相对于谁,请看下图:
 四种第一个截图里的 test.sh的内容:该shell命令的作用是备份上传文件,删除tomcat中原来的项目文件(由于tomcat自动解压缩,所以这里删除原来的文件,等一小会后会自动上传文件并且解压缩)
 #!/bin/bash #传参测试脚本 export LANG="en_US.UTF-8" 
PROJECT=$1 BAK_DIR=/usr/local/autodeploy/bak/$PROJECT 
TEMP_DIR=/usr/local/autodeploy/temp/$PROJECT 
TOMCAT_HOME=/usr/local/tomcat 
if [ -f $TEMP_DIR/$PROJECT.war ]; then 
  #sleep 3 
  if [ -f $TOMCAT_HOME/webapps/$PROJECT.war ]; 
     then echo "===================deleteing old war===================" 
     rm -rf $TOMCAT_HOME/webapps/$PROJECT.war 
     rm -rf $TOMCAT_HOME/webapps/$PROJECT 
 else 
    echo "===================old war not exits===================" 
 fi 
 echo "===================copying new war===================" 
 cp $TEMP_DIR/$PROJECT.war $TOMCAT_HOME/webapps/$PROJECT.war 
 echo "===================baking war===================" 
 mkdir -p $BAK_DIR 
 cp $TOMCAT_HOME/webapps/$PROJECT.war $BAK_DIR/"$PROJECT"_`date +%Y%m%d%H%M%S`.war 
 echo "===================deleteing temp file===================" 
 rm -rf $TEMP_DIR/$PROJECT.war 
 echo "===================finished==========================" 
else 
echo "===================temp file not exits===================" fi