Docker系列之搭建Jenkins持续集成Maven项目

持续集成(Continuous integration,简称CI)指频繁将代码集成到主干,持续集成的目的就是让产品可以快速迭代,同时还能保持高质量,一般包括代码拉取、构建、测试、部署等步骤。Jenkins是一款流行的开源持续集成工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。更多详情请参阅Jenkins官网

1. 安装Jenkins

本文使用docker-compose进行安装,需提前准备好docker和docker compose
新建docker-compose.yml文件,输入以下配置

version: '3.7'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins:lts-jdk11
    restart: unless-stopped
    ports:
      - '8082:8080'
      - '50000:50000'
    volumes:
      - ./jenkins-data:/var/jenkins_home:rw
      - ./jenkins/var/run/docker.sock:/var/run/docker.sock:rw
      - D:\Java\apache-maven-3.6.3:/var/java/maven
      - E:\var\java\repository:/var/java/repository:rw
    networks:
      - gljk
networks:
  gljk:
    driver: bridge

jenkins/jenkins:lts-jdk11镜像已经包含了jdk11,不需要另外安装jdk,maven可以使用宿主机的maven及配置
在docker-compose.yml目录下,执行命令docker-compose up jenkins -d
docker-compose jenkins

2. 配置JDK和Maven环境变量

使用root权限进入jenkins容器实例

docker exec -u 0 -it 容器ID /bin/bash

使用vim打开/etc/profile,如果没有vim命令,可以使用apt-get update和apt-get install vim安装
安装vim
在/etc/profile中加入下面配置

export JAVA_HOME=/opt/java/openjdk
export MAVEN_HOME=/var/java/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

添加环境变量
执行source /etc/profile使其生效
使用java -version和mvn -v查看jdk和maven版本
查看版本信息

3. 登陆

浏览器输入地址:http://localhost:8082
登陆首页
在该文件或Jenkins启动日志或/var/jenkins_home/secrets/initialAdminPassword中找到密码,点击继续
安装插件
选择安装推荐的插件,也可以自行安装需要的插件,选择好适合的插件后,点击安装
安装插件
安装插件
安装插件
等待插件安装完成,进入创建用户界面
创建用户
这里选择使用admin账户,进入实例配置页面
实例配置
点击保存并完成
Jenkins就绪
点击开始使用Jenkins,进入Jenkins首页
Jenkins首页
默认生成的密码较为复杂,可以修改为简单易记的密码,查看默认密码,需要先进入jenkins容器实例,在文件/var/jenkins_home/secrets/initialAdminPassword中
设置
找到Password,输入新密码,点击保存
修改密码
修改密码后,需要重新登陆Jenkins

4. 配置JDK和MAVEN

点击左侧菜单栏管理Jenkins

4.1. 配置全局工具

管理Jenkins
选择全局工具配置
找到JDK配置,配置如下信息
配置JDK
找到MAVEN配置,配置如下信息
配置maven

4.2. 安装maven插件

在管理Jenkins页面选择插件管理
插件管理
搜索maven插件
搜索maven插件
等待插件安装完成
安装maven插件
勾选安装完成后重启Jenkins

5. 配置凭证

点击左侧菜单系统管理,选择凭证管理
权限管理
点击全局---->添加凭据
全局
选择用户名和密码类型,输入用户名、密码、ID、描述
在这里插入图片描述

6. 新建任务

点击左侧菜单新建任务
选择新建任务
填写任务名称,选择maven项目
新建任务
进入maven项目构建页面,选择源码管理
添加git地址
选择Git,在Repository URL中输入项目地址,在Credentials中选择git地址的凭据账号,在Branches to build中选择分支
选择分钟
在Build---->Goals and options中输入clean package -U -Dmaven.test.skip=true,可以跳过单元测试
build
在Post Steps---->Add post-build step中选择执行shell
编写shell
在命令行中,编写如下shell脚本
shell脚本
完整shell脚本如下

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="jenkins-maven"

echo "待部署的应用服务器"
server_ips="xx.xx.xx.xx"
for server_ip in ${server_ips[@]}
do

echo "ssh连接进行备份"
ssh -Tq -o StrictHostKeyChecking=no root@${server_ip} << EOF
mkdir -p $DIR/backup/${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 -o StrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar

echo "ssh连接进行发布"
ssh -q -o StrictHostKeyChecking=no root@${server_ip} << EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
cd ${DIR}/${projectName}
sh stop.sh
sh start.sh
EOF

done

echo "success"

7. 配置SSH连接待部署服务器

回到jenkins容器,使用su jenkins切换到jenkins用户
在根目录下执行命令,一路按Enter即可

ssh-keygen -t rsa

生成密钥
复制.ssh目录下id_rsa.pub公钥为authorized_keys

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

对.ssh目录和authorized_keys文件分别授权700和600

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

同时也对待部署服务器授以相同的权限
将authorized_keys文件拷贝到待部署服务器

scp -p ~/.ssh/id_rsa.pub root@xx.xx.xx.xx:/root/.ssh/authorized_keys

拷贝权限文件到服务器
第一次连接时会输入服务器密码,需要先在待部署服务器根目录下新建.ssh目录,另外为了部署应用需要在服务器根目录下先新建/data/app/jenkins-maven目录,并在该目录下新建start.sh脚本

#!/bin/bash
set -e
set -o pipefail

APP_ID=jenkins-maven
APP_DIR="/data/app"

nohup java -Dspring.profiles.active=dev -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > app_out.log & start_ok=false
if [[ $? = 0 ]];then
	sleep 1
	tail -n 10 app_out.log
	sleep 3
	tail -n 30 app_out.log
fi
aaa=`grep "Started" app_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=jenkins-maven
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2'} | sh

8. 验证

回到Jenkins首页,点击新建任务列表右边三角形符号发布任务,运行完成后,在列表第一列可以查看运行结果,成功为勾,失败为叉
发布
也可以直接点击任务名称
任务
进入任务详情
任务详情
点击左下角构建编号,进入控制台输出日志查看具体部署情况
控制台日志

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值