【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)
书接上文:创建一个项目
在经过cmake+msbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。
一、动态库移位—cmake实现
在linux环境中
,生成动态库或可执行程序的那一层cmakelist.txt中末尾添加以下代码:
install(TARGETS aaaRUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/binLIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/binARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
解释:
aaa
: 动态库名字,假如你的动态库叫libaaa.so,这里就写aaa。
${CMAKE_INSTALL_PREFIX}
: 想要存放的文件夹路径,提前定义好。
RUNTIME
:可执行程序;LIBRARY
:动态库;ARCHIVE
:静态库。
设置好之后,在运行完cmake
、make
命令之后再运行make install
命令,这个命令会根据上面的代码将你的动态库拷贝
到你设置好的文件夹。
windows环境
,生成动态库或可执行程序的那一层cmakelist.txt中末尾添加以下代码:
if(WIN32)
SET_TARGET_PROPERTIES(aaa PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/bin")
endif()
设置好之后,运行完msbuild命令,生成的动态库会自动被剪切
到设置好的文件夹中,无需增加别的命令。这里与linux不同的是可执行程序和动态库都用RUNTIME_OUTPUT_DIRECTORY ,没有RUNTIME和LIBRARY之分。
如图,我的两个动态库都被剪切到dist目录里边了
二、文件回传svn
我希望将dist文件夹中的内容回传到svn。
方案一 使用svn publisher plugin 这个插件
插件安装方法看:创建一个项目
安装完成之后在system设置里边添加上插件的配置信息,如下图
然后再项目配置中“构建后操作步骤”选择下图选项:
并做以下设置:
svn url: 要上传到的svn路径
target path: jenkins工作空间中你准备好的动态库的目录
items: 要上传的文件
但是,很遗憾,我配置好了运行之后也显示success了,但是svn上边始终没有出现我上传的文件,完全摸不着头脑,有解决思路的朋友请留言,十分感谢!
方案二 使用svn commit命令上传
1、svn命令
由于插件不起作用,那我想让jenkins像一般客户端一样通过update、commit等方式来操作svn。
这个前提是服务器本身就能够在cmd中使用svn命令!打开cmd,输入svn --version检查一下,如果能用那就完美,如果不能用,首先检查系统环境变量中Path路径是否 设置,还没设置的话太好添加上就可以了。如果Path设置过了依然不能用,哦吼,就只能重装svn了。参考:https://blog.csdn.net/u010648555/article/details/50596303
2、upgrade
重装之后,我在jenkins拉取代码的文件夹内右键发现没有出现update和commit按钮,而是一个upgrade的提示语,查了帖子说是拉取代码的svn版本比服务端安装的svn版本低,需要先upgrade一下,服务端的svn才能正常读取。另外,注意upgrate命令必须在项目的最外层执行
这里补充一下,我发现在system配置中svn的版本号默认为1.4,我将其改为最高的1.8之后,不用执行upgrade命令,也能正常commit了
3、add+commit
如果你要上传的是原本svn路径中没有的文件,那么仅仅commit是没有用的,需要先用add命令将其纳入版本控制中,再commit
于是,我最终的命令如下图:
mkdir build
cd build
cmake ../ -A x64 -DCMAKE_CL_64=true
msbuild aaa.sln /p:Configuration=Release /p:Platform=x64
cd ..
svn upgrade
cd dist
svn add *
svn commit -m " test: Jenkins controls SVN's submission"
不过这种方式有一点不好,就是不能直接将某个目录下的文件上传到其它的svn路径,要上传只能先拷贝到另一个svn拉取下来的目录中,然后再在那个目录中使用commit命令。
相关文章:
【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)
书接上文:创建一个项目 在经过cmakemsbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。 一、动态库移位—cmake实…...
数据结构·二叉树(2)
目录 1 堆的概念 2 堆的实现 2.1 堆的初始化和销毁 2.2 获取堆顶数据和堆的判空 2.3 堆的向上调整算法 2.4 堆的向下调整算法 2.4 堆的插入 2.5 删除堆顶数据 2.6 建堆 3 建堆的时间复杂度 3.1 向上建堆的时间复杂度 3.2向下建堆的时间复杂度 4 堆的排序 前言&…...
MATLAB算法实战应用案例精讲-【毕业季论文专用】人工智能视觉检测技术及其在实际应用中的挑战与前景
目录 摘要: 第一章:引言 1.1 研究背景 1.2 研究目的与意义...
Linux虚拟机环境搭建spark
Linux环境搭建Spark分为两个版本,分别是Scala版本和Python版本。 一、 安装Pyspark 本环境以 Python 环境为例。 1、下载spark 下载网址:https://archive.apache.org/dist/spark 下载安装包:根据自己环境选择合适版本,本环境…...
STL的string容器
string基本概念 string是C风格的字符串,本质上是一个类。 string 和 char* 的区别 char* 是一个指针; string是一个类,内部封装了 char* ,用来管理字符串,是一个 char* 型的容器。 特点 string内部封装了很多成员…...
半导体工艺技术
完整内容点击:【半导体工艺技术】...
acwing算法提高之图论--单源最短路的扩展应用
目录 1 介绍2 训练 1 介绍 本专题用来记录使用。。。。 2 训练 题目1:1137选择最佳线路 C代码如下, #include <iostream> #include <cstring> #include <algorithm> #include <queue>using namespace std;const int N 101…...
SQLServer数据库使用Function实现根据字段内容的拼音首字母进行数据查询
实现SQL首字母查询分两步,第一步建Function,第二步引用新建的Function。 1. 首先需要自定义一个查询的Function,详细SQL如下: ALTER function [dbo].[GetDataByPY](str nvarchar(4000)) returns nvarchar(4000) as begin decla…...
Linux——信号概念与信号产生方式
目录 一、概念 二、前台进程与后台进程 1.ctrlc 2.ctrlz 三、信号的产生方式 1.键盘输入产生信号 2.系统调用发送信号 2.1 kill()函数 2.2 raise()函数 2.3 abort()函数 3.异常导致信号产生 3.1 除0异常 3.2 段错误异常 4.软件条件产生信号 4.1 管道 4.2 闹钟…...
赋值语句还能当判断条件?涨芝士了!
赋值和条件看似是C语言中毫不相关的两个概念,虽然实际过程中我猜测不会有太多这种不太符合常理的情况出现,但是现在在学习的过程中,为了出题而出题总是会整出一些花活出来.....这很难不让人联想起高中时一些大佬为了彰显自己的数学天赋而自己…...
数据结构 - 算法效率|时间复杂度|空间复杂度
目录 1.算法效率 2.时间复杂度 2.1定义 2.2大O渐近表示法 2.3常见时间复杂度计算举例 3.空间复杂度 3.1定义 3.2常见空间复杂度计算举例 1.算法效率 算法的效率常用算法复杂度来衡量,算法复杂度描述了算法在输入数据规模变化时,其运行时间和空间…...
接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送
接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目,构建成功后,希望可以把生成的报告,以及结果统计发送至企微。 效果图: 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…...
『Apisix安全篇』探索Apache APISIX身份认证插件:从基础到实战
🚀『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 📣读完这篇文章里你能收获到 🛠️ 了解APISIX身份认证的重要性和基本概念,以及如何在微服务架构中实施API安全。🔑 学习如何使…...
【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了
【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用1、OSI 的七层模型分别是?各自的功能是什么?2、说一下一次完整的HTTP请求…...
『大模型笔记』常见的分布式并行策略(分布式训练)
常见的分布式并行策略(分布式训练) 文章目录 一. 为什么分布式训练越来越流行二. 常见的并行策略2.1 数据并行2.2 模型并行2.3 流水并行2.4 混合并行二. 参考文献一. 为什么分布式训练越来越流行 近年来,深度学习被广泛应用到各个领域,包括计算机视觉、语言理解、语音识别、广…...
java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化
工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…...
3D数据格式导出工具HOOPS Publish如何生成高质量3D PDF?
在当今数字化时代,从建筑设计到制造业,从医学领域到电子游戏开发,3D技术已经成为了不可或缺的一部分。在这个进程中,将3D模型导出为3D PDF格式具有重要的意义。同时,HOOPS Publish作为一个领先的解决方案,为…...
【springboot】闲话 springboot 的几种异步机制 及 长轮询的概念和简单实现
文章目录 引子springboot的几种异步形式开启异步支持和线程池配置(重要)第一种:Async第二种:Callable<T>第三种:WebAsyncTask<T>第四种:DeferredResult<T> 长轮询的简单实现概念实现服务…...
Mysql---安全值守常用语句
文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…...
containerd快速安装指南
1 containerd快速安装指南🚀 本指南旨在提供一个简洁有效的方法来安装containerd。我们将通过一份易于理解的脚本步骤,指导您完成安装🔧。请根据您的实际需求,适当调整containerd版本及其相关依赖。 注意事项: 本安装…...
Javascript - 正则表达式相关的一些基础的范例
很久以前的一些学习资料,归档发布; 正则表达式的基础,以HTML代码来示范: <html><head><title></title><script language"javascript">function test(){//从页面要求客户输入一个字符串…...
JUC:线程活跃性(死锁、活锁、饥饿)
文章目录 线程活跃性死锁活锁解饿 线程活跃性 死锁 两个线程相互等待对方已拥有的锁,就会相互一直等待,不会停止。 t1拥有a锁,等待b锁。 t2拥有b锁,等待a锁。 Slf4j(topic "c.Test3") public class st3 {public st…...
RGB到灰度图像的转换原理及例程
RGB到灰度图像的转换是一种常用的图像处理操作,其原理是根据人眼对不同颜色的敏感度,将彩色图像的红、绿、蓝三个通道的像素值按照一定权重进行加权平均,得到灰度图像的像素值。 在RGB图像中,每个像素点由红、绿、蓝三个分量组成…...
PCA+DBO+DBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper!
PCADBODBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper! 一、蜣螂优化算法 摘要:受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发,提出了一种新的基于种群的优化算法(Dung Beetle Optim…...
创建数据库与表单以及管理表单和数据
一、用于创建数据库的命令以及作用 命令作用CREATE DATABASE 数据库名称创建新的数据库DESCRIBE 表单名称描述表单UPDATE 表单名称SET attribute新值WHERE attribute>原始值更新表单中的数据USE 数据库名称指定使用的数据库SHOW databases显示当前已有的数据库SHOW tables显…...
Milvus+ATTU环境搭建
1.使用Docker Compose安装Milvus Standalone 下载安装单机版milvus向量数据库 https://milvus.io/docs/install_standalone-docker.md wget https://github.com/milvus-io/milvus/releases/download/v2.2.12/milvus-standalone-docker-compose.yml -O docker-compose.yml sud…...
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 一、简单介绍 二、简单图像浮雕效果实现原理 三、简单水彩画效果案例实现简单步骤 四、注意事项…...
Chrome浏览器 安装Vue插件vue-devtools
前言 vue-devtools 是一个为 Vue.js 开发者设计的 Chrome 插件。它可以让你更轻松地审查和调试 Vue 应用程序。与普通的浏览器控制台工具不同,Vue.js devtools 专为 Vue 的响应性数据和组件结构量身定做。 1. 功能介绍 组件树浏览:这个功能可以让你查…...
相册清理大师-手机重复照片整理、垃圾清理软件
相册清理大师是一款超级简单实用的照片视频整理工具。通过便捷的操作手势,帮助你极速整理相册中的照片和视频、释放手机存储空间。 【功能简介】 向上滑动:删除不要的照片 向左滑动:切换下一张照片 向右滑动:返回上一张照片 整理分…...
【GitLab】Ubuntu 22.04 快速安装 GitLab
在 Ubuntu 22.04 上安装最新版本的 GitLab,可以按照以下步骤操作: 1. 更新系统: 在终端中执行以下命令以确保系统是最新的: sudo apt update sudo apt upgrade2. 安装依赖: 安装 GitLab 所需的依赖包: …...
邮件网站怎么做的/免费seo推广软件
什么是数据挖掘 数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 听起来比较抽象,我们举个例子。 傍晚小街路面上沁出微雨后的湿润,和…...
杭州网站建设设计制作/关键词百度指数查询
被tkj大爷艹爆了5555整套模拟赛都是神仙思路题 那么这题题解 还有一个神仙做法,zory巨神在考场上找规律AC,自己都不会证。。我证明了一下(然而这货还是不认可自己的做法) 按照分割点的思路,我们for循环一次,每次找到比当前点小且最…...
wordpress手机菜单/营销失败案例分析
GO语法简单小结(一)1、 for循环中“ _, ”的用法?2、 Result()3、 转义字符转和原始字符串1、 for循环中“ _, ”的用法? for _, node : range c.nodesfor key, value : range []int{1, 2, 3, 4} {fmt.Printf("key:%d valu…...
四川网站建设和优化/巨量引擎app
需求描述: 在工作中,有的时候需要在cmd中进行盘符的切换,以前总有些时候 通过cd来切,就是切换不过去,每次都要进行百度查询,所以,这次就记录下, 留着以后再用。 操作过程:…...
郑州响应式网站建设/百度小说风云榜
现在python学习可是潮流,相信很多小伙伴目前都在学习或者正准备学习python的路上。虽然说python语言相对比较简单,上手很容易,但是对于一些零基础的小白来说还是比较难的,在学习过程中会遇到各种各样的问题。小编今天跟大家分享的…...
网站架设 数据库选用/大一html网页制作作业
阿里高级专家手推最新版Spring源码深度解析(第2版)笔记总结 特点: 全面剖析Spring源码,方便读者根据业务需求进行更改或扩展所有知识点秉承由浅入深、由易到难的讲解架构采用抽丝剥茧的方式来阐述复杂的逻辑,降低理解…...