Jenkins

目录

1.正文

2.什么是Jenkins

3.为什么要使用Jenkins

4.如何安装Jenkins

5.Jenkins集成JDK

6.Jenkins集成git

7.Jenkins集成maven

8.Jenkins自动拉取gitee的代码并编译打包

9.完成自动化部署


1.正文

what where when how

 1. 什么是Jenkins?
 2. 为什么使用Jenkins?
 3. 如何使用Jenkins?

2.什么是Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于 监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以 进行(持续集成)

3.为什么要使用Jenkins

自动拉取代码,编译,打包,部署

4.如何安装Jenkins

4.1下载Jenkins的安装包

Index of /war-stable/2.164.1 (注意不要下载过高版本,否则jdk8不支持)

4.2把该文件放到linux系统并运行

注意:安装JDK

 nohup java -jar /usr/local/jenkins.war --httpPort=8777 > /usr/local/jenkins.log 2>&1 &

nohup:当服务器休眠时,该软件还在运行

java -jar:执行war或jar文件

--httpPort:http的端口号

&:后台运行

4.3访问Jenkins

http://192.168.1.35:8777

使用cat命令查看密码

cat /root/.jenkins/secrets/initialAdminPassword

 ×表示安装失败 确认网络之后重试

4.4修改密码

5.Jenkins集成JDK

因为项目通过jenkins从gitee拉取后需要编译。---javac. 所以 jenkins需要集成jdk

(1)Jenkins所在的服务器安装JDK

(2)集成JDK

6.Jenkins集成git

因为jenkins需要从远程仓库拉取代码 所以需要集成git

(1)在jenkins所在的服务器安装

git yum install -y git

(2)jenkins集成安装的git

(3)在gittee创建远程仓库

(4)在Jenkins中创建任务

 maven需要添加maven插件,参考7.集成maven

拉取编译项目

linux查看

cd /root/.jenkins/workspqce/任务名称/target

7.Jenkins集成maven

我们现在很多项目都是maven的项目架构,所以我们jenkins从远程仓 库拉取的代码必须有maven管理依赖jar包

(1)jenkins所在的服务器安装maven并解压

(2)配置环境变量

vi /etc/profile

source /etc/profile

mvn -version

(3) 修改settings

配置本地仓库

(4) Jenkins配置maven

(5) 安装maven插件

8.Jenkins自动拉取gitee的代码并编译打包

(1) 安装插件gitee到Jenkins

(2) 修改任务项

(3) 启动natapp

gitee默认不允许内网访问,需配置内网穿透,每次重启natapp需要重新配置URL

NATAPP-内网穿透 基于ngrok的国内高速内网映射工具​​​​​​

(4) 修改gitee远程仓库

URL: http://192.168.1.35:8777/gitee-project/funian-jenkins-test

👇

URL: http://yxn7p5.natappfree.cc/gitee-project/funian-jenkins-test

(5) 测试: 修改idea中的代码并提交到gitee上,会自动触发jenkins---拉取--编译---打包

9.完成自动化部署

思考: 我们的项目和jenkins是不是都在一台服务器上。 因为jenkins它所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果这时项目也部署到当作jenkins所在的服务器,势必会导致项目在后期运行时由于资源不够,而导致无法运行。 所以我们的项目需要单独再开一个服务器运行。

思考: jenkins打包好的项目jar在自己所在的服务器,而项目运行需要在其他服务器。需要把jenkins上打包好的jar复制到其他服务器。cp只能在本机进行复制。 scp 远程复制。

scp demo001.jar root@192.168.1.135:/

scp远程复制到另一台服务器的命令

demo001.jar需要传输的文件名

root@远程服务器的ip:/远程服务器的目录

这时远程传输文件时需要输入密码,由于后期需要jenkins软件帮你完成远程的复制功能。所以我们需要设置167这台服务免密操作。

9.1 设置免密操作

(1) 在Jenkins所在的服务器生成密钥和私钥

 ssh-keygen -t rsa --一直回车

(2) 接下来需要将公钥导入到认证文件中

 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(3) 如果希望ssh公钥生效需满足至少下面两个条件:

  • .ssh目录的权限必须是700 r4 w2 x1

  • .ssh/authorized_keys文件权限必须是600

给文件授权-->

 chmod 700 ~/.ssh
 chmod 600 ~/.ssh/authorized_keys

authorized_keys文件拷贝到另一台应用服务器的root用户.ssh目录下

 # 在应用服务器(192.168.223.167)上用root用户创建/root/.ssh文件夹  mkdir -p /root/.ssh
 ​
 # 在jenkins服务器(192.168.223.166)上将pub公钥文件拷贝到应用服务器的.ssh目录下
 ​
 scp -p ~/.ssh/id_rsa.pub root@192.168.1.135:/root/.ssh/authorized_keys

测试:

从35往135远程复制文件无需输入密码

9.2 如何自动把jenkins服务器的jar复制到应用服务器上。

 
#!/bin/bash
 ​
 echo "部署的目录和项目名称"
 DIR="/data/app"
 projectName="my-boot"
 ​
 echo "待部署的应用服务器,可多台"
 server_ips="192.168.1.135"
 for server_ip in ${server_ips[@]}
 do
 ​
 echo "ssh连接进行备份操作"
 ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
 mkdir -p $DIR/backup/${projectName}
 mkdir -p $DIR/${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 root@${server_ip}:/tmp/${projectName}.jar
 ​
 echo "ssh远程连接进行发布操作"
 ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
 mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
 ​
 EOF
 ​
 done
 ​
 echo "success"

把上面的shell脚本粘贴到下面

135如何自动启动jar项目

创建一个启动脚本

(1) 编写项目的启动脚本

 touch start.sh
 vi start.sh 
 把下面的内容放入start.sh中
 #!/bin/bash
 set -e #任何命令出错就退出
 set -o pipefail
 ​
 APP_ID=my-boot
 APP_DIR="/data/app"
 ​
 nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
 start_ok=false
 if [[ $? = 0 ]];then
         sleep 3
         tail -n 10 release_out.log
         sleep 5
         tail -n 50 release_out.log
 fi
 aaa=`grep "Started" release_out.log | awk '{print $1}'`
 if [[ -n "${aaa}" ]];then
     echo "Application started ok"
     exit 0
 else
     echo "Application started error"
     exit 1
 fi

修改权限:

(2) 编写项目的终止脚本

 touch stop.sh
 vi stop.sh
 把下面的内容放入stop.sh中
 #!/bin/bash
 ​
 APP_ID=my-boot
 ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

修改权限:

(3) 修改Jenkins的权限

Jenkins完成自动拉取,编译,打包,部署

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值