zoukankan      html  css  js  c++  java
  • 【原】Jenkins持续集成环境搭建之创建java项目的job【centos6.5 java maven git 项目】

    一、构建一个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:UsersAdministrator.sshid_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直接填写:toolsamdinpom.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
  • 相关阅读:
    IOTest-InputStream-OutputStream
    JSP
    java链表
    区块链
    MySQL常用命令
    jQuery
    javascript
    Nginx
    Linux
    Hive
  • 原文地址:https://www.cnblogs.com/caoheyang911016/p/6637930.html
Copyright © 2011-2022 走看看