Docker-Jenkins|安装部署全流程

一、Jenkins 简介

什么是Jenkins ?

  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成( CI/CD)。

软件项目CI/CD是什么 ?

  CI(Continuous Integration)始终指持续集成 ,CD(Continuous Delivery/Continuous Deployment)是持续交付和/或持续部署,总结为如下三点。

  • 持续集成
  • 持续交付
  • 持续部署

集成架构:
在这里插入图片描述
基本流程:
基本流程

二、安装前说明

  本文Jenkins安装主要基于Docker,需要安装Docker环境和Java-11环境,若未安装Docker环境的同学请移步 👇

三、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 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目录,不需要配置环境变量)
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 -Dspring.profiles.active=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 -Dspring.profiles.active=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>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].

  • 29
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Jenkins是一个持续集成工具,用于自动化构建、测试和部署软件。Docker是一个开源的容器化平台,可以帮助开发人员打包应用程序和其依赖项成为一个容器。Harbor是一个企业级的Docker镜像注册表,可以帮助组织管理和存储Docker镜像。 在自动化部署流程中,Jenkins可以与Docker和Harbor结合使用,实现自动化构建、打包和部署应用程序的流程。具体步骤如下: 首先,开发人员在代码仓库中提交新的代码。Jenkins会定期检测代码仓库的变化,一旦检测到新的代码提交,Jenkins就会触发自动化构建流程。 在构建过程中,Jenkins会使用Docker来创建应用程序的镜像,将应用程序和其依赖项打包成一个可移植的容器。然后,Jenkins会将构建的镜像推送到Harbor中进行存储与管理。 接下来,Jenkins会触发自动化部署流程。在部署过程中,Jenkins会从Harbor中拉取最新的镜像,并将其部署到目标环境中。这可以是测试环境、预发布环境或生产环境,具体取决于组织的部署策略。 在部署完成后,Jenkins可以执行自动化测试流程,验证应用程序在目标环境中的运行情况。如果测试通过,部署流程就会顺利完成。如果测试失败,Jenkins会通知相关人员,并触发回滚流程。 通过整合JenkinsDocker和Harbor,可以实现一个端到端的自动化部署流程,帮助组织提高软件交付的效率和质量。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值