前面我们已经完成了 Gitlab 的搭建,当然,这里有无法通过 SSH 拉取项目的问题缺陷。接下来我们将要通过部署 Jenkins 来完成项目的 Gitlab 提交与自动部署。
这里同样的和 K8S 集群一样,我们换了一个性能较好的服务器,同样的需要配置 Docker 开发环境。
| 修订时间 | 修订内容 | 备注 |
|---|---|---|
| 2022/02/02 | 完成基础 Jenkins 持续集成环境搭建 | create |
| 2022/02/05 | 新增 Github webhook 自动构建 | feature |
1、检索 jenkins 镜像,并选取合适的版本这里我们主要讲述通过 Docker 搭建 Jenkins 的流程
我预先选用了 jenkinsci/blueocean 镜像 参考文档
# 检索 $ 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: e7cdce7d869f4e01ac6de5fc9e8fa8042、DashBoard 访问测试
访问地址:http://42.192.222.62:8080/
安装推荐的插件 -> 新手入门插件自动安装
创建管理员用户
Username:root
password:code-fusheng
实例 Jenkins URL 配置
进入主页
二、全局工具配置1、配置 JDK点击系统管理 -> 全局工具配置
一般容器内安装了JDK环境,进入 docker 容器,使用 echo $JAVA_HOME 获取 jdk 安装路径。
# 进入 docker 容器 $ docker exec -it jenkins /bin/bash # 查看 jdk 安装路径 bash-5.1$ echo $JAVA_HOME /opt/java/openjdk2、配置 Maven
3、更新 Maven 配置指定 name,勾选自动安装,点击 save
三、创建工程拉取项目点击 install without restart
1、创建任务这里因为各种原因导致 Gitlab SSH 方式的拉取方式无法通过,我们选用 HHTP 方式拉取项目。这个在 Jenkins 中也是允许的。
PS:这里演示先用 Github 中的项目作为参考,我这个 model 项目是开源的。但是不建议部署这个,依赖非常多,要下载很久。
点击新建任务或者 create a job
2、完善任务信息输入任务名称(一般用工程名称),选择相应要构建的工程类型,这里我选择的是 Maven 项目。
3、编写工程前置预处理脚本填写项目 Git 仓库地址
这里我们选择的 maven 项目,对应的根配置就是 pom.xml
# 编译打包命令 $ clean package -Dmaven.test.skip=true -Pprod4、编写工程发布脚本
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、开始构建
6、测试查看控制台构建的日志
由于是去 Github 仓库拉取项目,经常会出现超时的问题,可以多尝试几次
访问工程开发接口,model 项目我开发了 doc.html 接口文档地址,如果能够正常访问说明服务成功启动了。
model 工程 swagger 地址: http://42.192.222.62:9999/doc.html
四、简单的 Github 提交自动Job构建 1、Jenkins 配置 GithubHook URL: http://42.192.222.62:8080/github-webhook/
2、Github 配置 webhook3、Jenkins 构建触发器 4、测试打开 Github 仓库页的 Setting 配置
本地项目 Push 代码,能够在 Jenkins 中看到自动构建的 Job 任务



