我爱编程

阿里云Ubuntu系统,Jenkins maven打包Sprin

2018-06-21  本文已影响79人  小白小白啦

先说一下没用Jenkins的流程

虽然也没几步,但是每次上传代码都要这样,实在是很繁琐,网上搜索了一下相关工具,花了一天时间配置了一下。使用Jenkins之后,只需要通过idea把代码上传到码云,然后点击一个立即构建按钮即可,比之前要方便。
主要原理就是Jenkins会从码云下载代码,然后自己打包,通过调用脚本代码执行杀死进程,删除文件,启动jar包的相关操作。接下来我会把所有步骤写下了,包括中间遇到的奇怪问题。

安装java

输入java -version查看是否安装java

root@iZwz99ou8xtuhve2z7gdmiZ:~# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

如果提示没有java按照提示进行安装即可
apt install openjdk-8-jre-headless

安装Jenkins

Jenkins安装方式比较多,选择war包安装,感觉这个比较方便。
Jenkins.war下载,
也可以直接在服务器下载,

cd /opt
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

安装maven

cd /opt
wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
 tar zxvf apache-maven-3.5.3-bin.tar.gz
ln -s /opt/apache-maven-3.5.3/bin/mvn mvn
vim /etc/profile

在 /etc/profile 文件最后加上下面代码

export M2_HOME=/opt/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:$PATH
配置.png
source /etc/profile
<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror> 

安装git

apt install git

设置name ,emai

git config --global user.name xxx
git config --global user.email xxx@qq.com

生成ssh公钥

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  

# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key

查看你的 public key,并把他添加到码云(Gitee.com) SSH key添加地址:https://gitee.com/profile/sshkeys)

cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

添加后,在终端(Terminal)中输入

ssh -T git@gitee.com

若返回

Welcome to Gitee.com, yourname!

则证明添加成功

启动jenkin.war

通过java -jar命令启动war包

cd /opt
nohup java -jar jenkins.war  --httpPort=8000 > temp.txt 2>&1 &

提醒 一定要把阿里云服务器开通8000端口,不然外部无法访问

端口开通.png
如果一切顺利,此时通过浏览器即可访问,按照提示找到密码,登录进去。插件安装按照默认即可,后面可以自行添加。
登录.png
选择安装推荐的插件即可
安装插件.png
创建用户.png

全局工具配置

你要做的就是打上勾,jdk和git不用填写任何东西,默认即可


jdk&git配置.png
maven配置.png

创建任务

创建1.png 创建2.png

如果发现没有"构建一个maven项目",需要安装插件Maven Integration plugin

插件安装1.png

在可选插件中搜索即可,然后安装。


插件安装2.png

源码管理,加上git地址即可


创建3.png
maven打包跳过测试 clean install -Dmaven.test.skip=true
创建4.png
最重要的地方到了,shell脚本配置
#!/bin/bash 
cd /opt/scripts
echo "Execute shell Start"
sh stop.sh
sh replace.sh
echo "Execute shell Finish"
chmod 777 /opt/scripts/startup.sh
BUILD_ID=dontKillMe nohup /opt/scripts/startup.sh &
创建5.png

三个脚本都放到/opt/scripts
replace.sh

jar_name=xxx.jar
#!编译好的jar包存放地址
file_path=~/.jenkins/workspace/xxx/target
#!将现有的jar备份后,将新的jar包替换
file="/opt/xxx.jar"
if [ -f "$file" ]
then
mv /opt/xxx.jar /opt/backup/xxx.jar.`date +%Y%m%d%H%M%S`
fi
cp ~/.jenkins/workspace/xxx/target/xxx.jar /opt

记住一定要把上面的xxx换成你自己jar包的名称
start.sh

mod 777 /opt/xxx.jar
echo "执行....."
cd /opt
java -jar xxx.jar --spring.profiles.active=dev 
echo "**********************cmp on  jenkins started****

记住一定要把上面的xxx换成你自己jar包的名称,我的项目有两个配置文件,所以通过--spring.profiles.active=dev 指明配置文件,如果你的springboot只有一个配置文件,就删掉这个参数
stop.sh

#!将应用停止
#!stop.sh
#!/bin/bash
cd /opt
echo "Stopping SpringBoot Application for CMP"
ls
pid=`ps -ef | grep xxx.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
#!kill -9 强制终止
   echo "kill -9 的pid:" $pid
   kill -9 $pid
fi

立即构建

构建.png

如果构建出错,可以查看信息


控制台输出.png

遇到的问题

Maven error :Perhaps you are running on a JRE rather than a JDK?

google解决的,就是再安装一遍,神奇!!!

sudo apt-get install openjdk-8-jdk

如果是win10系统,记得添加JAVA_HOME环境变量


JAVA_HOME.png

遇到的第二个问题,废了几个小时才找到解决办法问题如下

Spring Boot - Cannot determine embedded database driver class for database type NONE

可以看到google答案都是添加注解,但是我都照做了,一直报这个错误。就是idea可以把代码运行起来。并且通过idea打成jar包可以运行,但是我本地通过mvn clean package -Dmaven.test.skip=true命令打包也成功了,但是就是无法运行,最终找到了原因,报这个错误是因为jar包不能找到配置文件,在pom.xml设置就可以了。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

参考

上一篇下一篇

猜你喜欢

热点阅读