jenkins实战(1)

news2024/9/28 5:23:19

一, Jenkins官网介绍: Jenkins

持续集成、持续部署

下载地址:Jenkins download and deployment

提供两种类型: LTS(长期版)和Weekly(最近一周的版本)

注: 必须是Java8及以上版本(官网针对这一点有做说明)

二, 安装

下载war包,java -jar XXX --httpPort=8081 或

下载war包放在tomcat下的web-app目录下运行tomcat 或

docker安装部署: docker pull jenkins/jenkins

1, 创建本地目录: sudo mkdir -p /Users/devops/jenkins 

2, 对目录开放docker进程操作的完全读写的权限: sudo chmod 777 /Users/devops/jenkins

3, docker启动部署: docker run -itd -p 9003:8080 --restart always -v /Users/devops/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:latest

执行完后,打开地址: http://localhost:9003访问页面

在指定路径上寻找管理员密码输入,然后进行登录

三,Jenkins的工作流程

四, 系统管理设置

1, 设置时区: 系统管理-》脚本命令行-》System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

2, 安装插件: 系统管理-》插件管理-》

【Maven Integration】、【Pipeline Maven Integration】、【Gitlab】、【Gitlab hook】、【SSH】、【Publish Over SSH】进行安装,安装完后重启

说明: 安装Publish Over SSH插件的原因:因为本方式是使用docker启动jenkin服务,所以在jenkins后续执行构建任务时候,需要在build成功后,将服务的jar包[以spring boot]服务为例,需要将jar包拷贝到Dockerfile所在服务器的指定目录,进行微服务的启动;所以,此处需要配置SSH服务器的连接,意思就是在jenkins的任务结束后,去执行指定的服务器上的shell命令,做spring boot或cloud服务的镜像的构建,容器的运行,等一系列的事情 

3, 如果忘记了账号密码,在docker里面可通过这个目录查找:cd /var/jenkins_home/users,然后找到lizhihao_XXX的目录进入,里面有个config.xml文件进入:cat config.xml,然后有个标签passwordHash即为加密后的密码,初始密码为:123456,加密后为#jbcrypt:$2a$10$LxMm9HqAI/R4z7gL57qTouW/Mrz8uSaBpCGKvKc7K6dK.g/0yk/uq,可修改密码后,重启容器即可.

重启Jenkins容器:docker ps 找到容器id,docker restart 容器id

五, 创建任务和功能介绍

5.1 源码管理设置:

注: 下面还可以指定一个分支.

创建一个maven项目,这里使用git进行源码进行管理,需要注意的是,如果使用docker进行jenkins安装,需要进入jenkins中,然后生成ssh key,即 进入容器后,执行:ssh-keygen -t rsa,一路回车直到生成公私钥完毕.

将生成的公钥添加到github上后,jenkins就能够访问到代码了.

然后在jenkins设置中,添加git的凭证,这里我们使用账号密码(公钥或者私钥不行),

参照:jenkins配置git报错returned status code 128_以root用户运行jenkins容器 报 git config remote.origin.url -CSDN博客

5.2 构建环境

在post Steps中执行shell脚本:

#!/bin/bash #输入Maven打包后的项目名称 app=magic-api-demo-0.0.1-SNAPSHOT #项目移动的目的地址 path=/user/local echo this is app : $app #若项目已启动,杀死旧进程 api_pid=`ps -ef | grep "$app.jar" | grep -v grep | awk '{print $2}'` echo api_pid = $api_pid if [ "$api_pid" != "" ]; then echo kill api kill -9 $api_pid echo sleep 3s sleep 1 echo sleep 2s sleep 1 echo sleep 1s sleep 1 fi #将jar包从jenkins工作空间中移动到指定路径下 #mv /var/jenkins_home/workspace/magic-api-demo/target/$app.jar $path #cd $path cd /Users/lizhihao/.jenkins/workspace/magic-api-demo/target #防止进程被杀死 BUILD_ID=dontKillMe #后台进程形式启动项目,日志文件为out.log nohup java -jar $app.jar >> out.log 2>&1 & echo $app start success exit 0

注: 在使用docker部署jenkins时,jenkins的工作空间目录要填写宿主机的目录,对应的实际jar包的位置也填宿主机的,最后out.log文件存放在target目录中与jar包平级.

5.3 配置Webhook,

将该url配置到项目settings中的webhook中:

需要注意的是,该ip应该为公网的ip,内网的ip或者localhost不会访问成功.

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

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

相关文章

为什么说 TiDB 在线扩容对业务几乎没有影响

本文讨论了分布式数据库在在线扩容方面的挑战, 详细解释了一般分布式数据库和 TiDB 在扩容机制上的不同。 一般分布式数据库在进行在线扩容时,需要重新平衡数据分布,可能会影响系统的可用性和 IO 消耗。 相比之下,TiDB 的存算分离…

五、西瓜书——集成学习

1.个体与集成 集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”(weak learner)尤为明显因此集成学习的很多理论研究都是针对弱学习器进行的而基学习器有时也被直接称为弱学习器。 要获得好的集成个体学习器应“好而不同”…

mybatis开发一个分页插件、mybatis实现分页、mybatis拦截器

