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

embedded/2024/9/24 13:35:52/

文章目录

  • 一、资料
    • 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上。

jenkins_64">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

jenkinsspringbootHarbor_106">三、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

jenkins_131">(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.0docker 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_282">附录二:jenkins内置常用环境变量

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


http://www.ppmy.cn/embedded/104373.html

相关文章

【设计模式之原型模式——矩形原型】

原型模式的基本实现 创建⼀个抽象类或接⼝&#xff0c;声明⼀个克隆⽅法 clone 具体原型类去实现接口&#xff0c;重写克隆⽅法 客户端中实例化具体原型类的对象&#xff0c;并调⽤其克隆⽅法来&#xff08;赋给&#xff09;创建新的对象。 什么时候实现原型模式 &#xff1f;…

git-命名规范

目录 压轴&#xff1a;压箱底的东西 博客几乎没人说这个&#xff0c;属于不可外传的东西。过段时间&#xff0c;我也会进行访问限制&#xff0c;毕竟&#xff0c;掌握人越少竞争压力越小&#xff0c;我也怕&#xff0c;请删谨慎保存。 分支命名策略&#xff1a; Git分支命名的…

Golang | Leetcode Golang题解之第388题文件的最长绝对路径

题目&#xff1a; 题解&#xff1a; func lengthLongestPath(input string) (ans int) {n : len(input)level : make([]int, n1)for i : 0; i < n; {// 检测当前文件的深度depth : 1for ; i < n && input[i] \t; i {depth}// 统计当前文件名的长度length, isFi…

系统性能调优

1.监控指标 CPU:如果存在大量的计算,他们会长时间不间断的占用CPU资源,导致其他资源无法争夺到CPU而响应缓慢,从而带来系统性能问题,例如频繁的FullGC,以及多线程造成的上下文频繁的切换,都会导致CPU繁忙,一般情况下CPU使用率<75%比较合适。 内存:Java内存一般是通…

软件单元测试工程模版化

一、简介 在汽车领域混了这么多年也做了不少项目&#xff0c;发现很多公司对软件单元测试和代码覆盖率测试根本不重视&#xff0c;或者开发流程就没有单元测试这个流程。但是有的客户需要评审单元测试这个流程&#xff0c;需要有相关的单元测试报告和代码覆盖率统计的报告。如…

使用 @Configuration 和 @Bean 注解替代 XML 配置文件

在 Spring 框架中&#xff0c;Configuration 和 Bean 注解为 Java 配置提供了强大的替代方案&#xff0c;用以代替传统的 XML 配置文件。这种方式不仅简化了配置过程&#xff0c;还提供了更好的类型安全和代码可读性。本文将详细介绍如何使用这些注解来创建配置类&#xff0c;并…

恢复丢失的数据:iPhone 恢复指南

不小心删除了 iPhone 上的重要数据并意识到它没有备份&#xff1f;您并不孤单。在 iPhone 上恢复永久删除的数据似乎令人生畏&#xff0c;但并非总是不可能。我们将探索各种方法&#xff0c;包括使用专门的软件和备份恢复选项&#xff0c;为您提供恢复丢失数据的最佳机会。 常见…

数据仓库系列10:如何处理维度表中的变化类型?

想象一下,你正在管理一个电商平台的数据仓库。突然,你发现一个重要客户的地址发生了变化。这个简单的变更可能会对你的分析产生巨大影响。如何确保你的数据仓库能够准确地反映这种变化,同时又不丢失历史信息?欢迎来到数据仓库中最具挑战性的问题之一:维度表变化的处理。 目录…