Docker-Jenkins|安装部署全流程

一、Jenkins 简介

什么是Jenkins ?

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

软件项目CI/CD是什么 ?

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

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

集成架构:
Docker-Jenkins|安装部署全流程_第1张图片
基本流程:
Docker-Jenkins|安装部署全流程_第2张图片

二、安装前说明

  本文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

Docker-Jenkins|安装部署全流程_第3张图片

Docker-Jenkins|安装部署全流程_第4张图片
获取解锁密码有两种方式:

  • 上面提到Jenkins容器启动会打印解锁密码
  • 需要进入Jenkins容器内部获取解锁密码,命令如下
# 进去容器
docker exec -it docker-jenkins /bin/bash
# 获取解锁密码
cat /var/jenkins_home/secrets/initialAdminPassword

新手使用“安装推荐的插件”,并创建账户
Docker-Jenkins|安装部署全流程_第5张图片

Docker-Jenkins|安装部署全流程_第6张图片

Docker-Jenkins|安装部署全流程_第7张图片


恭喜你现在Jenkins已经安装好,有经验同学可以直接使用,想进一步了解配置、部署的同学请继续下文


四、Jenkins部署

1、插件下载安装

  • Maven Integration:Maven 构建工具 。
  • Publish Over SSH:整个工具,将来把 Jenkins 打包好的,jar 上传到应用服务器上。
  • Github 服务器。使用gitee也可以下载插件 Gitee,这里主要讲述Github

Docker-Jenkins|安装部署全流程_第8张图片
Docker-Jenkins|安装部署全流程_第9张图片
Docker-Jenkins|安装部署全流程_第10张图片
Docker-Jenkins|安装部署全流程_第11张图片
Docker-Jenkins|安装部署全流程_第12张图片

Docker-Jenkins|安装部署全流程_第13张图片

2、Jenkins全局工具配置

Docker-Jenkins|安装部署全流程_第14张图片

Docker-Jenkins|安装部署全流程_第15张图片

# Jenkins JDK默认位置
/opt/java/openjdk

# 也可以进入容器查看JDK位置
docker exec -it docker-jenkins /bin/bash
which java

Docker-Jenkins|安装部署全流程_第16张图片
Docker-Jenkins|安装部署全流程_第17张图片
配置结果如下,若没有安装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/

Docker-Jenkins|安装部署全流程_第18张图片

3、Jenkins添加服务器

Docker-Jenkins|安装部署全流程_第19张图片
Docker-Jenkins|安装部署全流程_第20张图片

4、Jenkins添加凭证

在这里插入图片描述

Docker-Jenkins|安装部署全流程_第21张图片

Docker-Jenkins|安装部署全流程_第22张图片

Github主页头像 setting Settings Developer Settings Personal access tokens (classic)

Docker-Jenkins|安装部署全流程_第23张图片

Docker-Jenkins|安装部署全流程_第24张图片

5、Jenkins添加项目

测试项目基于SpringBoot

Docker-Jenkins|安装部署全流程_第25张图片

Docker-Jenkins|安装部署全流程_第26张图片

Docker-Jenkins|安装部署全流程_第27张图片

Docker-Jenkins|安装部署全流程_第28张图片

Docker-Jenkins|安装部署全流程_第29张图片
Docker-Jenkins|安装部署全流程_第30张图片
Docker-Jenkins|安装部署全流程_第31张图片
Docker-Jenkins|安装部署全流程_第32张图片
Docker-Jenkins|安装部署全流程_第33张图片

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>
  <id>huaweicloudid>
  <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].

你可能感兴趣的:(Jenkins,docker,jenkins,容器,运维)