jenkins(docker)安装及应用
jenkins
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
CI/CD
CI
CI(Continuous Integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。。
CD
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
配置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 11月 9 10:08 bin
drwxr-xr-x. 2 root root 76 11月 9 10:08 boot
drwxr-xr-x. 3 root root 92 11月 9 10:10 conf
drwxr-xr-x. 4 root root 4096 11月 9 10:08 lib
-rw-r--r--. 1 root root 17504 11月 9 10:08 LICENSE
drwxr-xr-x. 2 root root 6 11月 9 15:41 maven-repository
-rw-r--r--. 1 root root 5141 11月 9 10:08 NOTICE
-rw-r--r--. 1 root root 2612 11月 9 10:08 README.txt
配置settings.xml
进入/usr/local/software/maven/apache-maven-3.6.3/conf 修改settings.xml。 修改存储依赖的位置。
<localRepository>../maven-repository</localRepository>

配置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 -versionApache 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

下载 jenkins镜像
docker pull jenkinsci/blueocean

创建挂载文件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

开放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

查询jenkins的初始密码
data文件夹映射容器的 /home/jenkins_home
进入secrets文件夹,显示initialAdminPassword。

输入密码

安装插件



点击继续
创建第一个管理员用户

配置实例

重启应用

后台手动重启
[root@localhost jenkins]# docker restart jenkins
登录系统


配置系统
升级最新版本




重启jenkins

安装jenkins插件
设置镜像源

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


安装Git插件



重启jenkins容器
docker restart jenkins
安装gitlab插件

系统配置
全局工具配置

配置maven



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

选择stores from parent




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






idea 导入gitlab项目


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




修改项目名称
在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>

创建项目提交到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用户名密码

再次提交

gitlab

jenkins构建
创建新项目(maven)

配置(Configure)



总览如下图:

保存

立即构建


点击#1进入构建详情



jenkins的自动构建
使用gitlab hook插件完成gitlab上有提交jenkins的自动构建过程。
在项目配置中配置构建触发器

取消认证


登录gitlab
管理员登录 gitlaba
点击Admin,设置Network 的Outbound requests设置的选中。


退出管理员
当前用登录
普通用户登录(我的是test),点击项目->settings->Webhooks




测试自动构建
push项目到gitlab

查看jenkins是否自动构建



jenkins发布
安装publisher ssh over插件

配置ssh




修改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


测试发布


linux服务器


[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测试


关闭应用

[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
相关文章:
jenkins(docker)安装及应用
jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解…...
uni-app中,页面跳转前,进行拦截处理的方法
个人需求阐述: 当用户在页面A中,填写了内容之后,没有点击“保存/确定”,直接通过点击返回按钮或者手机的物理返回键直接返回时,需要给出一个二次确认的弹层,当用户点击确定离开之后,跳转到页面B…...
Jmeter参数化的 4 种方式用法总结
参数化就是用变量代替数据的过程,总结参数化的4种方式: 1、用户自定义变量 用户自定义变更有两种方法: (1)在测试计划面板中的用户定义的变量设置 说明:在此用户定义的变量对所有测试计划都会生效 &…...
华为OD机试 - 连续天数的最高利润额(Java 2024 C卷 100分)
华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…...
C语言——内存函数的实现和模拟实现
1. memcpy 使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…...
如何优化邮箱Webhook API发送邮件的性能?
邮箱Webhook API发送邮件的流程?怎么用邮箱API发信? 高效、稳定的邮箱Webhook API发送邮件功能对于企业的日常运营至关重要。随着业务量的增长,如何优化邮箱Webhook API发送邮件的性能。AokSend将从多个方面探讨如何提升的效率。 邮箱Webho…...
OceanBase V4.X中常用的SQL(一)
整理了一些在OceanBase使用过程中常用的SQL语句,这些语句均适用于4.x版本,并将持续进行更新。后续还将分享一些V4.x版本常用的操作指南,以便更好地帮助大家使用OceanBase数据库。 集群信息 版本查看 show variables like version_comment; …...
代码随想录算法训练营第五十天|123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
123.买卖股票的最佳时机III 这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。 视频讲解:https://www.bilibili.com/video/BV1WG411K7AR https://programmercarl.com…...
Composer安装与配置:简化PHP依赖管理的利器(包括加速镜像设置)
在现代的PHP开发中,我们经常会使用许多第三方库和工具来构建强大的应用程序。然而,手动管理这些依赖项可能会变得复杂和耗时。为了解决这个问题,Composer应运而生。Composer是一个PHP的依赖管理工具,它可以帮助我们轻松地安装、更…...
灯塔:抽象类和接口笔记
什么是构造方法 构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。 构造方法的功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法,且构造方法和其他方法一样也可以重载 继承抽象类需要实现所有的抽象方法吗 继…...
mybatis 入门
MyBatis是一款持久层框架,免除了几乎所有的JDBC代码、参数及获取结果集工作。可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。 1 无框架下的JDBC操作 1)加载驱动:Class.forName(“com.mysql.cj.jdbc.Driv…...
Spring-AI-上下文记忆
引入依赖 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...
内存函数memcpy、mommove、memset、memcmp
目录 1、memcpy函数 memcpy函数的模拟实现 2、memmove函数 memmove函数的模拟实现 3、memset函数 4、memcmp函数 1、memcpy函数 描述: C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。 声明&…...
symfony框架介绍
Symfony是一个功能强大的PHP框架,它提供了丰富的组件和工具来简化Web开发过程。以下是一些关于Symfony的主要特点: 可重用性: Symfony提供了一系列可重用的PHP组件,这些组件可以用于任何PHP应用程序中。灵活性: Symfony允许开发者根据项目需求灵活选择使用哪些组件,而不是强…...
【计算机毕业设计】游戏售卖网站——后附源码
🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…...
LabVIEW电信号傅里叶分解合成实验
LabVIEW电信号傅里叶分解合成实验 电信号的分析与处理在科研和工业领域中起着越来越重要的作用。系统以LabVIEW软件为基础,开发了一个集电信号的傅里叶分解、合成、频率响应及频谱分析功能于一体的虚拟仿真实验系统。系统不仅能够模拟实际电路实验箱的全部功能&…...
Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备
一、前言 记录时间 [2024-4-11] 系列文章简摘: Docker学习笔记(二):在Linux中部署Docker(Centos7下安装docker、环境配置,以及镜像简单使用) Docker 学习笔记(三)&#x…...
csdn怎么变得这么恶心,自动把一些好的文章分享改成了vip可见
刚刚发现以前发的一些文章未经过我同意,被csdn自动改成了VIP可见,这也太恶心了,第一你没分钱给我,第二我记录下一些问题也不是为了赚钱,而是为了提升自己和帮助别人,这样搞是想逼更多人走是吗?...
自然语言处理NLP:文本预处理Text Pre-Processing
大家好,自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向,其研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本文将介绍文本预处理的本质、原理、应用等内容,助力自然语言处理和模型的生成使用。 1.文本…...
家庭网络防御系统搭建-虚拟机安装siem/securityonion网络连接问题汇总
由于我是在虚拟机中安装的security onion,在此过程中,遇到很多的网络访问不通的问题,通过该文章把网络连接问题做一下梳理。如果直接把securityonion 安装在物理机上,网络问题则会少很多。 NAT无法访问虚拟机 security onion虚拟…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
