Jenkins安装使用详解,jenkins实现企业级CICD流程

news2024/12/26 2:09:22

文章目录

  • 一、资料
    • 1、官方文档
  • 二、环境准备
    • 1、安装jdk17
    • 2、安装maven
    • 3、安装git
    • 4、安装gitlab
    • 5、准备我们的springboot项目
    • 6、安装jenkins
    • 7、安装docker
    • 8、安装k8s(可选,部署节点)
    • 9、安装Harbor
    • 10、准备带有jdk环境的基础镜像
  • 三、jenkins实现springboot程序打包并提交到Harbor镜像仓库
    • 1、安装插件
    • 2、添加凭据
      • (1)git客户端生成凭据,并在gitlab或者gitee配置
      • (2)给jenkins配置凭据
    • 3、创建流水线
      • (1)新建Item
      • (2)选择自由风格的项目
      • (3)其他配置
      • (4)Build Steps编写shell
    • 4、构建测试
  • 四、docker自动化部署
  • 五、K8s自动化部署
  • 附录一:踩坑
      • (1)(pipeline构建的话)UnapprovedUsageException: script not yet approved for use
  • 附录二:jenkins内置常用环境变量

一、资料

1、官方文档

英文:https://www.jenkins.io/
中文:https://www.jenkins.io/zh/
中文文档:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

二、环境准备

1、安装jdk17

下载地址:https://www.oracle.com/cn/java/technologies/downloads/#java17

mkdir -p /root/jdk
cd /root/jdk
# 下载
https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
# 解压
tar -zxvf jdk-17_linux-x64_bin.tar.gz

2、安装maven

下载地址:https://maven.apache.org/download.cgi

mkdir -p /root/maven
cd /root/maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
tar -zxvf apache-maven-3.9.9-bin.tar.gz

阿里云镜像:

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

3、安装git

# 下载安装
yum install git 
# 配置git
git config --global user.name "cxf"
git config --global user.email "cxf@qq.com"

4、安装gitlab

GitLab私有代码仓库搭建与使用

5、准备我们的springboot项目

@RestController
public class TestController {
    @RequestMapping("/test")
    public String test(){
        return "hello world !";
    }
}

提交到gitlab上。

6、安装jenkins

mkdir -p /root/jenkins
cd /root/jenkins
# 下载
wget https://archives.jenkins.io/war-stable/latest/jenkins.war

# 启动报错,需要先安装字体
# java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null
yum install fontconfig
fc-cache --force

# 后台启动,由于没有设置jdk环境,需要指定全目录
nohup /root/jdk/jdk-17.0.12/bin/java -jar jenkins.war --httpPort=8080 & 
tail -f nohup.out 

# 启动日志会提示密码
#037d94fa43d74107a8d0dd5424e676e8
#This may also be found at: /root/.jenkins/secrets/initialAdminPassword

访问192.168.56.10:8080,提示填写密码,就是启动时日志打印的密码。

点击【安装推荐的插件】,需要等一段时间自动完成。

下载完插件之后,需要创建第一个 管理员用户 我们设置为admin/admin

7、安装docker

centos7安装与卸载docker-简单而详细无坑

8、安装k8s(可选,部署节点)

centos7.9离线安装kubernetes(k8s)1.28版本

9、安装Harbor

docker私有云仓库Harbor部署及使用

10、准备带有jdk环境的基础镜像

centos安装jdk,并提交到Harbor

# 这里我准备好了一个
docker pull registry.cn-hangzhou.aliyuncs.com/cxfpublic/centos:jdk17

三、jenkins实现springboot程序打包并提交到Harbor镜像仓库

1、安装插件

在这里插入图片描述
1、maven(可选)
在这里插入图片描述
2、git参数(下面会用到)
在这里插入图片描述
3、其他可选
gitlab、ssh插件(用于远程访问其他主机)

最后,重启jenkins,点击复选框即可。
在这里插入图片描述

2、添加凭据

(1)git客户端生成凭据,并在gitlab或者gitee配置

