运维 - 实践篇(六)- 基础 Jenkins 自动流程搭建

前面我们已经完成了 Gitlab 的搭建,当然,这里有无法通过 SSH 拉取项目的问题缺陷。接下来我们将要通过部署 Jenkins 来完成项目的 Gitlab 提交与自动部署。

这里同样的和 K8S 集群一样,我们换了一个性能较好的服务器,同样的需要配置 Docker 开发环境。

修订时间修订内容备注
2022/02/02完成基础 Jenkins 持续集成环境搭建create
2022/02/05新增 Github webhook 自动构建feature

一、搭建 Jenkins 基础环境

这里我们主要讲述通过 Docker 搭建 Jenkins 的流程

我预先选用了 jenkinsci/blueocean 镜像 参考文档

1、检索 jenkins 镜像,并选取合适的版本
# 检索
$ docker search jenkins
# 拉取
$ docker pull jenkinsci/blueocean
# 创建宿主机本地挂在文件
$ mkdir /srv/jenkins
$ chmod 777 /srv/jenkins
# 运行
$ docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /srv/jenkins:/var/jenkins_home jenkinsci/blueocean

# host 网络模式
docker run -d --name jenkins --network=host -p 8080:8080 -p 50000:50000 -v /srv/jenkins:/var/jenkins_home jenkinsci/blueocean

# 运行 日志
$ docker logs -f -t --tail 1000 jenkins
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

42: e9d78880ac9d4f3eb29218f13c3bc3f0
124: e7cdce7d869f4e01ac6de5fc9e8fa804
2、DashBoard 访问测试

访问地址:http://42.192.222.62:8080/

安装推荐的插件 -> 新手入门插件自动安装

创建管理员用户

Username:root

password:code-fusheng

image-20220203145657256

实例 Jenkins URL 配置

image-20220203145815840

image-20220203145847929

进入主页

image-20220203145910382

二、全局工具配置

点击系统管理 -> 全局工具配置

image-20220203145953922

1、配置 JDK

一般容器内安装了JDK环境,进入 docker 容器,使用 echo $JAVA_HOME 获取 jdk 安装路径。

# 进入 docker 容器 
$ docker exec -it jenkins /bin/bash
# 查看 jdk 安装路径
bash-5.1$ echo $JAVA_HOME
/opt/java/openjdk

image-20220203150312325

2、配置 Maven

指定 name,勾选自动安装,点击 save

image-20220203150623574

3、更新 Maven 配置

image-20220203150729395

image-20220203150837224

点击 install without restart

image-20220203150930646

三、创建工程拉取项目

这里因为各种原因导致 Gitlab SSH 方式的拉取方式无法通过,我们选用 HHTP 方式拉取项目。这个在 Jenkins 中也是允许的。

PS:这里演示先用 Github 中的项目作为参考,我这个 model 项目是开源的。但是不建议部署这个,依赖非常多,要下载很久。

1、创建任务

点击新建任务或者 create a job

image-20220205134355504

输入任务名称(一般用工程名称),选择相应要构建的工程类型,这里我选择的是 Maven 项目。

2、完善任务信息

填写项目 Git 仓库地址

image-20220205135357600

3、编写工程前置预处理脚本

这里我们选择的 maven 项目,对应的根配置就是 pom.xml

# 编译打包命令
$ clean package -Dmaven.test.skip=true -Pprod

image-20220205135752851

4、编写工程发布脚本

image-20220205140119736

Post Steps 脚本

#!/bin/bash

SERVER_NAME=model

# 源 jar 路径,target 目录下的 jar 包
JAR_NAME=model-2.0.0

# target 打包生成 jar 包目录
# 以具体的打包位置为准,可以先构建一次项目,通过日志查看打包的目录
JAR_PATH=/var/jenkins_home/workspace/model/target

# 打包完成之后,把 jar 包移动到运行 jar 包的目录
JAR_WORK_PATH=/var/jenkins_home/workspace/model/target

echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo"得到进程ID: $PID"
echo"结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id" 
done
echo"结束进程完成"

#复制jar包到执行目录_

echo" 复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo"复 制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar

#前台启动
#java -jar $JAR_NAME.jar

#后台启动
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
5、开始构建

image-20220205140528208

查看控制台构建的日志

由于是去 Github 仓库拉取项目,经常会出现超时的问题,可以多尝试几次

image-20220205141756078

6、测试

访问工程开发接口,model 项目我开发了 doc.html 接口文档地址,如果能够正常访问说明服务成功启动了。

model 工程 swagger 地址: http://42.192.222.62:9999/doc.html

四、简单的 Github 提交自动Job构建

1、Jenkins 配置 Github

Hook URL: http://42.192.222.62:8080/github-webhook/

image-20220205143225635

2、Github 配置 webhook

打开 Github 仓库页的 Setting 配置

image-20220205143436416

image-20220205144111188

image-20220205144358843

3、Jenkins 构建触发器

image-20220205144257723

4、测试

本地项目 Push 代码,能够在 Jenkins 中看到自动构建的 Job 任务

image-20220205144730384

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