jenkins(docker)安装及应用

news2025/3/16 23:03:48

jenkins

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

CI/CD

CI

CI(Continuous Integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。。

image-20231108100010503

CD

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

image-20231108100239312

配置maven(linux)

创建maven文件

在/usr/local/software/下创建maven文件夹

mkdir maven

上传maven解压后的程序

我使用maven3.6.3版本,并创建子文件夹maven-repository存储依赖

[root@localhost apache-maven-3.6.3]# ll
总用量 36
drwxr-xr-x. 2 root root    97 119 10:08 bin
drwxr-xr-x. 2 root root    76 119 10:08 boot
drwxr-xr-x. 3 root root    92 119 10:10 conf
drwxr-xr-x. 4 root root  4096 119 10:08 lib
-rw-r--r--. 1 root root 17504 119 10:08 LICENSE
drwxr-xr-x. 2 root root     6 119 15:41 maven-repository
-rw-r--r--. 1 root root  5141 119 10:08 NOTICE
-rw-r--r--. 1 root root  2612 119 10:08 README.txt

配置settings.xml

进入/usr/local/software/maven/apache-maven-3.6.3/conf 修改settings.xml。 修改存储依赖的位置。

<localRepository>../maven-repository</localRepository>

image-20231109154355066

配置maven环境

编辑/etc/profile文件

M2_HOME=/usr/local/software/maven/apache-maven-3.6.3
export PATH=$PATH:${M2_HOME}/bin

让编辑生效

source /etc/profile

测试配置是否生效

mvn -version

[root@localhost conf]# mvn -version
-bash: /usr/local/software/apache-maven-3.6.3/bin/mvn: 权限不够

解决方案: chmod a+x /usr/local/software/apache-maven-3.6.3/bin/mvn

[root@localhost conf]# chmod a+x /usr/local/software/apache-maven-3.6.3/bin/mvn
[root@localhost apache-maven-3.6.3]# mvn -version
    
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/software/maven/apache-maven-3.6.3
Java version: 1.8.0_341, vendor: Oracle Corporation, runtime: /usr/local/software/jdk/jdk1.8.0_341/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.99.1.el7.x86_64", arch: "amd64", family: "unix"

jenkins安装(docker)配置

安装jenkins

查询jenkins

查询jenkins

docker search jenkinsci/blueocean

image-20231108100811072

下载 jenkins镜像
docker pull jenkinsci/blueocean

image-20231108101121093

创建挂载文件jenkins

在jenkins文件夹中创建 data和jenkins_home

在jekins_home下创建docker.sock文件,并授权777

[root@localhost software]# mkdir jenkins
[root@localhost jenkins]# mkdir data jenkins_home
[root@localhost jenkins]# ls
data  jenkins_home
[root@localhost jenkins]# cd jenkins_home/
[root@localhost jenkins_home]# touch docker.sock
[root@localhost jenkins_home]# chmod 777 docker.sock 
[root@localhost jenkins_home]# tree
.
└── docker.sock
创建运行运行容器
docker run -it \
-u root \
--name jenkins \
--privileged \
-p 9055:8080 \
-p 50000:50000 \
--network wn_docker_net \
--ip 172.18.12.60 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/software/jenkins/data:/var/jenkins_home \
-v /usr/local/software/jenkins/jenkins_home/docker.sock:/var/run/docker.sock \
-v /usr/local/software/apache-maven-3.6.3:/usr/local/maven \
-d jenkinsci/blueocean

image-20231108142959702

开放8087,50000端口
[root@localhost jenkins]# firewall-cmd --zone=public --add-port=8087/tcp --permanent 
success
[root@localhost jenkins]# firewall-cmd --zone=public --add-port=50000/tcp --permanent 
success
[root@localhost jenkins]# firewall-cmd --reload 
success

初次访问

访问管理页面

输入请求地址:http://192.168.201.75:8087

image-20231108143541342

查询jenkins的初始密码

data文件夹映射容器的 /home/jenkins_home

进入secrets文件夹,显示initialAdminPassword。

image-20231108145119118

输入密码

image-20231108145155671

安装插件

image-20231108145326094

image-20231108145356497

image-20231108145451785

点击继续

创建第一个管理员用户

image-20231109140225123

配置实例

image-20231108150138670

重启应用

image-20231108150214874

后台手动重启

[root@localhost jenkins]# docker restart jenkins 
登录系统

image-20231108153144059

image-20231108155052646

配置系统

升级最新版本

image-20231108155840689

image-20231108160008990

image-20231108161801809

image-20231108161843112

重启jenkins

image-20231108164839575

安装jenkins插件
设置镜像源

image-20231113150948023

设置清华的镜像源: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image-20231108165048585

image-20231108165156418

安装Git插件

image-20231113151055304

image-20231113151110191

image-20231108170248831

重启jenkins容器

docker restart jenkins
安装gitlab插件

image-20231108170646012

系统配置

全局工具配置

image-20231109155157072

配置maven

image-20231113172348209

image-20231113172431231

image-20231113172555809

配置用户凭证

配置用户凭证是为了将来gitlab访问jenkins。

image-20231109155331438

image-20231109155355147

选择stores from parent

image-20231109155432433

image-20231109155604208

image-20231109155931214

image-20231109155955200

jenkins使用

创建一个springboot项目,使用jenkins+gitlab。

gitlab创建maven项目

image-20231109160229627

image-20231109160254409

image-20231109160307786

image-20231109160419549

image-20231109160437086

image-20231109161042371

idea 导入gitlab项目

image-20231109161132018

image-20231109161246699

idea中隐藏不必要的文件/夹(可选)
image-20231109161421122

image-20231109161905444 image-20231109161952563

image-20231109162054047

image-20231109162119223

image-20231109162156893

image-20231109162215870
修改项目名称

在pom.xml中修改

<groupId>com.wnhz.bms</groupId>
<artifactId>wnhz-bms</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>wnhz-bms</name>
<description>使用jenkins构建项目</description>

image-20231109162536683

创建项目提交到gitlab

gitlab提交报错

error: unable to read askpass response from ‘C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2021.3\tmp\intellij-git-askpass-local.sh’
bash: line 1: /dev/tty: No such device or address

解决方案:需要修改git的remote用户名密码

image-20231109165015611

image-20231109165055082

再次提交

image-20231109165125130

gitlab

image-20231109165213762

jenkins构建

创建新项目(maven)

image-20231109165335323

配置(Configure)

image-20231109165633649

image-20231109165651422

image-20231109165709762

总览如下图:

image-20231109165534915

保存

image-20231109165800718

立即构建

image-20231109165851063

image-20231109165905370

点击#1进入构建详情

image-20231109165932608

image-20231109170049042

image-20231109170347439

jenkins的自动构建

使用gitlab hook插件完成gitlab上有提交jenkins的自动构建过程。

在项目配置中配置构建触发器

image-20231110094352596

取消认证

image-20231110102342883

image-20231110102304395

登录gitlab
管理员登录 gitlaba

点击Admin,设置Network 的Outbound requests设置的选中。

image-20231110100702357

image-20231110100630725

退出管理员

image-20231110100802990
当前用登录

普通用户登录(我的是test),点击项目->settings->Webhooks

image-20231110095529082

image-20231110095853120

image-20231110101225404

image-20231110102506970

image-20231110102523109

测试自动构建
push项目到gitlab

image-20231110102923061

查看jenkins是否自动构建

image-20231110102903373

image-20231110103016106

image-20231110111820189


jenkins发布

安装publisher ssh over插件

image-20231108171722390

配置ssh
image-20231110084123134

image-20231110084439553

image-20231110084517077

image-20231110084938792

image-20231208174642472

修改springboot项目的输出路径

由于项目采用多级目录,我们将打包后的结果统一输出到某个目录,暂时定为out。在项目打包插件中添加打包位置。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <outputDirectory>../../out</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>
发布项目配置

点击项目设置post steps

image-20231110171830032

image-20231209173245868

测试发布

image-20231110172021959

image-20231209173428986

linux服务器

image-20231209173529186

image-20231110172039998

[root@localhost projects]# nohup java -jar wnhz-bms-0.0.1-SNAPSHOT.jar &
[1] 67855
[root@localhost projects]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@localhost projects]# ls
nohup.out  wnhz-bms-0.0.1-SNAPSHOT.jar

