jenkins安装已经构建springboot程序

一.准备工作

1.启动虚拟机linux

使用虚拟机启动两个linux系统重点(关闭防火墙,使端口可以访问,线上可以开启指定端口,本地学习不用那么麻烦)

规划:

jenkins:192.168.244.132

java:192.168.244.133

2.都安装好java环境(略)

jenkins rancher 发布springboot_jar

检查java是否安装完成
java -version
3.下载好jenkins文件

下载地址http://mirrors.jenkins-ci.org/war/2.281/jenkins.war,可以使用迅雷下载速度快一些

4.配置组和用户,授权目录上传文件
jenkins服务器:
使用root用户创建一个组叫cicd,创建一个用户叫就叫jenkins并且指定到cicd组
[root@localhost ~]# groupadd cicd
[root@localhost ~]# useradd jenkins -g cicd

创建一个jenkins的目录,就放到/data/software/jenkins
[root@localhost ~]# mkdir -p /data/software/jenkins
将这个目录指定给jenkins和cicd组
[root@localhost ~]# chown -R jenkins:cicd /data/software/jenkins

给jenkins指定一个密码:1q23lsc45+  [古诗:一去二三里,山村四五家]

[root@localhost ~]# passwd jenkins
更改用户 jenkins 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。


切换成jenkins用户
[root@localhost ~]# su jenkins

进入工作目录
[jenkins@localhost root]$ cd /data/software/jenkins/

使用rz命令上传下载的jenkins.war


上传完毕使用ll命令查看文件
[jenkins@localhost jenkins]$ ll
总用量 71672
-rw-r--r--. 1 jenkins cicd 73388412 2月  28 16:56 jenkins.war

 

5.启动jenkins服务
启动命令
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war  --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &

查看日志是否启动成功
[jenkins@localhost jenkins]$ tail -f -n  200  jenkins.log

有一串数字,记录下来,这个是密码
e672197178284eceab4ed5a425b51f67
你的和我的不一样,到时候使用自己的

 

6.修改镜像
由于外网下载慢,所以修改国内镜像下载
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/updates

把default.json中updates.jenkins-ci.org/download替换为mirrors.tuna.tsinghua.edu.cn/jenkins
www.google.com替换为www.baidu.com

[jenkins@localhost updates]$ sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

回到上一级目录
[jenkins@localhost .jenkins]$ cd /home/jenkins/.jenkins
修改hudson.model.UpdateCenter.xml文件的站点为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
[jenkins@localhost .jenkins]$ vim hudson.model.UpdateCenter.xml
7.重启项目
[jenkins@localhost .jenkins]$ cd  /data/software/jenkins/
使用jps命令查看进程,kill掉再启动

[jenkins@localhost jenkins]$ kill -9 17148

再次启动
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war  --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &
8.基础jenkins

浏览器访问:http://192.168.244.132:8777

填入上面记录的那个密码

jenkins rancher 发布springboot_java_02

选择推荐安装

jenkins rancher 发布springboot_maven_03

 

等待安装即可

jenkins rancher 发布springboot_jar_04

创建用户

jenkins rancher 发布springboot_maven_05

保存配置

jenkins rancher 发布springboot_java_06

登录

jenkins rancher 发布springboot_jar_07

 

9.配置jenkins
1.配置java

jenkins rancher 发布springboot_java_08

jenkins rancher 发布springboot_maven_09

保存时候GIT那块可能出错,先删除那个

2集成git

 

为了能拉取代码,现在使用root用户在服务器安装git
[root@localhost jdk1.8.0_201]# yum install git -y

使用
[jenkins@localhost jenkins]$ git version查看版本

jenkins rancher 发布springboot_maven_10

 

3.创建凭证

为了能从git服务器拉取代码,肯定需要凭证,这里用用户名密码为例

 

 

jenkins rancher 发布springboot_java_11

 

jenkins rancher 发布springboot_java_12

jenkins rancher 发布springboot_java_13

 

