运维 - 实践篇(六)- 基础 Jenkins 自动流程搭建
前面我们已经完成了 Gitlab 的搭建,当然,这里有无法通过 SSH 拉取项目的问题缺陷。接下来我们将要通过部署 Jenkins 来完成项目的 Gitlab 提交与自动部署。这里同样的和 K8S 集群一样,我们换了一个性能较好的服务器,同样的需要配置 Docker 开发环境。
运维 - 实践篇(六)- 基础 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
实例 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/openjdk
2、配置 Maven
指定 name,勾选自动安装,点击 save
3、更新 Maven 配置
点击 install without restart
三、创建工程拉取项目
这里因为各种原因导致 Gitlab SSH 方式的拉取方式无法通过,我们选用 HHTP 方式拉取项目。这个在 Jenkins 中也是允许的。
PS:这里演示先用 Github 中的项目作为参考,我这个 model 项目是开源的。但是不建议部署这个,依赖非常多,要下载很久。
1、创建任务
点击新建任务或者
create a job
输入任务名称(一般用工程名称),选择相应要构建的工程类型,这里我选择的是 Maven 项目。
2、完善任务信息
填写项目 Git 仓库地址
3、编写工程前置预处理脚本
这里我们选择的 maven 项目,对应的根配置就是 pom.xml
# 编译打包命令
$ clean package -Dmaven.test.skip=true -Pprod
4、编写工程发布脚本
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、开始构建
查看控制台构建的日志
由于是去 Github 仓库拉取项目,经常会出现超时的问题,可以多尝试几次
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/
2、Github 配置 webhook
打开 Github 仓库页的 Setting 配置
3、Jenkins 构建触发器
4、测试
本地项目 Push 代码,能够在 Jenkins 中看到自动构建的 Job 任务
更多推荐
所有评论(0)