【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)

news2024/10/7 4:32:15

书接上文:创建一个项目
在经过cmake+msbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。

一、动态库移位—cmake实现

在linux环境中

,生成动态库或可执行程序的那一层cmakelist.txt中末尾添加以下代码:

install(TARGETS aaa
        RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
        LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
        ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
		)

解释:
aaa: 动态库名字,假如你的动态库叫libaaa.so,这里就写aaa。
${CMAKE_INSTALL_PREFIX}: 想要存放的文件夹路径,提前定义好。
RUNTIME :可执行程序;LIBRARY :动态库;ARCHIVE :静态库。

设置好之后,在运行完cmakemake命令之后再运行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命令。

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

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

相关文章

工作12年了,我还没能过上自己想要的生活

写这篇文章之前,我想了很久,不知道该如何下笔,如何向读者说明这些年我是怎么走过来的,我只是依稀的记得当时的自己犹如在昨天。 2009年大学毕业,我和大多数的毕业生一样写简历求职。不管是招聘会还是网上投简历&#x…

容器网络隔离验证

结论,可以直接扫描内网路由能通的机器。 1.节点1 192.168.55.6 2.节点2 192.168.55.5 3.非节点3 192.168.55.3

4005.K次取反后最大化的数组和

// 定义一个名为Solution的类 class Solution {// 定义一个public方法largestSumAfterKNegations,输入参数为一个整数数组nums和一个整数K,返回值类型为整数public int largestSumAfterKNegations(int[] nums, int K) {// 使用Java流对数组中的元素进行操…

win11 环境配置 之 Jmeter

一、安装 JDK 1. 安装 jdk 截至当前最新时间: 2024.3.27 jdk最新的版本 是 官网下载地址: https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下,新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…

1111111111111111111111111111111111

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

ClickHouse初体验

1.clickHouse是啥? ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告 2.clickHouse的特点 2.1列式存储 对于列的聚合&…

Java零基础入门到精通_Day 3

37 switch default: 后面的break;可以省略 38 春夏秋冬 注意事项:在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行 直到遇到break,或者整体swi…

班级综合测评管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. …

opengl草稿复习,承上启下

目录 1、链接文件夹中的cpp 2、链接资源到输出目录 3、多编译目标 4、cmakelist添加库 4、添加glfw和glad 5、glfw运行 6、NDC、VBO、VAO 7、渐变三角形 8、渲染两个三角形 9、渲染两个三角形,同时基于原来颜色进行渐变 1、链接文件夹中的cpp cmake_minimu…

一本书掌握数字化运维方法,构建数字化运维体系

文章目录 前言主要内容读者对象 前言 数字化转型已经成为大势所趋,各行各业正朝着数字化方向转型,利用数字化转型方法论和前沿科学技术实现降本、提质、增效,从而提升竞争力。 数字化转型是一项长期工作,包含的要素非常丰富&…

React和Vue.js的有什么区别

在当今前端开发领域,React 和 Vue.js 作为两大热门的前端框架备受开发者关注。它们各自拥有独特的特点和优势,在实际项目中有着广泛的运用。本文将深入探讨 React 和 Vue.js 之间的区别,从组件化方式、数据绑定、模板语法以及生态系统和工具支…

鸿蒙HarmonyOS应用开发之C/C++标准库机制概述

OpenHarmony NDK提供业界标准库 libc标准库、 C标准库 ,本文用于介绍C/C标准库在OpenHarmony中的机制,开发者了解这些机制有助于在NDK开发过程中避免相关问题。 1. C兼容性 在OpenHarmony系统中,系统库与应用Native库都在使用C标准库&#…

linux磁盘管理大全

1、磁盘接口类型 #外部结构分类 1、机械硬盘{转速} 2、固态硬盘 ​ 了解 1、IED 淘汰 2、SCSI 淘汰 3、SATA 笔记本 台式机 家用 4、SAS 企业标配 5、PCI-E 企业标配 2、磁盘转速 磁盘转速决定了磁盘读写速度 磁盘越大,存储速度越小。磁盘转速如…

分页-PageHelper原理以及实时分页-键集分页

一.PageHelper原理 1.使用 PageHelper 是国内非常优秀的一款开源 mybatis 分页插件,它支持常用的主流数据库,例如 Oracle、Mysql、MariaDB、SQLite、Hsqldb 等。 PageHelper 的安装很简单,只需要在 pom.xml 中加入以下依赖即可&#xff1a…

pin脚的缺陷检测

忍不住 我才是最大的缺陷首先应该学好表达头脑风暴分割paddledetection小目标检测也不行缺陷检测1.缺陷标注修改代码为自己的数据集训练训练结果结果图片 结论再次出发 我才是最大的缺陷 真的,我真的被整无语了。测测测测,测个鬼。一天天的净整些没用的…

隐蔽处工程监管系统

随着科技的飞速发展,信息化、智能化已经成为各行各业发展的必然趋势。在工程建设领域,传统的监管方式已经难以满足现代工程管理的需求。为了提高工程监管的效率和精度,信鸥科技倾力打造了一款全新的工程监管系统,为工程建设行业带…

14:有效的符号

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

XSS学习(cookie远程登录演示)

1.HTTP特点: 1.请求应答模式。 2.灵活可扩展 3.可靠传输 4.无状态。 这里给大家举一个例子: HTTP是无状态的,所按理来说我每进行一次会话,比如我在CSDN发一个帖子,好像按理来以说我都要进行一次重新登陆&#xff0…

3.4 CSS取值与单位

3.4.1 数字 数字取值是在CSS2中规定的&#xff0c;有三种取值形式如表3-3所示。 3.4.2 长度 长度取值<length>是在CSS2中规定的&#xff0c;表示方法为数值接长度单位。可用于描述文本、图像或其他各类元素的尺寸。 长度取值的单位可分为相对长度单位和绝对长度单位。相…

day5-QT

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QFontDialog> //字体对话框类 #include<QFont> //字体类 #include<QMessageBox> //消息对话框类 #include<QColorDialog> //颜色对话框类 #include<QColor> //颜…