4.测试

jenkins rancher 发布springboot_maven_14

 

 

创建一个任务

jenkins rancher 发布springboot_jar_15

找到git代码地址

jenkins rancher 发布springboot_java_16

配置地址和凭证

jenkins rancher 发布springboot_jar_17

立即构建

jenkins rancher 发布springboot_jar_18

jenkins rancher 发布springboot_java_19

查看日志输出

jenkins rancher 发布springboot_jar_20

[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/workspace/get_code_test

jenkins rancher 发布springboot_jar_21

可以看到代码已经拉取过来了,胜利在望

10.安装maven

jenkins rancher 发布springboot_java_22

 

jenkins rancher 发布springboot_jar_23

 

jenkins rancher 发布springboot_maven_24

等待系统重启

服务器安装maven软件

使用root安装maven
su  root
切换目录
[root@localhost local]# cd /usr/local/
创建目录
[root@localhost local]# mkdir  maven

在amven目录下下载maven软件
[root@localhost maven]#  wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

解压文件
[root@localhost maven]# tar -zxvf apache-maven-3.6.3-bin.tar.gz 
进入目录
[root@localhost maven]# cd  apache-maven-3.6.3

使用pwd获取路径
[root@localhost apache-maven-3.6.3]# pwd
记录路径
/usr/local/maven/apache-maven-3.6.3

修改/etc/profile

[root@localhost apache-maven-3.6.3]# vim  /etc/profile

刷新配置
[root@localhost apache-maven-3.6.3]# source /etc/profile

查看maven
[root@localhost apache-maven-3.6.3]# mvn -version

jenkins rancher 发布springboot_jar_25

 

配置maven

jenkins rancher 发布springboot_jar_26

jenkins rancher 发布springboot_jar_27

是要root用户创建maven仓库
[root@localhost apache-maven-3.6.3]# cd /data/software

[root@localhost software]# mkdir repository

[root@localhost software]# cd  repository/

[root@localhost repository]# pwd
/data/software/repository


配置maven的setting.xml文件
[root@localhost repository]# cd  /usr/local/maven/apache-maven-3.6.3/conf/


[root@localhost conf]# vim settings.xml

  <!--本地仓库-->          
  <localRepository>/data/software/repository</localRepository>
  
  <mirrors>
    <!--阿里云镜像-->
    <mirror>
      <id>aliyun-maven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven mirror</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>

jenkins rancher 发布springboot_java_28

jenkins rancher 发布springboot_java_29

 

11.构建maven项目

jenkins rancher 发布springboot_java_30

 

jenkins rancher 发布springboot_jar_31

 

 

 

编辑配置

jenkins rancher 发布springboot_maven_32

 

 

jenkins rancher 发布springboot_maven_33

clean package -U -Dmaven.test.skip=true

 

保存并构建

构建报错,分析原因是repository目录是root创建的 ,jenkins用户没有权限访问,给他赋权

chown -R jenkins /data/software/repository

再次构建可以看到在下载依赖了

jenkins rancher 发布springboot_java_34

第一次构建要下载的依赖有点多,所以时间较长

jenkins rancher 发布springboot_maven_35

看到这个说明构建成功

我们去linux 看看是否生成jar了

[root@localhost target]# cd /home/jenkins/.jenkins/workspace/my_first_maven_project/target

jenkins rancher 发布springboot_java_36

可以看到jar生成了

12.配置免密码拷贝
使用jenkins用户生成秘钥

[jenkins@localhost ~]$ ssh-keygen -t rsa

三次回车

[jenkins@localhost ~]$ cd  .ssh/
[jenkins@localhost .ssh]$ ll
总用量 8
-rw-------. 1 jenkins cicd 1679 2月  28 20:08 id_rsa
-rw-r--r--. 1 jenkins cicd  411 2月  28 20:08 id_rsa.pub

接下来需要将公钥导入到认证文件中
[jenkins@localhost .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改权限
[jenkins@localhost .ssh]$ chmod 700 ~/.ssh
[jenkins@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys

切换为另一台服务器,配置用户和组以及秘钥

[root@localhost ~]# groupadd java
[root@localhost ~]# useradd java -g java
[root@localhost ~]# mkdir -p /data/software/java
[root@localhost ~]# chown -R java:java /data/software/java
[root@localhost ~]# passwd java
更改用户 java 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

切换用户
[java@localhost root]$ ssh-keygen -t rsa
[java@localhost ~]$ chmod 700 ~/.ssh

 

使用jenkins服务器拷贝授权文件

[jenkins@localhost .ssh]$ scp -p ~/.ssh/id_rsa.pub java@192.168.244.133:/home/java/.ssh/authorized_keys
The authenticity of host '192.168.244.133 (192.168.244.133)' can't be established.
ECDSA key fingerprint is SHA256:ZE3LIJ/6YStL3NcK4pAkS1HfuOlhI5WD0Zh1PzSXo1Q.
ECDSA key fingerprint is MD5:a9:79:0d:3a:e5:a7:9c:16:07:4f:b9:8a:d7:06:05:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.244.133' (ECDSA) to the list of known hosts.
java@192.168.244.133's password: 
id_rsa.pub

 

java 服务器修改文件权限

[java@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys

 

jenkins服务器测试拷贝文件

在用户目录创建文件
[jenkins@localhost ~]$ vim  aaa.txt

[jenkins@localhost ~]$ scp aaa.txt  java@192.168.244.133:/home/java/aaa.txt
aaa.txt

在java服务器查看文件
[java@localhost .ssh]$ cd 
[java@localhost ~]$ ll
总用量 4
-rw-r--r--. 1 java java 5 2月  28 20:35 aaa.txt
[java@localhost ~]$ cat aaa.txt 
aaaa

拷贝完成,我们就可以用来拷贝jar了
13.拷贝jar

我们在java服务端定一个目录放jar

[java@localhost app]$ mkdir -p /data/software/java/app/

配置打包后的操作

jenkins rancher 发布springboot_jar_37

#!/bin/bash

echo "my_first_maven_project"
DIR="/data/software/java/app"
projectName="cicd-demo"

echo "待部署的应用服务器,可多台"
server_ips="192.168.244.133"
for server_ip in ${server_ips[@]}
do

echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no java@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
  mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar 
fi
EOF

echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar java@${server_ip}:/tmp/${projectName}.jar

echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no java@${server_ip} <<EOF
mkdir -p $DIR/${projectName}
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
cd  ${DIR}
sh  stop.sh   ${projectName}
sh  start.sh  $DIR ${projectName}
EOF

done

echo "success"

创建两个sh

start.sh

#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail


APP_DIR=$1
PROJECT_NAME=$2


nohup java  -jar ${APP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.jar > ${PROJECT_NAME}.log &
start_ok=false
if [[ $? = 0 ]];then
        sleep 3
        tail -n 10 ${PROJECT_NAME}.log
        sleep 5
        tail -n 50 ${PROJECT_NAME}.log
fi
aaa=`grep "Started" ${PROJECT_NAME}.log  | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
    echo "app started ok"
    exit 0
else
    echo "app started error"
    exit 1
fi

 

stop.sh

#!/bin/bash

PROJECT_NAME=$1
ps aux | grep ${PROJECT_NAME} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
14.构建项目

 

jenkins rancher 发布springboot_jar_38

jenkins rancher 发布springboot_jar_39

构建成功:

查看程序

浏览器访问:http://192.168.244.133:8080/date

jenkins rancher 发布springboot_maven_40

 

 

程序已经启动

 

 

 

我们修改代码

jenkins rancher 发布springboot_java_41

再次构建程序

jenkins rancher 发布springboot_java_42

 

再次刷新请求

 

jenkins rancher 发布springboot_java_43

已经刷新成功