# 中间三次enter即可
ssh-keygen
# 查看公钥 私钥文件 id_rsa   公钥文件 id_rsa.pub
ls ~/.ssh/
# 将内容拷贝到gitee或gitlab 一般在个人 - 设置中 ssh公钥
cat  ~/.ssh/id_rsa.pub

(2)给jenkins配置凭据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置好git的用户名和密码即可。

3、创建流水线

(1)新建Item

在这里插入图片描述

(2)选择自由风格的项目

最好别起中文名
在这里插入图片描述

(3)其他配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)Build Steps编写shell

在这里插入图片描述

# maven需要java环境
export JAVA_HOME=/root/jdk/jdk-17.0.12
export harbor=192.168.56.10:90/library
dateTime=$(date '+%Y%m%d%H%M%S')


# maven打包
/root/maven/apache-maven-3.9.9/bin/mvn clean package -Dmaven.test.skip=true
# 生成dockerfile文件
cat > $WORKSPACE/target/Dockerfile << EOF
FROM ${harbor}/centos:jdk17
MAINTAINER cxf
ADD SpringbootDemo-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["/jdk/jdk-17.0.12/bin/java","-jar","/app.jar"]
EXPOSE 8888
EOF
# build
docker build -t ${harbor}/app:1.0 target/.
docker push ${harbor}/app:1.0
docker rmi ${harbor}/app:1.0

4、构建测试

最终会在harbor上上传一个镜像。后续使用docker或者k8s就可以直接拉取镜像使用了。
在这里插入图片描述
在这里插入图片描述

四、docker自动化部署

只需要在服务部署的服务器执行:

docker rm -f app
docker rmi -f 192.168.56.10:90/library/app:1.0

docker pull 192.168.56.10:90/library/app:1.0
docker run -p 8888:8888 --name app -d 192.168.56.10:90/library/app:1.0

五、K8s自动化部署

在这里插入图片描述

脚本更新为:

# maven需要java环境
export JAVA_HOME=/root/jdk/jdk-17.0.12
export harbor=192.168.56.10:90/library
dateTime=$(date '+%Y%m%d%H%M%S')


# maven打包
/root/maven/apache-maven-3.9.9/bin/mvn clean package -Dmaven.test.skip=true
# 生成dockerfile文件
cat > $WORKSPACE/target/Dockerfile << EOF
FROM ${harbor}/centos:jdk17
MAINTAINER cxf
ADD SpringbootDemo-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["/jdk/jdk-17.0.12/bin/java","-jar","/app.jar"]
EXPOSE 8888
EOF
# build
docker build -t ${harbor}/app:${dateTime} target/.
docker push ${harbor}/app:${dateTime}
docker rmi ${harbor}/app:${dateTime}

curl -X PUT \
    -H "content-type: application/json" \
    -H "Cookie: KuboardUsername=admin; KuboardAccessKey=fxzcp5mk3pz4.pnjtmz6jjcmnbymaaidyjkffrpriy8pc" \
    -d '{"kind":"deployments","namespace":"app","name":"apptest","images":{"192.168.56.10:90/library/app":"192.168.56.10:90/library/app:'${dateTime}'"}}' \
    "http://192.168.56.1:30080/kuboard-api/cluster/default/kind/CICDApi/admin/resource/updateImageTag"

附录一:踩坑

(1)(pipeline构建的话)UnapprovedUsageException: script not yet approved for use

在这里插入图片描述
新版本改完流水线之后,需要:

在这里插入图片描述
在这里插入图片描述

附录二:jenkins内置常用环境变量

https://blog.csdn.net/ethnicitybeta/article/details/141425739

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

禁止文件外发 | 如何禁止员工外发文件?严守企业机密,禁止员工外发敏感文件!

近期&#xff0c;我们注意到一些敏感项目资料有外泄的风险&#xff0c;这对公司的核心竞争力构成了严重威胁&#xff01; 我们必须立即采取行动&#xff0c;严守企业机密&#xff0c;确保每一份文件都安全无虞。 从今天起&#xff0c;我们要全面升级信息安全措施&#xff0c;…