[root@localhost projects]cat nohup.out

     /^\    /^\
    {  O}  {  O}
     \ /    \ /
     //     //       _------_
    //     //     ./~        ~-_
   / ~----~/     /              \
 /         :   ./       _---_    ~-
|  \________) :       /~     ~\   |
|        /    |      |  :~~\  |   |
|       |     |      |  \___-~    |
|        \ __/`^\______\.        ./
 \                     ~-______-~\.
 .|                                ~-_
/_________蜗牛杭州Jenkins测试__________~~
2023-11-10 17:15:43.926  INFO 28907 --- [           main] com.wnhz.bms.BmsApp                      : Starting BmsApp v0.0.1-SNAPSHOT using Java 1.8.0_341 on localhost.localdomain with PID 28907 (/usr/local/projects/wnhz-bms-0.0.1-SNAPSHOT.jar started by root in /usr/local/projects)
2023-11-10 17:15:44.062  INFO 28907 --- [           main] com.wnhz.bms.BmsApp                      : The following 1 profile is active: "dev"
2023-11-10 17:15:47.587  INFO 28907 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9090 (http)
2023-11-10 17:15:47.610  INFO 28907 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-11-10 17:15:47.611  INFO 28907 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.68]
2023-11-10 17:15:47.860  INFO 28907 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-11-10 17:15:47.861  INFO 28907 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3472 ms
2023-11-10 17:15:49.326  INFO 28907 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
2023-11-10 17:15:49.475  INFO 28907 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
2023-11-10 17:15:49.477  INFO 28907 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
2023-11-10 17:15:49.486  INFO 28907 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2023-11-10 17:15:49.558  INFO 28907 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2023-11-10 17:15:49.887  INFO 28907 --- [           main] com.wnhz.bms.BmsApp                      : Started BmsApp in 8.873 seconds (JVM running for 10.226)
2023-11-10 17:16:19.245  INFO 28907 --- [nio-9090-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-11-10 17:16:19.245  INFO 28907 --- [nio-9090-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-11-10 17:16:19.247  INFO 28907 --- [nio-9090-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

swagger测试

image-20231110173326253

image-20231110172154445

关闭应用

image-20231110173416030

[root@localhost projects]# ps aux|grep 67855
root      67855  8.8  3.9 5856660 318416 pts/4  Sl   17:31   0:18 java -jar wnhz-bms-0.0.1-SNAPSHOT.jar
root      76563  0.0  0.0 112824   988 pts/4    S+   17:34   0:00 grep --color=auto 67855
[root@localhost projects]# kill -9 67855
[root@localhost projects]# ps aux|grep 67855
root      79602  0.0  0.0 112824   984 pts/4    S+   17:35   0:00 grep --color=auto 67855
[1]+  已杀死               nohup java -jar wnhz-bms-0.0.1-SNAPSHOT.jar

g-TG9kGPpx-1713174351305)]

关闭应用

[外链图片转存中…(img-19K8gVWG-1713174351306)]

[root@localhost projects]# ps aux|grep 67855
root      67855  8.8  3.9 5856660 318416 pts/4  Sl   17:31   0:18 java -jar wnhz-bms-0.0.1-SNAPSHOT.jar
root      76563  0.0  0.0 112824   988 pts/4    S+   17:34   0:00 grep --color=auto 67855
[root@localhost projects]# kill -9 67855
[root@localhost projects]# ps aux|grep 67855
root      79602  0.0  0.0 112824   984 pts/4    S+   17:35   0:00 grep --color=auto 67855
[1]+  已杀死               nohup java -jar wnhz-bms-0.0.1-SNAPSHOT.jar

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

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

相关文章

【InternLM】LMDeploy部署实践

1. LMDeploy基本介绍 LMDeploy提供一站式的大模型压缩、部署和服务&#xff0c;其主要特点包括&#xff1a; 高效的推理速度。通过引入持久批处理(即连续批处理)、阻塞 KV 缓存、动态拆分与融合、张量并行、高性能 CUDA 内核等关键特性&#xff0c;提供了比 vLLM 高1.8倍的请…

从零开始写一个RTSP服务器(三)RTP传输H.264

目录 一、RTP封装1.1 RTP数据结构1.2 源码 二、H.264的RTP打包2.1 H.264格式2.2 H.264的RTP打包方式2.3 H.264 RTP包的时间戳计算2.4 源码 三、H.264 RTP打包的sdp描述四、测试 本篇文章目标&#xff0c;使用vlc打开sdp文件后&#xff0c;可以观看到视频数据 一、RTP封装 1.1 …

实战:完美解决md图床问题-nginx图床-2024.4.16(测试成功)

目录 文章目录 目录1、前言图床简介搭建方式需求背景解决方案 2、配置过程1.部署nginx服务2.配置picgo3.配置rsync服务(可选) 3、测试验证关于我最后最后 1、前言 图床简介 对于写博客的朋友们来讲&#xff0c;图床这个东西一定不会陌生&#xff0c;而且在一定程度上也给大家…

MySQL8.0.20 下载与安装

一、下载 MySQL服务器下载安装&#xff1a; 官网社区版地址&#xff1a; https://downloads.mysql.com/archives/installer/ 二、安装 安装注意事项---成功秘诀 安装密码不要设置复杂了&#xff0c;千万要记住密码&#xff0c;比如root和mysql就很好&#xff1b;不要随意卸…

4.Spring AOP

4.1 Spring AOP的基本概念 4.1.1 AOP的概念 在业务处理代码中&#xff0c;通常都有日志记录、性能统计、安全控制、事务处理、异常处理等操作。尽管使用OOP可以通过封装或继承的方式达到代码的重用&#xff0c;但仍然存在同样的代码分散到各个方法中。因此&#xff0c;采用OO…

文件上传App,H5,小程序多端兼容

插件地址&#xff1a;https://ext.dcloud.net.cn/plugin?id5459 下载lsj-upload插件 代码如下 结构 <lsj-upload :option"option" :size"size" :formats"formats" :debug"debug":instantly"instantly" change"…

网络编程(现在不重要)

目录 网络编程三要素与InetAddress类的使用 软件架构 面临的主要问题 网络编程三要素&#xff08;对应三个问题&#xff09; InetAddress的使用 TCP与UDP协议剖析与TCP编程案例&#xff08;了解&#xff09; TCP协议 UDP协议 例子 UDP、URL网络编程 URL&#xff1a;&…

Android多线程:Handler runOnUiThread 异步消息处理机制

目录 一&#xff0c;Android中的多线程问题 1.模拟耗时工作 2.Android开启子线程 二&#xff0c;在子线程中更新UI 1.异步消息处理机制 Handler 2.使用runOnUiThread更新UI 一&#xff0c;Android中的多线程问题 Android用户界面是与用户交互的接口&#xff0c;对于用户的…

偏微分方程算法之混合边界差分

目录 一、研究对象 二、差分格式 2.1 向前欧拉格式 1. 中心差商 1.1.1 理论推导 1.1.2 算例实现 2. x0处向前差商&#xff0c;x1处向后差商 1.2.1 理论推导 1.2.2 算例实现 2.2 Crank-Nicolson格式 2.2.1 理论推导 2.2.2 算例实现 一、研究对象 这里我们以混合边界…

科技云报道:AI大模型疯长,存储扛住了吗?

科技云报道原创。 AI大模型正在倒逼数字基础设施产业加速升级。 过去一年半&#xff0c;AI大模型标志性的应用相继出现&#xff0c;从ChatGPT到Sora一次次刷新人们的认知。震撼的背后&#xff0c;是大模型参数指数级的增长。 这种数据暴涨的压力&#xff0c;快速传导到了大模…

Efficient Multimodal learning from data-centric perspective

[MLLM-小模型推荐-2024.3.18] Bunny 以数据的眼光看问题 - 知乎近期几天会梳理下多模态小模型相关的论文&#xff0c;做个汇总。为了能够每天更新点啥&#xff0c;先穿插一些小模型算法。等到全部算法都梳理完成后&#xff0c;再发布一篇最终汇总版本的。 3.15 号 BAAI 发布了 …

关于机器学习/深度学习的一些事-答知乎问(五)

嵌入学习方法在解决小样本学习问题时面临的挑战是什么&#xff1f; &#xff08;1&#xff09;过度依赖于辅助数据&#xff0c;预训练的模式违背了小样本学习的本质定义。几乎所有的嵌入学习方法都需要通过大量辅助样本来预训练特征嵌入函数&#xff0c;但在实际应用场景中&am…

葡萄书--图理论基础

图的定义 G{V,E} 节点和边的信息可以是类别型的&#xff0c;类别型数据的取值只能是哪一类别。一般称类别型的信息为标签。 节点和边的信息可以是数值型的&#xff0c;数值型数据的取值范围为实数。一般称数值型的信息为属性。 在图的计算任务中&#xff0c;我们认为&#x…

不消除存储瓶颈,AIGC就是梦幻泡影

大数据产业创新服务媒体 ——聚焦数据 改变商业 在大模型和AIGC的新纪元&#xff0c;我们正见证一个前所未有的技术革命。从更自然的人机对话&#xff0c;到图片、视频生成&#xff0c;AIGC技术正在彻底改变我们创造、学习和交流的方式。 然而&#xff0c;这一切进步的背后&am…

【数据结构|C语言版】顺序表应用

前言1. 基于动态顺序表实现通讯录1.1 通讯录功能1.2 代码实现1.2.1 SeqList.h1.2.2 SeqList.c1.2.3 Contact.h1.2.4 Contact.c1.2.5 test.c 1.3 控制台测试1.3.1 添加联系人1.3.2 删除联系人1.3.3 修改联系人1.3.4 查找联系人1.3.5 清空通讯录1.3.6 通讯录读档和存档 2. 好题测…

如何打开一个fbx模型

步骤 ① 下载fbx viewer &#xff0c;以下是管网链接 FBX Review | Cross-platform 3D model viewer | Autodesk ②需要用邮箱进行注册&#xff0b;确认&#xff0c;这一步完成之后 ③下载之后吧fbx文件导入到这个里面就可以了

NL2SQL进阶系列(4):ConvAI、DIN-SQL、C3-浙大、DAIL-SQL-阿里等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4)&#xff1a;ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a…

前端导出excel 接口处理和导出处理

如果按照一般的请求方式&#xff0c;接口会返回如下乱码 此时&#xff0c;接口其实已经请求成功了&#xff0c;只需要对乱码进行一下处理就行 1.请求方式处理 1.1 如果是直接使用axios进行请求 axios({method: get,url: url,params: params,//需要添加responseType: blob }…

采用分治法求含n个实数序列中的最大元素和次大元素(C语言)

目录 实验内容&#xff1a; 实验过程&#xff1a; 1.算法设计 2.程序清单 3.复杂度分析 4.运行结果 实验内容&#xff1a; 设计一个程序&#xff0c;采用分治法求含n个实数序列中的最大元素和次大元素&#xff0c;并分析算法的时间复杂度。 实验过程&#xff1a; 1.算法…

深度学习之PyTorch实现卷积神经网络(CNN)

在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是一种非常强大的模型&#xff0c;专门用于处理图像数据。CNN通过卷积操作和池化操作来提取图像中的特征&#xff0c;具有较好的特征学习能力&#xff0c;特别适用…