Docker-Jenkins|安装部署全流程

时间:2024-10-20 07:39:01

一、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 \
--env JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m" \
--name docker-jenkins \
--privileged=true \
--restart=on-failure \
-itd \
-p 8080:8080 \
-p 50000:50000 \
-e JENKINS_OPTS='--prefix=/jenkins' \
-e TZ='Asia/Shanghai' \
-e JENKINS_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容器内部获取解锁密码,命令如下
# 进去容器
docker exec -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位置
docker exec -it docker-jenkins /bin/bash
which java

在这里插入图片描述
在这里插入图片描述
配置结果如下,若没有安装Maven可以到官网下载???? Maven历史版本下载地址

# 根据需要下载对应版本
wget /dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.
# 解压
tar -vxf apache-maven-3.6.
# 修改文件名
mv apache-maven-3.6.3 maven
# 将解压文件复制到容器内(jenkins只需要指定maven目录,不需要配置环境变量)
docker cp /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 Filesjar包文件名保持一致
  • DEPLOY_DIR和上面Jenkins ⇢ SSH Publishers ⇢ Rmoate directory目录保持一致
  • 脚本存放目录和Jenkins配置的 ⇢ SSH Publishers ⇢ Exec Command执行目录保持一致
#!/bin/bash

APP_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_DIR

echo $DEPLOY_DIR
echo `date '+%Y-%m-%d %H:%M:%S.%N'` : "service deploy dir in [$DEPLOY_DIR]"

PID=$(ps -ef | grep $APP_NAME | grep -v grep | grep -v sudo | awk '{print $2}')
if [ -z "$PID" ]
then
    nohup $JAVA_HOME/bin/java -Xmx512m -Xms512m -jar -=dev $DEPLOY_DIR/$APP_NAME.jar > $DEPLOY_DIR/log/$(date +'%Y%m%d').log &
else
    kill -9 $PID
    nohup $JAVA_HOME/bin/java -Xmx512m -Xms512m -jar -=dev $DEPLOY_DIR/$APP_NAME.jar > $DEPLOY_DIR/log/$(date +'%Y%m%d').log &
fi

echo `date '+%Y-%m-%d %H:%M:%S.%N'` : "service [$APP_NAME] deploy success"
echo "Build successful"

补充:若是因权限执行失败,需要使用 ⬇️指令给文件或目录添加权限

chmod 777 目录/文件

五、补充

1、增加编译效率修改Maven仓库地址

<!---华为云mirror-->
<mirror>
  <id>huaweicloud</id>
  <mirrorOf>*</mirrorOf>
  <url>/repository/maven/</url>
</mirror>

参考文章:

[1]jenkins部署springboot项目(超详细讲解)./a2285786446/article/details/130981868[EB/OL].
[2]Jenkins-pipeline-Docker 实现CI/:///LZF6F[EB/OL].
[3]Jenkins的简单使用,小白式教程./NmBR6[EB/OL].