安装前注意:

        安装jenkins,必须先安装jdk。而且jdk的本版必须与jenkins软件的版本对应,且jdk的版本必须为11以上且不能是20版本。

1.安装并配置jdk

        可以查看我之前的文章,这里不再说明(等下放一个链接)。

2.安装jenkins的依赖的插件

这里我使用的是finalshell连接的虚拟机

在finalshell中执行命令:yum install fontconfig

3.下载与自己安装的jdk版本对应的jenkins

https://mirrors.jenkins.io/war/

这里我用的是jdk17,所以我下载的是2.419版本

4.将下载的jenkins.war拖到finalshell中

自己建一个目录拖进来即可

5.启动jenkins

执行命令:

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

注意:下面圈住的地方,改为你自己放jenkins.war的绝对路径(全路径)。

6.浏览器访问jenkins服务器

http://192.168.145.128:8777    ip改为自己对应的ip

7.登录

第一次登录时,页面会弹出一个命令,复制到finalshell中就可以获得临时密码。登录后可以在右上角的设置中修改密码。

8.jenkins集成jdk

9.jenkins集成git

9.1jenkins所在的服务器安装git

在finalshell中输入命令:yum -y install git

9.2jenkins集成git软件

10.jenkins集成maven

10.1下载Linux版本的Maven

Maven – Download Apache Maven

10.2.安装配置Maven

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>

10.3.jenkins安装maven插件

10.4.集成本地的maven

11.jenkins与gitee绑定

11.1创建git仓库

11.2创建jenkins项目

11.3.使用内网穿透软件

默认gitee不允许内网访问gitee中的代码

注意:这里如果使用的是服务器而不是虚拟机则可以忽略这个步骤。

在该网址https://natapp.cn/注册一个账号 并购买免费的隧道,并下载客户端

11.4.启动natapp穿透软件

解压后自己创建一个start.bat文件,文件中输入以下内容。然后双击start.bat启动软件。

 11.5.配置创好的项目

11.6.修改Gitee的内容

12.jenkins完成自动部署功能

思考:项目部署的服务器和jenkins所在的服务器要不要是同一台。==不要再同一台服务器==

原因:jenkins所在的服务器需要安装很多软件。jenkins所在的服务器消耗资源非常大。如果项目和jenkins再同一台服务器,势必会造成项目卡。

解决: 把jenkins所在的服务器,打包好的项目复制到部署的服务器。

12.1.设置免密操作

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和要复制的文件。发现不需要输入密码就能复制成功。

12.2.实现自动部署项目

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会自动帮你编译打包并部署项目到服务上并运行了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