Java基础(5)- Java代码笔记2

目录 一、键盘录入_Scanner 1.输入&#xff1a;导包 -> 创建对象 -> 调用方法 2.next和nextLine区别 二、Random随机数 1.生成随机数 2.在指定范围内随机生成一个数 三、Switch语句 四、一维数组 1.数组定义 2.获取数组长度 3.遍历数组 3.输出数组 4.数组常见…

[Backbone]CAS-ViT: Convolutional Additive Self-attention Vision Transformers

1. BaseInfo TitleCAS-ViT: Convolutional Additive Self-attention Vision Transformers for Efficient Mobile ApplicationsAdresshttps://arxiv.org/pdf/2408.03703Journal/Time202408Author清华Codehttps://github.com/Tianfang-Zhang/CAS-ViTRead20240829TableVisonTrans…

【健康问答】揭秘五大‘天然降压果‘,高血压患者常吃,血压稳稳降!-曹启富医生

曹医生&#xff0c;听说有些水果对高血压患者有特别的益处&#xff0c;能帮助降低血压&#xff0c;是真的吗&#xff1f; 曹医生说&#xff1a;确实如此。在日常饮食中&#xff0c;合理摄入一些富含特定营养素的水果&#xff0c;对于辅助控制高血压有着积极的作用。今天&#…

苹果手机系统崩溃了怎么办?详细修复指南助你快速恢复

苹果手机以其卓越的性能和稳定的系统赢得了众多用户的青睐&#xff0c;但偶尔也会出现系统崩溃的情况&#xff0c;让人措手不及。当面对苹果手机系统崩溃时&#xff0c;不必过于担心&#xff0c;本文将为你提供一套详细的修复指南&#xff0c;帮助你快速恢复手机的正常使用。 …

AI 网关零代码解决 AI 幻觉问题

作者&#xff1a;邢云阳&#xff0c;Higress Contributor 前言 什么是 AI Agent 随着大模型技术的快速发展&#xff0c;越来越多的公司在实际业务中落地了大模型应用。但是人们逐渐发现了大模型能力的不足。例如&#xff1a;由于大模型的训练数据是有限的&#xff0c;因此一…

身体发出的“高压”警报,曹启富医生教你识别高血压症状

高血压&#xff0c;这一慢性“隐形杀手”&#xff0c;正悄然影响着越来越多人的健康。随着生活节奏的加快和不良生活习惯的积累&#xff0c;其发病率逐年攀升&#xff0c;成为威胁人类健康的重要疾病之一。今天&#xff0c;我们有幸邀请到心脑血管科专家曹启富医生&#xff0c;…

摩博会15天倒计时!ONEOS 恒石智能强强联手,即将携多款MODEL系列芯片打造的智能仪表璀璨亮相

随着2024年第二十二届中国国际摩托车博览会&#xff08;摩博会&#xff09;的临近&#xff0c;国内领先的操作系统提供商ONEOS与智能硬件领域的佼佼者恒石智能宣布强强合作&#xff0c;将于9月13日至16日在重庆国家会展中心共同揭开多款MODEL系列芯片驱动的彩屏仪表的神秘面纱。…

JavaWeb - Vue项目

创建 命令行 vue create project 图形化界面 vue ui 目录结构 启动 命令行 npm run serve 端口配置 Vue的组件文件以.vue结尾 每个组件有三个部分组成&#xff1a; <template>&#xff1a;模板部分&#xff0c;由它生成HTML代码<script>&#xff1a;控制…

揭秘SQL注入漏洞:为何它成为攻击者的首选?

自Web应用程序开始广泛使用数据库以来&#xff0c;SQL注入漏洞便因其隐蔽性强、潜在危害巨大以及实施门槛相对较低等特性&#xff0c;成为了网络攻击者频繁利用的安全弱点之一。尽管这一漏洞已经存在多年&#xff0c;它仍然是企业组织在数字化转型过程中面临的最为普遍且危险的…

