赞
踩
安装jenkins,必须先安装jdk。而且jdk的本版必须与jenkins软件的版本对应,且jdk的版本必须为11以上且不能是20版本。
可以查看我之前的文章,这里不再说明(等下放一个链接)。
这里我使用的是finalshell连接的虚拟机
在finalshell中执行命令:yum install fontconfig
https://mirrors.jenkins.io/war/
这里我用的是jdk17,所以我下载的是2.419版本
自己建一个目录拖进来即可
执行命令:
nohup java -jar /usr/app/jenkins.war --httpPort=8777 > /usr/app/jenkins.log 2>&1 &
注意:下面圈住的地方,改为你自己放jenkins.war的绝对路径(全路径)。
http://192.168.145.128:8777 ip改为自己对应的ip
第一次登录时,页面会弹出一个命令,复制到finalshell中就可以获得临时密码。登录后可以在右上角的设置中修改密码。
在finalshell中输入命令:yum -y install git
1. 解压maven压缩包
2. 重命名
3. 配置环境变量 vi /etc/profile
#####MAVEN环境变量#####
export MAVEN_HOME=/usr/app/maven3.9.6
export PATH=$MAVEN_HOME/bin:$PATH
注意这里的路径按照你自己的安装路径写
4. 刷新配置 source /etc/profile
5. 配置maven的本地仓库和远程镜像
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
默认gitee不允许内网访问gitee中的代码
注意:这里如果使用的是服务器而不是虚拟机则可以忽略这个步骤。
在该网址https://natapp.cn/注册一个账号 并购买免费的隧道,并下载客户端
解压后自己创建一个start.bat文件,文件中输入以下内容。然后双击start.bat启动软件。
思考:项目部署的服务器和jenkins所在的服务器要不要是同一台。==不要再同一台服务器==
原因:jenkins所在的服务器需要安装很多软件。jenkins所在的服务器消耗资源非常大。如果项目和jenkins再同一台服务器,势必会造成项目卡。
解决: 把jenkins所在的服务器,打包好的项目复制到部署的服务器。
12.1.1.为什么要设置免密操作:复制到部署项目的服务器,需要每次输入密码,所以这里需要设置免密操作,避免每次输入密码。从而实现自动复制。
12.1.2.在jenkins机器上使用root用户生成秘钥注意此处是root用户
12.1.3生成秘钥的命令:ssh-keygen -t rsa 然后按3次回车
12.1.4.运行后会在当前用户的根目录生成一个.ssh文件夹
12.1.5..ssh文件夹中的文件描述
id_rsa
: 生成的私钥文件
id_rsa.pub
: 生成的公钥文件
12.1.6.接下来需要将公钥导入到认证文件中
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
12.1.7.如果希望ssh公钥生效需满足至少下面两个条件:
.ssh
目录的权限必须是700
.ssh/authorized_keys
文件权限必须是600
12.1.8.给对应文件授权
分别输入下面两个命令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
12.1.9.将authorized_keys
文件拷贝到另一台部署项目的服务器的root用户.ssh目录下
12.1.9.1 在部署项目的服务器上用root用户创建/root/.ssh文件夹。 命令:mkdir -p /root/.ssh
12.1.9.2 在jenkins服务器上将pub公钥文件拷贝到应用服务器的.ssh目录下
命令:scp -p ~/.ssh/id_rsa.pub root@192.168.223.187:/root/.ssh/authorized_keys
注意:这里192.168.223.187改为你自己的部署项目的服务器的ip
12.1.10.在jenkins服务器上进行免密连接测试.
scp -p ~/.ssh/id_rsa.pub root@192.168.223.187:/root/.ssh/authorized_keys
这里根据需要自己改ip和要复制的文件。发现不需要输入密码就能复制成功。
1.
然后放入下面的代码
- #!/bin/bash
-
- echo "部署的目录和项目名称"
- DIR="/data/app"
- projectName="my-boot"
-
- echo "待部署的应用服务器,可多台"
- server_ips="172.16.3.81"
- 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
- sh $DIR/${projectName}/stop.sh
- sh $DIR/${projectName}/start.sh
- EOF
- done
-
- echo "success"
2.在部署项目的服务器的my-boot.jar目录下创建strat.sh和stop.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
stop.sh中代码:
- #!/bin/bash
-
- APP_ID=my-boot
- ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
修改strat.sh和stop.sh权限:
chmod 777 start.sh
chmod 777 stop.sh
到这里当你每次提交新的代码到远程仓库时,jenkins会自动帮你编译打包并部署项目到服务上并运行了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。