目标:通过jenkins来实现gitee代码的自动部署;
步骤:
1、安装git (使用jenkins插件下载git很慢,这里先安装好,容器挂载)
2、安装maven(使用jenkins插件下载maven很慢,这里先安装好,容器挂载)
3、下载jenkins镜像,启动jenkins容器
4、下载jenkins插件
5、配置从gitee拉取代码到jenkins
6、构建代码,生成jar包
7、将jar包推送到目标服务器部署
1、安装git
git官网下载:https://git-scm.com/
下载安装包,解压到对应路径下 我的路径是 /usr/local/git
#编辑系统变量
vi /etc/profile
#追加配置
export PATH=/usr/local/git/bin:$PATH
#立即生效
source /etc/profile
查看是否生效
::
2、安装maven
maven官网下载:https://maven.apache.org/download.cgi
下载安装包,解压到对应路径下 我的路径是 /usr/local/maven/apache-maven-3.8.5
#编辑系统变量
vi /etc/profile
#追加配置
export M2_HOME=/usr/local/maven/apache-maven-3.8.5
export PATH=$PATH:${JAVA_HOME}/bin:$M2_HOME/bin
#立即生效
source /etc/profile
检查是否配置成功
3、下载jenkins镜像,启动jenkins容器
#拉取jenkins镜像
docker pull jenkins/jenkins:2.344
#启动容器
docker run -d -p 9000:8080 -p 9001:50000 -v /usr/local/jenkins/mount:/var/jenkins_home -v /usr/local/maven/apache-maven-3.8.5:/usr/local/maven -v /usr/local/git/bin/git:/usr/local/git -v /etc/localtime:/etc/localtime --name myjenkin 镜像id
其中: /usr/local/jenkins/mount:/var/jenkins_home 这个挂载地址后面2个地方会用到
参数 | 参数说明 |
--name | 容器名称 |
-p | 9000:8080 左边对应机器的ip:右边对应容器内ip |
-v | /usr/local/jenkins/mount:/var/jenkins_home 左边对应2中配置的服务器路径:右边容器中地址 挂载jenkins工作空间,这里还挂载了git和maven的安装路径 |
查看启动情况:
输入对应的 ip:9000(我8080映射的是9000)访问jenkins
我这边上面启动容器的时候挂载的地址是这个 /usr/local/jenkins/mount:/var/jenkins_home
所以我/usr/local/jenkins/mount/secrets/initialAdminPassword 直接复制这里面的内容;
4、下载jenkins插件
接下来,选择:“安装推荐的插件”;这个安装推荐插件的时间可能会比较久,请耐心等待。
现在咱们】】还需要再安装两个插件: publish over ssh和Maven Integration plugin 同学可以点击: 系统管理->插件管理 -> 可选插件中进行输入安装。如下图所示
如果下载特别慢可通过清华的这个地址https://mirrors.tuna.tsinghua.edu.cn/jenkins
下载对应插件然后上传安装就可以
5、配置从gitte拉取代码到jenkins
系统管理->全局工具配置 配置git全局变量
Path to Git executable这个地址 由于配置的git地址各不相同可以进入容器中查看自己的路径
#进入容器
docker exec -it 容器id /bin/bash
#查看git配置
whereis git
接下来配置密钥
#进入容器
docker exec -it 容器id /bin/bash
#进入这个地址 为什么这个地址 这个地址挂载了 生成的密钥方便操作
cd /var/jenkins_home
#生成密钥
ssh-keygen -m PEM -t rsa -b 2048
其中公钥需要配知道gitee(或github)
将公钥复制到这里 ,标题随便填
新建个任务
6、构建代码,生成jar包
应用 保存
构建该任务(遇错参考下这里:docker部署jenkins遇到常见问题_高山流水11的博客-CSDN博客)
7、讲jar包推送到目标服务器部署
其中SSH Server
系统管理-> 系统配置 SSH
目标服务器的shell代码供参考:
先kill存在的端口,然后启动
#!/bin/bash
source /etc/profile
AppName=ruoyi-admin.jar
AppPort=9500
AppPath=/usr/local/ruoyi
# JVM参数
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms320m -Xmx320m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
#先暂停已有的
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
#重新启动
nohup java -jar $JVM_OPTS $AppPath/$AppName --spring.profiles.active=druid --server.port=$AppPort > $AppPath/run.log 2>&1 &
echo "Start $AppName success..."
至此项目启动成功
部署过程也碰到很多问题,专门梳理了一个篇幅来介绍,可以参考下