• mac下git+maven+jenkins自动打包发布


      随着springboot+springcloud(dubbo)越来越多人使用,流行的微服务的概念越来越深入人心。分布式部署越来越复杂,给手动发布带来很大工作量。为了方便前期测试和后期线上部署更新,可使用Jenkins作为持续集成工具。

      mac下开发推荐使用homebrew管理软件包,使用方法可查考之前homebrew的安装方法。该步骤下默认maven和git都已安装好。

      1. 下载jenkins

      mac下:推荐使用命令brew install jenkins,或者直接到jenkins官网下载

    brew install jenkins

      linux下:

    1 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    2 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    3 yum install jenkins
    4 sudo service jenkins start //启动jenkins服务

      2. mac下载完后,进入jenkins/libexec目录下可以看到jenkins.war文件,我的路径是/usr/local/homebrew/Cellar/jenkins/2.141/libexec。直接调用 java -jar jenkins.war也能直接运行默认端口好像也是8080。

    java -jar jenkins.war --httpPort=8080

      3. 访问localhost:8080,即可打开管理页面,首次访问需找到initialAdminPassword中的密码填入即可。

      4. 初始化点击intsall suggested plugins安装默认的插件

      5. 创建用户,配置git、maven、jdk等插件信息

      

       1)maven配置

        

      

      2)jdk配置

      

       6. 创建任务,从git里拉取文件

      

      7. 设置构建期间maven命令,可指定多个命令。

      

      8. 编写shell命令,启动jar程序(war文件也是同理)。相关命令一并提供,可按需修改。

      

      stop.sh

    #!/bin/bash
    
    PID=$(ps -ef | grep system.jar | grep -v grep | awk '{ print $2 }')
    if [ -z "$PID" ]
    then
        echo Application is already stopped
    else
        echo kill $PID
        kill $PID
    fi

      replace.sh

    #!/bin/bash
    
    # 先判断文件是否存在,如果存在,则备份
    file="/usr/local/auto_programs/system/system.jar"
    source_path="/Users/chenlili/.jenkins/workspace/happy-mall/system/target"
    echo replace is beginning
    if [ -f "$file" ]
    then
       echo backup is beginning
       cp $file /usr/local/auto_programs/system/backup/system-`date +%Y%m%d%H%M%S`.jar
    fi
    cp $source_path/system.jar $file

      start.sh

    #!/bin/bash
    
    JVM="-Xms100m -Xmx520m"
    Log="/usr/local/auto_programs/system/logs/system-api.log"
    output="/usr/local/auto_programs/system/logs/output"
    
    java $JVM -jar /usr/local/auto_programs/system/system.jar  >$output 2>&1
    tail -f $Log

      这里解释一下为何不在start.sh用nohup方式启动,因为痛过jenkins的shell命令启动此方法不生效。我没看过源码,但我猜测是jenkins的shell进程控制着start.sh的线程,当shell关闭后线程也会关闭。因为在jenkins的shell命令里设置nohup可保证start.sh进入后台执行。同时BUILD_ID=dontKillMe是设置返回值通知jenkins命令已执行,不然jenkins会一直空转不能正常结束任务。

      1)假如大家要分布式部署的话,可通过ssh的方式无密钥访问.

      提供一种简单的方式:jenkins的maven编译完成->执行shell命令->shell里将各个jar包分配到相应的机器上->在执行想要的启动命令。

      2)假如工程项目的根目录下有多个工程,可通过jenkins配置多个任务,在maven里配置编译需要的工程。

      3)jenkins也支持docker

  • 相关阅读:
    设计模式之Command
    UniversalApp
    swift做服务器端开发
    你不知道的函数floor pow round
    swift开发笔记31
    考试路线
    chrome google mozilla firefox bookmarks import export
    Astah Professional安装
    android studio 安装步骤
    vm安装diagram
  • 原文地址:https://www.cnblogs.com/cl2Blogs/p/9633833.html
Copyright © 2020-2023  润新知