zoukankan      html  css  js  c++  java
  • jenkins+gitlab+maven+tomcat实现自动集成、打包、部署

    一、介绍

          持续集成(Continuous Integration,简称CI)是一种软件开发实践,团队开发人员每次都通过自动化的构建(编译、发布、自动化测试)来验证,从而尽早的发现集成错误。持续集成最大的优点是避免了传统模式在集成阶段的除虫会议(bug meeting),其要素包括统一的代码库、自动构建、自动测试、自动部署、频繁提交修改过的代码等。

    二、环境

    Jenkins 自身采用 Java 开发,所以要必须安装 JDK,本文集成的项目基于 Maven 构架,Maven 也必须安装。使用git连接远程仓库gitlab

    centos7 64位  47.92.85.152  4G  安装jdk、maven、git、jenkins

    centos7 64位  47.92.85.153  4G  安装gitlab

    三、安装

    1.jdk安装

    下载jdk8版本
    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    上传到服务器,解压

    tar -zxvf jdk-8u40-linux-i586.tar.gz

    添加环境变量配置

    vi /etc/profile   //进入编辑

    在文件末尾加入以下内容:

    export JAVA_HOME=/usr/local/java8/jdk1.8.0_161
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    完成编辑后让其生效

    source /etc/profile 

    运行命令就可以看到java版本了

    java -version

    2.安装maven

    下载maven版本
    https://maven.apache.org/download.cgi

    上传到服务器,解压

    tar -zxvf  apache-maven-3.6.0-bin.tar.gz

    添加环境变量配置

     vi /etc/profile   //进入编辑

    在文件末尾加入以下内容:

    export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.0
    export MAVEN=$MAVEN_HOME/bin
    export PATH=$MAVEN:$PATH

    完成编辑后让其生效

    source /etc/profile  
    mvn -version  #查看maven版本

    3.tomcat安装配置

    • 下载地址:http://tomcat.apache.org/
    • 解压缩:tar -zxvf apache-tomcat-8.5.tar.gz
    • 进入Tomcat安装目录:/opt/apache-tomcat-7.0.41/bin
    • 启动Tomcat:./startup.sh
    • 关闭Tomcat:./shutdown.sh
    • 查看Tomcat日志:tail -f /opt/apache-tomcat-7.0.41/logs/catalina.out

     4.git安装

    更新系统包到最新

    yum -y update

    安装git

    yum –y install git

    完毕,查看git版本号

    git --version 

    创建一个git用户并赋予密码

    useradd git
    passwd git

     设置用户名和邮箱

    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"

    创建秘钥

    ssh-keygen -t rsa -C "你的邮箱"   #一直回车,密码为空。生成的目录看输出日志创建完成后会有公钥id_rsa.pub(服务器上使用) 和 私钥 id_rsa(客户端使用)

    禁用git用户shell登录(一定要禁用)

    vi /etc/passwd

    将git用户修改为如下(一般在最后一行)git:x:1000:1000::/home/git:/usr/bin/git-shell

    修改sshd配置加权限

     chown -R git:git .ssh

     修改配置,启用ssh公钥认证

    vi /etc/ssh/sshd_config

     修改如下内容:

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

    systemctl restart sshd  #重启ssh生效

    5.gitlab安装

    https://www.cnblogs.com/vyanbin/p/centos7_gitlab.html

    6.Jenkins安装

    下载rpm包
    http://pkg.jenkins-ci.org/redhat/

    使用rpm包安装命令

    rpm -ih jenkins-2.155-1.1.noarch.rpm

    自动安装完成之后:
    /usr/lib/jenkins/jenkins.war WAR包
    /etc/sysconfig/jenkins 配置文件
    /var/lib/jenkins/ 默认的JENKINS_HOME目录
    /var/log/jenkins/jenkins.log Jenkins日志文件

    调整配置文件

    vim /etc/sysconfig/jenkins

    JENKINS_USER="root" ## 原值 "jenkins" 必须修改,否则权限不足
    JENKINS_PORT="8088" ## 原值 "8080" 可以不修改,访问端口号

    启动Jenkins

    sudo systemctl enable jenkins
    sudo systemctl restart jenkins

    开放端口号

    firewall-cmd --zone=public --add-port=8088/tcp --permanent #开放端口
    firewall-cmd --reload  #重启防火墙

    安装JDK后,Jenkins无法启动,需要修改vi /etc/rc.d/init.d/jenkins, 查找,输入/java, 添加新的jre路径
    # Search usable Java. We do this because various reports indicated
    # that /usr/bin/java may not always point to Java >= 1.6
    # see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
    candidates="
    /etc/alternatives/java
    /usr/lib/jvm/java-1.6.0/bin/java
    /usr/lib/jvm/jre-1.6.0/bin/java
    /usr/lib/jvm/java-1.7.0/bin/java
    /usr/lib/jvm/jre-1.7.0/bin/java
    /usr/lib/jvm/java-1.8.0/bin/java
    /usr/lib/jvm/jre-1.8.0/bin/java
    /usr/bin/java
    /data/java/jdk1.8.0_101/bin/java

    访问
    http://47.92.85.152:8088/

    提示输入密码,在/var/lib/jenkins/secrets/initialAdminPassword中, 默认用户为admin

    登录后提示安装插件,点击“推荐的插件”

    需要安装的相关插件

    • Git plugin ## 版本管理 GIT 的插件
    • GitLab Plugin ##gitlab
    • Maven Integration plugin ## 项目构建 Maven 的插件
    • Gradle Plugin ## 项目构建 Gradle 的插件
    • Publish Over SSH ##ssh连接插件
    • 无需重启 Jenkins 插件即生效。如遇失败可重试或离线安装。

    Jenkins配置全局工具

    配置好后,点击保存。

    全局安全配置一般默认即可

    系统设置,主要配置SSH连接服

    配置完成后,可点击test按钮,是否连接成功。

     接下来就可以新建maven项目任务

     配置任务

    需要在这一步,设置Gredentials的秘钥,点击钥匙按钮设置,选择SSH的方式,把服务器上生成的私钥粘贴上去。配置好后,下拉框选择刚配置的连接方式。

     

    触发器,可以设置定时构建。

    每隔5分钟构建一次 H/5 * * * *
    每两小时构建一次 H H/2 * * *
    每天中午12点定时构建一次 H 12 * * *
    每天下午18点定时构建一次 H 18 * * *
    在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
    每两小时45分钟,从上午9:45开始,每天下午3:45结束 45 9-16/2 * * 1-5
    每3小时一次,每个工作日上午9点到下午6点(也许是上午10:38,下午12:38,下午2:38,下午4:38) H H(6-18)/3 * * 1-5

    构建命令设置和构建成功后执行部署命令

    配置完成后,点击保存。就可以测试构建了。

    shell部署命令示例如下

    
    

    #!/bin/bash
    export BUILD_ID=dontKillMe
    source /etc/profile
    echo "删除旧部署目录"
    rm -rf /opt/tomcat/tomcat8_xsl/webapps/xinsilue
    rm -rf /opt/tomcat/tomcat8_xsl/webapps/xinsilue.war
    echo "复制war包到部署目录"
    cp /var/lib/jenkins/workspace/gsd_xsl_test/gsd_xsl.web/target/xinsilue.war /opt/tomcat/tomcat8_xsl/webapps/xinsilue.war
    echo "停止tomcat服务中......"
    tomcat_pid=`ps -ef | grep tomcat8_xsl/ | grep -v grep | awk '{print $2}'`
    if [ -z $tomcat_pid ]; then
    echo "tomcat服务未启动"
    else
    kill -9 $tomcat_pid
    sleep 5
    echo "停止tomcat服务成功"
    fi
    cd /opt/tomcat/tomcat8_xsl/bin/
    ./startup.sh
    echo "tomcat启动中......"
    TomcatServiceCode=0
    while [ "$TomcatServiceCode" != "200" ]; do
    sleep 3
    TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code} http://localhost:8096)
    done
    echo "tomcat启动成功......"

      

    在Jenkins中运行shell脚本经常遇到权限问题,我是给jenkins一个root权限,这样就不会再遇到权限问题了。

    1) vi /etc/sysconfig/jenkins

    2) 找到$JENKINS_USER改为 “root”:

    $JENKINS_USER="root"
    3)然后更改Jenkins home,webroot和日志的所有权:

    chown -R root:root /var/lib/jenins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkins
    4).重新启动Jenkins并检查用户是否已被更改

    service jenkins restart
    这样我们就给jenkins设置了root权限,我们再运行shell脚本就不会提示权限问题了。

    maven构建时,出现下载依赖包失败问题,然后构建失败,可以设置maven包下载位置,设置为国内的,默认是从maven中央库中去下载的

    <!-- 配置阿里云 -->
    <mirror>  
          <id>alimaven</id>  
          <name>aliyun maven</name>  
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
          <mirrorOf>central</mirrorOf>          
        </mirror>
    <!--开源中国镜像仓库-->
    <mirror> 
    <id>CN</id>
    <name>OSChina Central</name>
    <url>http://maven.oschina.net/content/groups/public</url> 
    <mirrorOf>central</mirrorOf>
    </mirror>
  • 相关阅读:
    20172305 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    20172305 2017-2018-2 《程序设计与数据结构》实验四报告
    20172305 2017-2018-2 《程序设计与数据结构》实验三报告
    20172305 《程序设计与数据结构》第十周学习总结
    20172305 《程序设计与数据结构》第九周学习总结
    20172305 结对编程项目-四则运算 第二周 阶段总结
    20172305 《程序设计与数据结构》第八周学习总结
    20172305 结对编程项目-四则运算 第一周 阶段总结
    20172305 2017-2018-2 《程序设计与数据结构》实验二报告
    20172305 《程序设计与数据结构》第七周学习总结
  • 原文地址:https://www.cnblogs.com/vyanbin/p/jenkins.html
Copyright © 2011-2022 走看看