zoukankan      html  css  js  c++  java
  • Linux上GitLab+Jenkins实现Vue、Spring Cloud项目的自动部署

    一、 相关插件安装

    1.安装GitLab相关插件

    2.NodeJS插件

    3.Maven 插件

    4.手动安装插件

    网络或者其他原因,可能导致插件安装失败。

    可以采用手动安装的方式。

    • 手动下载jenkins插件:jenkins插件下载地址:http://mirror.xmission.com/jenkins/plugins/ ,一般下载下来后缀为hpi,如下载下来是zip的,记得把后缀修改为hpi

    • 打开jenkins,点击 系统管理——>插件管理——>高级,选择本地文件,点击提交。

    二、Jenkins相关配置

    1.全局工具配置

    系统管理-->全局工具配置:

    将服务器安装的Git、Maven以及Node 起一个名字进行配置。(也可用Jenkins带的“自动安装”,不过网络差的话可能很慢)。

    2.系统配置,设置 GitLab

    系统管理-->系统设置,找到GitLab,填写上名称与GitLab并写上主机地址,点击【添加】来添加证书。

    这里我们选择添加 GitLab API token

    登陆GitLab

    点击右上角头像-->设置-->访问令牌

    输入令牌名称,然后勾选api,点击下方 创建个人访问令牌,复制token,并保存下来。因为下次就不可见了。然后在Jenkins中粘贴

    三、创建vue前端任务

    1.创建任务

    输入任务名称,点选“构建一个自由风格的软件项目”,点击确定。

    2.general

    这里描述就随便写写,丢弃旧的构建可以选上,节省空间。

    3.源码管理

    选择"Git",将项目git连接复制,并点击【添加】添加git用户名/密码;

    输入指定分支。

    4.构建触发器

    这里我们点选,当GitLab提交触发,点击下面的【高级】

    拉到下面创建一个token

    创建完成后,进入GitLab上的前端项目,点击【设置】-->【集成】

    将 上面Build when a change is pushed to GitLab. GitLab webhook URL: 后面跟的项目链接 与 刚刚 生成的token输入,点击【Add webhook】

    添加成功后,可以点选测试,Push events 如果弹出 200 说明测试通过。

    5.构建环境

    构建环境选择node,然后NodeJS Installation 这里下拉选择上面在全局系统配置中设置的node

    6.构建

    构建这里,我们选择shell脚本。

    npm -v
    cnpm install    					// 下载 node moudles
    node build/build.js    				//构建
    tar -zcvf dist.tar.gz ./dist  		//将生成的dist 打成压缩包
    
    mv ./dist.tar.gz /var/www/vue;		//移动到Nginx配置的项目目录下面
     
    cd /var/www/vue;					
    rm -fr ./static			
    tar -zxvf ./dist.tar.gz ./;			//解压 刚才打的dist压缩包	
    mv ./dist/* ./						//删除
    rm -fr ./dist
    rm -fr ./dist.tar.gz;
    

    然后点击保存,就可以了。

    四、创建Sping Cloud 任务

    创建Spring Cloud 跟创建 Vue前端任务类似,只是构建环境可以不选,然后更改构建中的shell。

    首先为每一个服务创建一个通用的脚本,模板如下:

    #spring boot Jar包目录
    APP_NAME=/root/app/springBoot/robotcenter.jar
    #使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh robotcenter.sh [start|stop|restart|status]"
        exit 1
    }
     
    #检查程序是否在运行
    is_exist(){
      pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
      #如果不存在返回1,存在返回0     
      if [ -z "${pid}" ]; then
       return 1
      else
        return 0
      fi
    }
     
    #启动方法
    start(){
      is_exist
      if [ $? -eq 0 ]; then
        echo "${APP_NAME} is already running. pid=${pid}"
      else
      	#这个dontKillMe 是一定要加的,不然jenkins会杀死这个进程,导致服务退出
      	BUILD_ID=dontKillMe
      	#将日志输出到robotcenter.out,自己命名
        nohup java -jar ${APP_NAME}  >robotcenter.out 2>&1 &
      fi
    }
     
    #停止方法
    stop(){
      is_exist
      if [ $? -eq "0" ]; then
        kill -9 $pid
      else
        echo "${APP_NAME} is not running"
      fi  
    }
     
    #输出运行状态
    status(){
      is_exist
      if [ $? -eq "0" ]; then
        echo "${APP_NAME} is running. Pid is ${pid}"
      else
        echo "${APP_NAME} is NOT running."
      fi
    }
     
    #重启
    restart(){
      stop
      sleep 5
      start
    }
     
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
      "start")
        start
        ;;
      "stop")
        stop
        ;;
      "status")
        status
        ;;
      "restart")
        restart
        ;;
      *)
        usage
        ;;
    esac
    

    然后编写构建shell脚本

    #首先关闭所有的服务
    sh /home/shell/eureka.sh stop 
    sh /home/shell/zuul.sh stop
    sh /home/shell/web.sh stop
    #进入jenkins的工作空间 对应的Spring Cloud项目地址
    cd /var/lib/jenkins/workspace/Project/
    # clean install 清除之前的包,并将所有模块 打包
    mvn clean 
    mvn install
    # 进入每个需要部署服务的target目录,将jar包移动到指定目录
    cd /var/lib/jenkins/workspace/Project/Project-server-eureka/
    cd target/
    mv Project-server-eureka-0.0.1-SNAPSHOT.jar /home/Project/
    cd /var/lib/jenkins/workspace/Project/Project-server-zuul/
    cd target/
    mv Project-server-zuul-0.0.1-SNAPSHOT.jar /home/Project/
    cd /var/lib/jenkins/workspace/Project/Project-server-web/
    cd target/
    mv Project-server-web-0.0.1-SNAPSHOT.jar /home/Project/
    #启动每个服务的启动脚本
    sh /home/shell/eureka.sh start
    sh /home/shell/zuul.sh start
    sh /home/shell/web.sh start
    
  • 相关阅读:
    页面状态加载.... JS
    创建windows服务&监控SQL数据运行状态(原)
    为图片添加锚点
    当jquery遇上了json 哇哈哈
    关于SVN源代码管理
    最新最全的ASP.NET学习资源大全
    .NET开发人员必知的八个网站
    关于回车执行(回车触发事件)
    DIV+CSS布局
    优化Linux下的内核TCP参数来提高服务器负载能力
  • 原文地址:https://www.cnblogs.com/nm666/p/12444066.html
Copyright © 2011-2022 走看看