jenkins安装已经构建springboot程序
一.准备工作
1.启动虚拟机linux
使用虚拟机启动两个linux系统重点(关闭防火墙,使端口可以访问,线上可以开启指定端口,本地学习不用那么麻烦)
规划:
jenkins:192.168.244.132
java:192.168.244.133
2.都安装好java环境(略)
检查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
填入上面记录的那个密码
选择推荐安装
等待安装即可
创建用户
保存配置
登录
9.配置jenkins
1.配置java
保存时候GIT那块可能出错,先删除那个
2集成git
为了能拉取代码,现在使用root用户在服务器安装git
[root@localhost jdk1.8.0_201]# yum install git -y
使用
[jenkins@localhost jenkins]$ git version查看版本
3.创建凭证
为了能从git服务器拉取代码,肯定需要凭证,这里用用户名密码为例
4.测试
创建一个任务
找到git代码地址
配置地址和凭证
立即构建
查看日志输出
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/workspace/get_code_test
可以看到代码已经拉取过来了,胜利在望
10.安装maven
等待系统重启
服务器安装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
配置maven
是要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>
11.构建maven项目
编辑配置
clean package -U -Dmaven.test.skip=true
保存并构建
构建报错,分析原因是repository目录是root创建的 ,jenkins用户没有权限访问,给他赋权
chown -R jenkins /data/software/repository
再次构建可以看到在下载依赖了
第一次构建要下载的依赖有点多,所以时间较长
看到这个说明构建成功
我们去linux 看看是否生成jar了
[root@localhost target]# cd /home/jenkins/.jenkins/workspace/my_first_maven_project/target
可以看到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/
配置打包后的操作
#!/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.构建项目
构建成功:
查看程序
浏览器访问:http://192.168.244.133:8080/date
程序已经启动
我们修改代码
再次构建程序
再次刷新请求
已经刷新成功