vue2项目 预渲染 Unable to prerender all routes 错误排查与解决方案

前言 今天在做我的Vue2项目的SEO优化时&#xff0c;我采用了prerender-spa-plugin与vue-meta-info的一套官网前端SEO预渲染方案。 但是&#xff0c;在打包时&#xff0c;报错Unable to prerender all routes。尝试了很多种网上方案&#xff0c;都没有成功&#xff0c;最后从源…

用代码和android studio创建flutter项目的区别差异

用代码创建的项目&#xff0c;在lib目录下&#xff0c;不会出现dictory文件夹&#xff0c;操作起来有些不便。

智慧灯塔,照亮企业AI Agent实施明路

AI Agent是能够感知环境&#xff0c;基于目标进行决策并执行动作的智能化应用。随着大模型能力增强以及RAG等技术的成熟&#xff0c;AI Agent的能力得到了质的飞跃。这些模型赋予了AI Agent更接近人类的思维能力&#xff0c;再联动各类工具和组件&#xff0c;使得AI Agent在处理…

虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇)

本文已首发于&#xff1a;秋码记录 我们已然在上一篇讲解了如何快速的搭建一个Linux虚拟机&#xff0c;通过vagrant命令化工具&#xff0c;我们很方便的构筑了虚拟机&#xff0c;那么&#xff0c;我们所搭建出来的Linux系统主要是为了调试产品&#xff0c;以便产品在部署生产环…

电路笔记(PCB): kicad freerouting自动布线

安装插件 使用自动布线 会自动运行&#xff0c;等待布线完成即可。也可以布到一定程度&#xff0c;单击界面&#xff0c;切换到手动布线。 CG 一个替代的 freerouting 插件 https://forum.kicad.info/t/an-alternative-freerouting-plugin/52736/3

微信视频号的小视频怎么保存?视频号下载助手最实在的下载教程

最近一些朋友在私信问我视频号的视频怎么用下载助手保存到手机相册呢&#xff1f;虽说网络工具很多&#xff0c;但这个工具算是最稳定的工具之一。 软件介绍 工具名称&#xff1a;视频下载助手 工具扩展&#xff1a;视频号下载助手还拥有多种名称如&#xff1a;视频下载小助…

【开端】基于nginx部署的具有网关的web日志分析

一、绪论 基于nginx部署的具有网关的web日志分析&#xff0c;我们可以分析的日志有nginx的access.log &#xff0c;网关的日志和应用的日志 二、日志分析 1、nginx日志 参数 说明 示例 $remote_addr 客户端地址 172.17.0.1 $remote_user 客户端用户名称 -- $time_lo…

在 CentOS 7 上安装 LNMP 环境:MySQL 8.0、PHP 8.3 和 ThinkPHP 8.0

在 CentOS 7 上安装 LNMP 环境&#xff0c;并配置 MySQL 8.0、PHP 8.3 以及 ThinkPHP 8.0&#xff0c;能够为你的 web 应用程序提供一个强大的开发和运行环境。下面是详细的安装步骤&#xff1a; --- ## 在 CentOS 7 上安装 LNMP 环境&#xff1a;MySQL 8.0、PHP 8.3 和 Thin…

鸿蒙( Beta5版)开发实战:基于AVCodecKit【音视频解码】

1&#xff1a;场景描述 场景&#xff1a;基于VideoCoder的音视频解码及二次处理播放。 首先导入选择器picker模块&#xff0c;使用PhotoViewPicker方法拉起图库选择视频文件&#xff0c;将视频文件传递到native侧使用Demuxer解封装器进行解封装&#xff0c;再使用OH_VideoDec…

83、 项目的发布和容器的重启策略

0、强制删除 [rootmaster01 ~]# kubectl run --imagenginx:1.22 nginx1 pod/nginx1 created [rootmaster01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx1 0/1 ContainerCreating 0 1s [rootmaster01 ~]# kubectl delete…