mybatis开发一个分页插件、mybatis实现分页、mybatis拦截器 通过官网的mybatis插件说明可知,我们可以通过拦截器进行开发一个插件。 例如这样的: UserMapper mapper sqlSession.getMapper(UserMapper.class);// 开始分页MagicPage.startPage(1, 3);//…

八. 实战:CUDA-BEVFusion部署分析-分析BEVFusion中各个ONNX

目录 前言0. 简述1. camera.backbone.onnx(fp16)2. camera.backbone.onnx(int8)3. camera.vtransform.onnx(fp16)4. fuser.onnx(fp16)5. fuser.onnx(int8)6. lidar.backbone.xyz.onnx7. head.bbox.onnx(fp16)总结下载链接参考 前言 自动驾驶之心推出的《CUDA与TensorRT部署实战…

【C++】vector的使用和模拟实现(超级详解!!!!)

文章目录 前言1.vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector 空间增长问题1.2.3 vector 增删查改1.2.4 vector 迭代器失效问题。(重点!!!!!!)1.2.5 vector 在OJ中有关的练习题 2.ve…

蓝桥杯倒计时 41天 - KMP 算法

KMP算法 KMP算法是一种字符串匹配算法,用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac,P“aba”,那么出现的所有位置是13。 在初学KMP时,我们只需要记住和学会使用模板即可,对其原理只需简单理解&#xff…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展,智能家居正成为现代生活的一部分,极大地改变了我们与家庭环境互动的方式。其中,WiFi模块作为关键的连接技术,在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

Maven实战(2)之搭建maven私服

一, 背景: 如果使用国外镜像,下载速度比较慢; 如果使用阿里云镜像,速度还算OK,但是假如网速不好的时候,其实也是比较慢的; 如果没有网的情况下更加下载不了. 二, 本地仓库、个人/公司私服、远程仓库关系如下: 三, 下载安装nexus私服 略

如何在Window系统部署VisualSVN服务并结合cpolar实现无公网ip远程访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统…

Mixtral模型解读

Mixtral 8x7B(Mistral MoE) 1.Mistral 7B模型 Mistral 7B模型与Llama2 7B模型结构整体上是相似的,其结构参数如下所示。 细节上来说,他有两点不同。 1.1SWA(Sliding Window Attention) ​ 一般的Attention来说,是Q与KV-Cache做内积&#…

23端口登录的Telnet命令+传输协议FTP命令

一、23端口登录的Telnet命令 Telnet是传输控制协议/互联网协议(TCP/IP)网络(如Internet)的登录和仿真程序,主要用于Internet会话。基本功能是允许用户登录进入远程主机程序。 常用的Telnet命令 Telnet命令的格式为&…

基础算法(四)(递归)

1.递归算法的介绍: 概念:递归是指函数直接或间接调用自身的过程。 解释递归的两个关键要素: 基本情况(递归终止条件):递归函数中的一个条件,当满足该条件时,递归终止,避…

C++11中的auto、基于范围的for循环、指针空值nullptr

目录 auto关键字 使用原因 历史背景 C11中的auto auto的使用案例 auto 指针/引用 同一行定义多个变量 typeid关键字 基于范围的for循环 范围for的语法 范围for的使用条件 指针空值nullptr C98中的指针空值 C11中的指针空值 auto关键字 使用原因 随着程序越…

Decoupled Knowledge Distillation解耦知识蒸馏

Decoupled Knowledge Distillation解耦知识蒸馏 现有的蒸馏方法主要是基于从中间层提取深层特征,而忽略了Logit蒸馏的重要性。为了给logit蒸馏研究提供一个新的视角,我们将经典的KD损失重新表述为两部分,即目标类知识蒸馏(TCKD&a…

JavaSec 基础之五大不安全组件

文章目录 不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4jLog4jShiroJacksonFastJsonXStream 不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j Log4j Apache的一个开源项目,是一个基于Java的日志记录框架。 历史…

python学习笔记------元组

元组的定义 定义元组使用小括号,且使用逗号隔开各个数据,数据是不同的数据类型 定义元组字面量:(元素,元素,元素,......,元素) 例如:(1,"hello") 定义元组变量:变量名称(元素,元素,元素,......,元素)…

哈希表是什么?

一、哈希表是什么? 哈希表,也称为散列表,是一种根据关键码值(Key value)直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,从而加快查找速度。这个映射函数叫做散列函数&#xff08…

C#与VisionPro联合开发——单例模式

单例模式 单例模式是一种设计模式,用于确保类只有一个实例,并提供一个全局访问点来访问该实例。单例模式通常用于需要全局访问一个共享资源或状态的情况,以避免多个实例引入不必要的复杂性或资源浪费。 Form1 的代码展示 using System; usi…

初阶数据结构之---栈和队列(C语言)

引言 在顺序表和链表那篇博客中提到过,栈和队列也属于线性表 线性表: 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构,也就是说是连…

c++之拷贝构造和赋值

如果一个构造函数中的第一个参数是类本身的引用,或者是其他的参数都有默认值,则该构造函数为拷贝构造函数。 那么什么是拷贝构造呢?利用同类对象构造一个新对象。 1,函数名和类必须同名。 2,没有返回值。 3&#x…