网站首页 > 技术文章 正文
使用Jenkins完成项目持续集成和部署
1.前提知识
1.1 什么是项目持续集成
1.2 什么是项目的持续部署
1.3 工作流程
2. 安装jenkins
1.5 浏览器访问
2.安装插件
2.1 SSH
2.2 gitee
2.3 安装Generic Webhook Trigger
2.4 配置用户的token
3. 配置
3.1 jdk
3.2 maven
3.3 配置账户
3.4 配置ssh
4.创建任务
第一步
第二步
第三步
第四步
第五步
5.内网穿透
6.配置gitee webhooks
第一步:
第二步:
7.项目
7.1 配置Dockerfile
7.2 提交git
7.3 服务器中
7.4 访问
1.前提知识
1.1 什么是项目持续集成
持续集成 (Continuous integration,简称 CI) 指的是,频繁地(一天多次)将代码集成到主干。
它的好处主要有两个。
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
1.2 什么是项目的持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
持续部署的前提是能自动化完成测试、构建、部署等步骤。
1.3 工作流程
2. 安装jenkins
拉取镜像 - 必须安装 2.459及以上版本. 否则后期无法安装插件
docker pull jenkins/jenkins
配置 jenkins 的数据卷
mkdir /opt/jenkins_home
- 赋值权限
chmod 777 /opt/jenkins_home
启动jenkins
docker run -di --name jenkins -v /opt/jenkins_home/:/var/jenkins_home -p 8080:8080 jenkins/jenkins
查看启动日志
dcoker logs jenkins -f
1.5 浏览器访问
http://192.168.239.114:8080/
输入密码.
2.安装插件
提示:
安装插件最好翻墙或配置国内的镜像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
2.1 SSH
2.2 gitee
2.3 安装Generic Webhook Trigger
作用:
gitee 上的代码改变时, 通过webhooks 调用jenkins作业
如下安装
2.4 配置用户的token
1134825a34e8c687764dcc4d7ab1c732f5
3. 配置
3.1 jdk
进入到jenkins 容器内,使用jenkins自动的jdk
3.2 maven
3.3 配置账户
作用:
gitee jenkins centos 直接相互通讯的凭据
3.4 配置ssh
4.创建任务
第一步
第二步
第三步
第四步
第五步
/opt/jenkins-test/jenkins.sh 的内容 如下
#!/usr/bin/env bash
cd /opt/jenkins_home/workspace/test/target
#cp Dockerfile 到target 下,即 jar 再同一目录
cp ../Dockerfile .
# 定义容器
app_name='test'
# 删除容器
docker rm -f "${app_name}"
# 删除镜像
docker rmi "${app_name}":latest
#创建镜像
docker build -t "${app_name}" .
# 启动容器
docker run -d --name "${app_name}" -p 9999:9999 "${app_name}":latest
echo "${app_name}" + '启动成功...'
5.内网穿透
因为我的服务器在局域网内,要想用gitee调用局域网的jenkins任务,需要借用内网穿透技术
我这里用的是http://natapp.cn 需要注册 ==> 实名认证==> 下载客户端. 具体百度即可
在服务器执行该客户端文件:
6.配置gitee webhooks
第一步:
第二步:
测试:
7.项目
7.1 配置Dockerfile
作用是:
生成镜像
# 使用基础镜像
FROM openjdk:11-jre-slim
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将构建的 JAR 文件拷贝到镜像中
COPY test-0.0.1-SNAPSHOT.jar /app.jar
# 设置容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "/app.jar"]
7.2 提交git
项目改变,提交git.会自动生成一个任务
7.3 服务器中
7.4 访问
真不容易啊..........
- 上一篇: Jenkins的一些技巧
- 下一篇: open 函数
猜你喜欢
- 2024-11-21 Docker搭建Jenkins持续集成环境构建springcloud项目
- 2024-11-21 Jenkins的一些技巧
- 2024-11-21 Jenkins 学习笔记
- 2024-11-21 重启了下 Jenkins,踩到了一个深埋多年的坑
- 2024-11-21 详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
- 2024-11-21 Jenkins 安装部署教程
- 2024-11-21 Docker+Jenkins+Nginx+Spring Boot 自动化部署项目
- 2024-11-21 从零搭建一个基于 ELK 的日志、指标收集与监控系统
- 2024-11-21 手把手教你用 Jenkins 自动部署 SpringBoot
- 2024-11-21 远程触发Jenkins的Pipeline任务
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)