Jenkins部署一个Maven项目

1.docker安装Jenkins

  1. 拉取镜像
docker pull jenkins/jenkins:2.222.3-centos
  1. 创建本地数据卷,修改目录权限
mkdir -p /data/jenkins_home/  #可自定义目录

chown -R 1000:1000 /data/jenkins_home/   #修改权限,容器中jenkins用户的uid为1000
  1. 创建docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins:2.222.3-centos
    restart: always
    ports:
      - "8040:8080"
      - "50000:50000"
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/usr/bin/docker:/usr/bin/docker'
      - '/data/jenkins_home:/var/jenkins_home'
      - '/usr/local/maven3:/usr/local/maven3'   #挂载自己的maven
      - '/usr/local/jdk1.8.0_11:/usr/local/jdk1.8.0_11'  #挂载自己的jdk
    environment:
      - TZ=Asia/Shanghai
      - JAVA_OPTS=-Duser.timezone=Asia/Shanghai
  1. 启动Jenkins
# 启动
docker-compose up -d

# 停止
docker-compose stop

# 界面重启
http://192.168.35.21:8040/restart

# 重新加载配置信息
http://192.168.35.21:8040/reload

2.配置Jenkins

  1. 打开Jenkins,地址+端口:http://192.168.35.21:8040
  2. 解锁Jenkins(首次安装)
    将本地密码粘贴到空白框
    密码可通过如下两种命令获取
# 第一种进容器获取
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
# 第二种 挂载目录获取
cat /data/jenkins_home/secrets/initialAdminPassword
  1. 安装插件
    安装推荐插件即可,完成后应该是绿色的
  2. 创建管理员
    自己看着创建admin/admin
  3. 实例配置
    注意IP地址和端口就行了
  4. 配置完成搞定

3.部署Spring Boot应用

  1. 准备环境和项目
  • centos7
  • jdk1.8
  • git
  • maven
  • github
  1. 全局工具配置
    打开系统管理 -> 全局工具配置
    分别配置JDK,Git,Maven的路径,根据你的实际路径来填写保存
    在这里插入图片描述
  2. 安装插件
    需要再手动安装 Maven Integration 和 Publish Over SSH 这两个插件
    打开 系统管理 -> 插件管理,
    选择 可选插件,
    勾选中 Maven Integration 和 Publish Over SSH,
    点击 直接安装
    在安装界面勾选上安装完成后重启 Jenkins
  3. 添加SSH Server
    SSH Server 是用来连接部署服务器的,用于在项目构建完成后将你的应用推送到服务器中并执行相应的脚本。
    打开 系统管理 -> 系统配置,找到 Publish Over SSH 部分,选择新增
    在这里插入图片描述在这里插入图片描述
    勾选上图选项,可配置用户名和密码来连接或者key连接
    配置完成后可点击 Test Configuration 测试连接,出现 succes 连接成功
  4. 服务器的准备工作
  • 创建脚本jenkins-in/deploy.sh
export JAVA_HOME=/usr/local/jdk1.8.0_11
export JRE_HOME=/usr/local/jdk1.8.0_11/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

DATE=$(date +%Y%m%d%H%M)
JENKINS_IN=/root/jenkins-in
DIR=/data/workspace/test
JARFILE=你的jar包名.jar

if [ ! -e $JENKINS_IN/$JARFILE ]; then
    exit 2
fi

if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR

# 如果程序已经在运行,就杀掉进程
pid=`ps -ef | grep $JARFILE | grep -v "grep" | awk '{print $2}'`
if [ "$pid" != "" ]; then
    echo "App is running and pid = $pid, will kill it"
    kill -9 $pid
fi

# 备份旧的应用
mv $JARFILE backup/$JARFILE.$DATE

# 将新的应用移动到工作目录
mv -f $JENKINS_IN/$JARFILE .

# 运行新的应用
nohup java -jar $DIR/$JARFILE > out.log 2>&1 &

# 等待一段时间,然后输出log,检查是否启动成功
if [ $? = 0 ];then
    sleep 30
    tail -n 50 out.log
fi

# 只保留最新的5个备份
cd backup/
ls -lt | awk 'NR>5{print $NF}' | xargs rm -f

4.新建 Maven 任务

1.创建
新建任务 -> 构建一个maven项目
2.源码管理
public:选择Git,直接填写仓库地址
private: 需要配置凭据,用户名/密码或者ssh
我这里环境是docker启动的,所以需要进入容器生成密匙

docker exec -it faa8766a10ea bash
cd ~/.ssh
ssh-keygen
一直回车就行了
cat id_rsa.pub  #把这个公钥配在github的ssh key上
cat id_rsa      #把这个私钥配在Jenkins凭据上,选择SSH Username with private key

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200624160900632.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hrMTAwNjY=,size_16,color_FFFFFF,t_70
3.构建环境
勾选 Add timestamps to the Console Output,代码构建的过程中会将日志打印出来
在这里插入图片描述
4.Build
在这里插入图片描述
5.Post Steps
选择Run only if build succeeds,添加 Post 步骤,选择 Send files or execute commands over SSH
在这里插入图片描述name 选择前面添加的 SSH Server,
Source files 要推送的文件,
Remove prefix 文件路径中要去掉的前缀,
Remote directory 要推送到目标服务器上的哪个目录下,
Exec command 目标服务器上要执行的脚本
6.构建任务
点击 立即构建 可以开始构建任务,控制台可以看到log输出,如果构建失败,在log中会输出原因
在这里插入图片描述

入坑集合

  1. 构建时报错ERROR: for jenkins Cannot start service jenkins: driver failed programming external connectivity on endpoint jenkins
  • docker 服务启动的时候,docker服务会向iptables注册一个链,以便让docker服务管理的containner所暴露的端口之间进行通信
    命令iptables -L可以查看iptables 链
    如果你删除了iptables中的docker链,或者iptables的规则被丢失了(例如重启firewalld),docker就会报如上错误
    只需要重启docker服务即可(我是关闭了firewalld没有重启docker)
  1. 构建时提示git 命令执行失败
  • 注意全局系统配置时的git要和你安装的git路径匹配
  • 查看路径 在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins一个开源的自动化部署工具,它可以帮助我们实现持续集成和自动化部署。而Docker是一种虚拟化技术,可以将应用程序及其依赖打包成一个可移植的容器,实现快速部署和可靠性。 在使用Jenkins进行自动化部署时,可以搭配使用DockerMaven来创建一个完整的自动部署环境。首先,我们需要在Jenkins服务器上安装Docker,然后使用Docker创建一个虚拟容器,容器中包含了我们的项目代码和相关的环境依赖。 接下来,我们可以使用Maven来管理和构建我们的项目。在Jenkins上配置好Maven构建任务后,每当代码有更新或提交时,Jenkins会自动触发构建任务。在构建任务中,Jenkins会从代码仓库中拉取最新的代码,并使用Maven进行编译、测试、打包等操作。 当构建成功后,Jenkins可以将构建好的应用程序打包成一个Docker镜像,然后将镜像推送到Docker仓库。我们可以使用Docker的相关命令将该镜像部署到服务器上,即可实现自动化部署。在部署过程中,Docker会自动解析容器中的依赖,并创建一个虚拟环境来运行我们的应用程序。 通过使用JenkinsDockerMaven,我们可以实现一个完整的自动化部署环境。这样一来,我们只需要在代码有更新时提交到代码仓库,Jenkins就会自动触发构建任务,并将构建好的应用程序部署到服务器上。这大大提高了部署效率,减少了人工操作的错误和风险,同时也提高了系统的可靠性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值