当前位置: 首页 > news >正文

Jenkins自动部署CI/CD

环境:windows11 jenkins 2.528.1 Alibaba Cloud Linux 3.2104 LTS 64位

Windows服务器上安装Jenkins

官网: https://www.jenkins.io/ 下载 jenkins.msi
安装时选择本地账号,记住自己安装时输入的账号密码

  • 安装完成后修改 jenkins.xml 的工作目录
<service>节点里新增:
<workingDirectory>D:\ProgramData\Jenkins</workingDirectory>
<env name="JENKINS_HOME" value="D:\ProgramData\Jenkins\.jenkins"/>
<pidfile>D:\ProgramData\Jenkins\jenkins.pid</pidfile>
同时在对应目录创建好D:\ProgramData\Jenkins
  • 重启服务
    win + R 输入:services.msc 找到jenkins重启服务
  • 本地浏览器访问:http://localhost:28080/

Jenkins工具插件配置

在在这里插入图片描述

  • 在Manage Jenkins中配置全局工具
JDK配置GIT配置Maven配置
在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 安装配置 Publish Over SSH

在Manage Jenkins的插件管理中的Available Plugins中搜索 Publish Over SSH 并安装

在任意位置打开 git base 生成SSH的密钥对,注意 -N后面的空字符串不要输入密码,因为jenkins在执行Publish Over SSH时不能自动输入密码,生成之后到对应的位置找到对应的私钥和公钥(.pub)

ssh-keygen -t rsa -b 2048 -f ~/jenkins_key -N ""

在这里插入图片描述
在Manage Jenkins的系统配置找到Publish Over SSH

配置项备注
Passphrase不配置
Path to key不配置这里是指定私钥的位置,我们一般直接手动复制配置在下一项key中
key复制生成的私钥文件全部内容git base使用cat命令查看复制,注意-----BEGIN OPENSSH PRIVATE KEY-----和-----END OPENSSH PRIVATE KEY-----不能少

SSH Servers 里面的 Remote Directory 可以不设置设置之后那么在项目里配置的时候是会把这个路径拼接的,其它的Name、Hostname、Username根据实际情况填写。

然后注意云服务器上配置公钥,这里使用的是哪个账号就用哪个账号登录服务器进行配置
如果是root账号对应的公钥要放在: /root/.ssh/authorized_keys 非root账号放在: /home/.ssh/authorized_keys 注意格式每个公钥单独一行即可。

配置完之后点击jenkins上的Test Configuration 测试是否成功。一般失败的情况是密钥的生成和复制的问题以及root账号禁用ssh

新建一个项目Item Freestyle

在这里插入图片描述

  • 配置源码仓库(在凭证Credentials处右侧点击添加,可以用账号密码也可以用密钥)
    在这里插入图片描述
  • Triggers 触发这里没有配置,计划采用手动点击执行,也可以配置成代码提交后自动部署
  • 构建步骤第一步Maven打包,选择全局配置的maven工具,输入平时使用的打包命令即可
    在这里插入图片描述
  • 构建步骤第二步,使用ssh将jar包推到目标云服务器并执行服务器脚本命令
    SSH Server 选择在Publish Over SSH配置好的服务器就行
Transfers配置项备注
Source filestarget/assistant-0.0.1-SNAPSHOT.jar以工作空间地址参考就行
Remove prefixtarget要去掉的前缀那么传上去之后就是对应的文件名,这里只传了jar包,有的是在代码仓库中写了Dockerfile文件那么也需要在这里传,我这里直接在服务器编辑好了,相当于你在此之前在新增一个ssh上传文件的步骤
Remote directory/usr/app/test对应的远程服务器文件所在位置注意加 / 采用绝对路径,如果在Publish Over SSH插件中配置了Remote directory会把那个路径拼接上,非绝对路径会将文件传到对应的 home或者root文件夹下这个看是否是root账号
Exec commandcd /usr/app/test
sh ./deploy.sh
这里直接cd到执行脚本文件的位置,再执行脚本命令,避免127的错误码

在这里插入图片描述

云服务器上编辑脚本文件

  • Dockerfile 如果你没有通过jenkins上传可以在同级目录创建该文件
vi Dockerfile
# 文件内容
FROM azul/zulu-openjdk:21
EXPOSE 9099
ENV LANG C.UTF-8
ENV LOG_HOME /app/logs
ADD assistant-0.0.1-SNAPSHOT.jar app.jar
HEALTHCHECK --interval=600s --timeout=60s CMD curl --fail --silent http://localhost:9099 || exit 1
ENTRYPOINT ["java","-jar","-Duser.timezone=Asia/Shanghai","/app.jar"]
  • 创建执行脚本文件
IMAGE_NAME="assistant:latest"
CONTAINER_NAME="assistant"# 停止并删除旧容器和镜像(2>dev>null忽略错误信息,让命令静默失败)
docker stop $CONTAINER_NAME 2>dev>null
docker rm $CONTAINER_NAME 2>dev>null
docker rmi $IMAGE_NAME 2>dev>null# 构建新镜像
docker build -f Dockerfile -t $IMAGE_NAME .# 启动容器
docker run -d --name $CONTAINER_NAME -p 9099:9099 $IMAGE_NAME

一切准备就绪首页执行构建并在控制台看到成功的信息

在这里插入图片描述

http://www.dtcms.com/a/577656.html

相关文章:

  • 【unity】PowerVR GE8320系列GPU渲染问题分析
  • 做网站设计需要哪些知识网页游戏排行榜回合制
  • 从理论到实践:深度解析昇腾CANN训练营中的Ascend C编程模型
  • Java TreeMap与HashTable深度解析:有序映射与线程安全映射
  • 什么是大数据,为什么它很重要?
  • asp网站配置伪静态做网站的
  • 顺序表vector--------杨辉三角
  • 阿里云 RDS PostgreSQL 可观测最佳实践
  • JVM堆的管理者——CodeCache
  • 目前哪个网站建设的最好wordpress 模板引入文件
  • Data+AI 时代,对象存储为 AI 应用注入全局动力
  • linux:io基础
  • WSL+openEuler云原生实践:Docker全流程部署与多容器编排深度评测
  • 个人笔记|单臂路由,子接口,VLAN标签
  • 罗湖商城网站设计推荐小程序服务开发公司
  • 赣州网站建设jx25网页开发用到的技术
  • 企业服务在产业平台领域的渗透率现状和发展未来
  • 【P27 回归算法及应用实践】有监督的机器学习、分类与回归、一元线性回归、最小二乘法、多元回归与梯度下降、学习率
  • Spring Boot 如何支持国际化
  • Excel斜线表头怎么做?合并单元格后添加对角线+两侧输入文字,新手也能秒会!
  • ara::core——Adaptive AUTOSAR
  • 大语言模型训推一体机:AI算力革命的“新引擎”,2031年市场规模突破123亿的黄金赛道
  • 百度网站降级的原因计算机一级考试网站怎么做
  • 复数的矩阵表示 | 欧拉恒等式的复数矩阵变换
  • Linux 系统调用在 ARM 上的实现与工作机制
  • 红松小课如何成为激活老年人生活的新引擎?从兴趣学习到价值重塑!
  • 怎么才能去定义自己的生活呢?
  • 嘉兴云建站模板重庆网站备案大厅
  • Java并发实战:ConcurrentHashMap原理与常见面试题
  • 前端FAQ: 在React中,如何优化⼤列表的渲染性能?