一、Jenkins 简介
什么是Jenkins ?
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成( CI/CD)。
软件项目CI/CD是什么 ?
CI(Continuous Integration)始终指持续集成 ,CD(Continuous Delivery/Continuous Deployment)是持续交付和/或持续部署,总结为如下三点。
- 持续集成
- 持续交付
- 持续部署
集成架构:
基本流程:
二、安装前说明
本文Jenkins安装主要基于Docker,需要安装Docker环境和Java-11环境,若未安装Docker环境的同学请移步 👇
- Linux安装Docker
- Linux安装JDK
三、jenkins安装/配置(基于Docker)
1、Jenkins的Docker启动脚本
docker run \--envJAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m"\--name docker-jenkins \--privileged=true \--restart=on-failure \-itd\-p8080:8080 \-p50000:50000 \-eJENKINS_OPTS='--prefix=/jenkins'\-eTZ='Asia/Shanghai'\-eJENKINS_ARGS='--prefix=/jenkins'\-v /home/docker/jenkins/jenkins_home:/var/jenkins_home \-v /etc/localtime:/etc/localtime \
jenkins/jenkins:lts-jdk11
容器参数大家可以根据个人需求配置,Jenkins容器工作目录
/home/docker/jenkins/jenkins_home
后面发布也需要用到,启动后访问
IP:8080/jenkins
端口访问Jenkins控制台(
备注:容器启动添加prefix是为了大家配置nginx代理方便,不添加可能会出现静态文件404的问题
)。
2、获取Jenkins控制台登陆密码
# Jenkins容器启动日志 保存密码后面登陆控制台使用。docker logs -f docker-jenkins
获取解锁密码有两种方式:
- 上面提到Jenkins容器启动会打印解锁密码
- 需要进入Jenkins容器内部获取解锁密码,命令如下
# 进去容器dockerexec-it docker-jenkins /bin/bash
# 获取解锁密码cat /var/jenkins_home/secrets/initialAdminPassword
新手使用“安装推荐的插件”,并创建账户
**
恭喜你🎉现在Jenkins已经安装好,有经验同学可以直接使用,想进一步了解配置、部署的同学请继续下文
**
四、Jenkins部署
1、插件下载安装
- Maven Integration:Maven 构建工具 。
- Publish Over SSH:整个工具,将来把 Jenkins 打包好的,jar 上传到应用服务器上。
- Github 服务器。
使用gitee也可以下载插件 Gitee,这里主要讲述Github
2、Jenkins全局工具配置
# Jenkins JDK默认位置
/opt/java/openjdk
# 也可以进入容器查看JDK位置dockerexec-it docker-jenkins /bin/bash
whichjava
配置结果如下,若没有安装Maven可以到官网下载👇
Maven历史版本下载地址
# 根据需要下载对应版本wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压tar-vxf apache-maven-3.6.3-bin.tar.gz
# 修改文件名mv apache-maven-3.6.3 maven
# 将解压文件复制到容器内(jenkins只需要指定maven目录,不需要配置环境变量)dockercp /home/docker/jenkins/maven docker-jenkins:/opt/
3、Jenkins添加服务器
4、Jenkins添加凭证
Github主页头像
⇢
setting Settings
⇢
Developer Settings
⇢
Personal access tokens (classic)
5、Jenkins添加项目
**
测试项目基于SpringBoot
**
6、项目构建脚本
**
留意 :修改👇脚本APP_NAME、DEPLOY_DIR 、JAVA_HOME 三个变量名称或位置
**
APP_NAME
和上面Jenkins ⇢ SSH Publishers ⇢Source Files
jar包文件名保持一致DEPLOY_DIR
和上面Jenkins ⇢ SSH Publishers ⇢Rmoate directory
目录保持一致- 脚本存放目录和Jenkins配置的 ⇢ SSH Publishers ⇢
Exec Command
执行目录保持一致
#!/bin/bashAPP_NAME="bs-admin-1.0-SNAPSHOT"echo`date'+%Y-%m-%d %H:%M:%S.%N'`:"service [$APP_NAME] begin deploy"DEPLOY_DIR=/home/jenkins/bs/admin
JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
cd$DEPLOY_DIRecho$DEPLOY_DIRecho`date'+%Y-%m-%d %H:%M:%S.%N'`:"service deploy dir in [$DEPLOY_DIR]"PID=$(ps-ef|grep $APP_NAME |grep-vgrep|grep-vsudo|awk'{print $2}')if[-z"$PID"]thennohup$JAVA_HOME/bin/java -Xmx512m-Xms512m-jar-Dspring.profiles.active=dev $DEPLOY_DIR/$APP_NAME.jar >$DEPLOY_DIR/log/$(date +'%Y%m%d').log &elsekill-9$PIDnohup$JAVA_HOME/bin/java -Xmx512m-Xms512m-jar-Dspring.profiles.active=dev $DEPLOY_DIR/$APP_NAME.jar >$DEPLOY_DIR/log/$(date +'%Y%m%d').log &fiecho`date'+%Y-%m-%d %H:%M:%S.%N'`:"service [$APP_NAME] deploy success"echo"Build successful"
补充:若是因权限执行失败,需要使用 ⬇️指令给文件或目录添加权限
chmod777 目录/文件
五、补充
1、增加编译效率修改Maven仓库地址
<!---华为云mirror--><mirror><id>huaweicloud</id><mirrorOf>*</mirrorOf><url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror>
参考文章:
[1]jenkins部署springboot项目(超详细讲解).https://blog.csdn.net/a2285786446/article/details/130981868[EB/OL].
[2]Jenkins-pipeline-Docker 实现CI/CD.http://t.csdn.cn/LZF6F[EB/OL].
[3]Jenkins的简单使用,小白式教程.http://t.csdn.cn/NmBR6[EB/OL].
版权归原作者 硬水果糖 所有, 如有侵权,请联系我们删除。