Linux 服务器 Java环境部署系列(四):搭建jenkins环境、部署项目

引言

  本文主要介绍Linux服务器中常用跳板机jenkins,进行远程编译部署的环境搭建。

系列文档目录

  Linux 服务器 Java环境部署系列(一):安装JDK

  Linux 服务器 Java环境部署系列(二):安装nginx、mysql、tomcat、redis

  Linux 服务器 Java环境部署系列(三):安装git、maven

  Linux 服务器 Java环境部署系列(四):搭建jenkins环境、部署项目

  Linux 服务器 Java环境部署系列(五):搭建RabbitMQ

搭建jenkins

  安装jenkins,采用从远程在线下载安装的形式,完成后还需要对相应配置进行修改。

安装步骤

  • 下载:wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.3-1.1.noarch.rpm
  • 安装:rpm -ivh jenkins-2.176.3-1.1.noarch.rpm
  • 修改配置文件:vim /etc/sysconfig/jenkins
    • jenkins 默认端口为 8080 (建议修改,以免对tomcat等端口产生冲突)
    • user改为root
  • 修改Jenkins的jdk目录:
    • 查看jdk安装位置:whereis jdk
    • 编辑初始化配置文件(添加jdk目录):vim /etc/init.d/jenkins
    • 保存修改:systemctl daemon-reload
  • 启动 jenkins:systemctl start jenkins
  • 查看密码(初次启动时需要):cat /var/lib/jenkins/secrets/initialAdminPassword

jenkins与码云

  jenkins可以和GitHub、Gogs、码云等常用git项目管理网站进行远程部署,本文以码云为例,其他也大同小异。

  • git config --global user.name "[你的用户名]"
  • git config --global user.email "[你的邮箱]"
  • ssh-keygen -t rsa -C "[你的邮箱]" (默认Enter就行)
  • 查看生成的公钥:tail /root/.ssh/id_rsa.pub
  • 查看是否连接成功:ssh git@gitee.com

  • 复制/root/.ssh/id_rsa.pub里的内容,到码云进行配置ssh公钥

  在gitee中依次点击:设置 -> 安全设置 -> ssh公钥,将公钥中的内容复制到公钥文本框中,随便写一个标题即可

系统配置

  访问Jenkins控制台地址,外网服务器使用公有ip:http://服务器ip:8888/,初始密码在:/var/lib/jenkins/secrets/initialAdminPassword 

   选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。 

 

   创建超级管理员账号,可以直接跳过,如果遇到403的情况,返回重新尝试下

 

   系统管理-->配置全局工具配置(如果服务器安装了maven、jdk,去掉自动安装,选择自己服务器安装目录)-->点击保存,我这儿是已经在服务器安装好了的。

   系统管理-->插件管理(安装好需要的插件)

  因为前面推荐安装了部分,再安装几个比较好用的Jenkins插件:Rebuilder、Safe Restart、Publish Over SSH、Maven Integration、Git Parameter 依次点击:系统管理 -> 插件管理 -> 可选插件,输入插件名搜索插件,安装完重新登录下才能生效。

 

 项目部署

  在Jenkins主页点击<创建一个新任务>,然后输入任务名,选择构建一个maven项目,注意:只有安装了Maven Integration插件才有这个选项

 

 

   使用shell自动编译项目成jar方式,根据实际项目情况写

#!/bin/sh
echo [tags] ------------
echo [tags] 开始执行脚本
echo [tags] ------------

export BUILD_ID=dontKillMe
export PROJECT_NAME=springboot-demo
export NAME=demo
export JAR_NAME=demo-$branch

echo [INFO] "----------------------<          DIR          >----------------------"
echo [INFO] "项目Jar包存放路径 --> /data/module/$NAME/$branch"
JAR_PATH=/data/module/$NAME/$branch

[ ! -e $JAR_PATH ] && mkdir -p $JAR_PATH

echo [INFO] "本地项目存放路径 --> /var/lib/jenkins/workspace/$PROJECT_NAME/target"
JENKINS_JAR_PATH=/var/lib/jenkins/workspace/$PROJECT_NAME/target

[ ! -e $JENKINS_JAR_PATH ] && mkdir -p $JENKINS_JAR_PATH

echo [INFO] "备份Jar包存放路径 --> /data/module/$NAME/$branch/lib"
LIB_JAR_PATH=/data/module/$NAME/$branch/lib

[ ! -e $LIB_JAR_PATH ] && mkdir -p $LIB_JAR_PATH

echo [INFO] "日志文件路径 --> /data/module/$NAME/$branch/execute.log"
LOG_PATH=execute.log

echo [INFO] "清空临时目录"
rm -rf /var/lib/jenkins/tmp/$PROJECT_NAME/

TMP_PATH=/var/lib/jenkins/tmp/$PROJECT_NAME/

[ ! -e $TMP_PATH ] && mkdir -p $TMP_PATH

echo [INFO] "将jar包存入临时目录"
scp /var/lib/jenkins/workspace/$PROJECT_NAME/target/*.jar $TMP_PATH

process_id=$(ps -ef | grep demo-$branch | awk '{print $2}')

echo [INFO] "当前进程号 $process_id"
 
echo [INFO] "如果该项目正在运行,就杀死项目进程"
if [[ ! -z "$process_id" ]]
then
    kill -9 $process_id
else
    echo [INFO] "该项目未运行"
fi

cd ${JAR_PATH}

echo [INFO] "备份原有jar包到备份目录"
NOW_TIME=$(date "+%Y%m%d%H%M%S")
echo [INFO] "mv $JAR_NAME.jar $LIB_JAR_PATH/$JAR_NAME-$NOW_TIME.jar"
mv $JAR_NAME.jar $LIB_JAR_PATH/$JAR_NAME-$NOW_TIME.jar

echo [INFO] "本地项目拷贝到路径 scp $JENKINS_JAR_PATH/$JAR_NAME.jar $JAR_PATH"
scp $JENKINS_JAR_PATH/$JAR_NAME.jar $JAR_PATH

nohup java -jar ${JAR_NAME}.jar >$LOG_PATH &
 
echo [tags] ------------
echo [tags] 脚本执行完毕
echo [tags] ------------
 
echo [INFO] "代码部署版本"
echo [INFO] "version : $branch"
shell

  保存后,进到该maven项目下,点击立即构建,构建失败的话可以先清理下工作空间

   查看控制定输出日志

 

 

   然后到阿里云服务器使用netstat -nltp查看是否有已经成功运行的项目,这儿的端口是springboot的application.properties一样的端口。

posted @ 2020-01-14 12:02  JaminHuang  阅读(925)  评论(0编辑  收藏  举报