【jenkins+cmake+svn管理c++项目】Windows环境安装以及工具配置

一、目标和环境

目标:搭建一个jenkins环境,实现jenkins调用cmake和svn和VS编译c++项目,并将生成的库上传svn。
环境:win10虚拟机(练习流程用,正式用的话还是放到服务器),VS2017.

二、安装Jenkins

从官网下载适合windows系统的安装包,我下载的是最新版的2.426.3 msi文件,这个版本支持的JDK版本是11/17。JDK1.8的朋友需要下载一个相应版本的JDK并且设置好系统环境变量。过程没有截图,基本上参考这个帖子就可以了。(我url用的是localhost:8080)
https://blog.csdn.net/xiaoxin_OK/article/details/122441071

三、下载SVN插件

工作台左侧点击Manage Jenkins --> plugins -->Available plugins中搜索SVN(subversion)然后点击下载。如图(我安装过了所以在Installed里边)

这里是引用

另外,如果编译完成之后要将内容回传到SVN,需要SVN Publisher plugin插件,这个插件可能在jenkins的插件管理里边找不到,找不到的话就需要自己去找资源下载,是一个svn publisher plugin.hpi , 然后点开插件管理的advanced setting部分,在其中的部署插件部分,选择你下载好的hpi文件上传就可以了。

这里是引用

四、安装cmake和MSBuild插件

  • 一般在windows环境编译c++程序是先通过cmake 的gui生成sln文件,在通过VS打开sln进而编译。那既然现在要用Jenkins来管理,就要通过命令行代替cmake和vs的客户端来完成这些工作。cmake本身支持命令行,而VS的工作需要通过MSBuild来完成。(如果你使用mingw或者别的进行编译,就换成你相应的插件)。
  • jenkins使用cmake和msbuild的时候不仅要在网页版上面安装插件,还要在jenkins服务器上面安装这两个东西,真正的编译工作是有服务器上安装的工具完成的。所以在网页上操作之前现在服务器上配置好,确保在服务器上能使用它们正常工作。
    可以参考我之前的这一篇:windows系统通过命令行调用cmake和vs编译c++项目
  • Manage Jenkins --> plugins -->Available plugins中搜索cmake和MSBuild插件下载,下载完成后点击Manage Jenkins --> Tools,这个里边主要是管理你下载的各种工具,可以将服务器上下载的cmake和msbuild可执行程序的路径记录在这里,以便jenkins能找到它们。
  • 在jenkins上构建一个项目编译时如果报错“cmake:cmake不是内部或外部命令,也不是可执行程序”可能的原因:服务器上cmake没有安装或者没有配置好系统环境变量Path, 或者jenkins找不到cmake,通过下图的设置可以让jenkins找到它)

这里是引用
这里是引用

这里是引用

配置好之后,可以重启一下jenkins服务以便这些配置起作用。重启的方式:
在服务器端打开cmd,cd到jenkins.exe所在的目录,然后:stop停止服务,start启动服务,restart==重启。
!!这里有一点问题:我使用先stop再start的方式配置生效,直接restart反而不生效,甚至之前生效的配置也报错了。有知道是怎么回事的可以留言讨论一下
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

54、Qt/对话框、事件机制相关学习20240325

一、完善对话框,点击登录按钮,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#…

四大AI神器,助你开启智慧家居新生活

曾经,人工智能还只是科幻电影里的未来幻想,而今,它已悄然融入我们生活的方方面面。不再只是工厂里的自动化手臂,或是电影中的情感机器人,AI技术已经走进了寻常百姓家,让家居生活也焕发出智慧的光彩。 想象…

并发-多线程

目录 进程 线程 线程的串行 区别 多线程 进程 是指计算机中已执行的程序,曾经是分时系统的基本运作单位在面向进程设计的系统(如早期的UNIX,Linux 2.4及更早的版本)中,是程序的基本执行实体在面向线程设计的系统…

【PL理论】(1) 语法与语义:归纳的定义 | 推理规则 | 推导树 | 数学归纳法证明 (MI)

💭 写在前面:在学习编程的过程中,我们经常会听到 "语法" 和 "语义" 这两个词,这对于理解和编写高质量的代码至关重要。在本博客中,我们将深入探讨这两个概念,从而帮助读者更好地理解编…

趣味算法,猴子算法。python如何实现猴子算法

给一只猴子一台打印机,虽然这只猴子根本不识字,但会乱按,经过一段时间后,在它乱按出来的单词里总能找到一些至少看起来是有意义的部分,比如一两个简短的单词,由此可以推出:只要给它足够长的时间…

vite+vue3动态模块化导入并使用pinia

一、安装引入pinia 1.安装 pnpm install pinia # 或者使用 yarn yarn add pinia # 或者使用 npm npm install pinia 2.在main.js里引入 import { createApp } from vue import App from ./App.vue import { createPinia } from pinia createApp(App).use(createPinia()).mo…

辽渤湾海现已加入2024第七届燕窝天然滋补品博览会

参展企业介绍 大连辽渤湾海产品有限公司,是一家主营海参、鲍鱼、海胆等大连海产品的加工和销售的综合型水产企业,拥有国内精良的整条加工流水线,拥有上千平米的现代化加工办公场地的现代化企业。现已发展成为大连海参产品的主导型深加工基地。…

如何清理释放群晖客户端缓存?

任正菲说:企业最大的浪费,是经验的浪费! 而一个一个的经验,又都来自企业的每一个工作者。 因此当我们在工作过程中遇到一些问题时,我们就应该下意识的把解决问题的经验沉淀下来,从而可以与大家进行分享。…

软件设计师19--文件管理

软件设计师19--文件管理 考点1:文件相关概念例题: 考点2:树形目录结构(绝对路径与相对路径)例题: 考点3:位示图例题: 考点4:索引文件索引文件结构例题: 考点1…

武汉星起航:跨境电商行业的领军者,互帮互助共创佳绩

武汉星起航电子商务有限公司,作为跨境电商行业的领军者,以其出色的业绩和卓越的团队实力,在业内赢得了广泛的赞誉。公司自运营团队在亚马逊平台上成功开设了多家店铺,凭借着深耕跨境电商行业多年所积累的经验,取得了令…

[自研开源] 数据集成之分批传输 v0.7

开源地址:gitee | github 详细介绍:MyData 基于 Web API 的数据集成平台 部署文档:用 Docker 部署 MyData 使用手册:MyData 使用手册 试用体验:https://demo.mydata.work 交流Q群:430089673 介绍 本篇基于…

面试笔记——Java集合篇

Java集合框架体系 重点:单列集合——ArrayList、LinkedList;双列集合——HashMap、ConcurrentHashMap。 List相关 数组(Array) 是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 数组获取其他元素: 为什…

为什么在vite中使用eslint报错‘__dirname‘ is not defined?

问题分析 发生这种情况是因为 ESLint 不知道 vite.config.js 中的代码在 Node.js 中使用,__dirname 未在浏览器中定义,也未在 ES 模块中定义。因此要告诉 ESLint 代码将作为 CommonJS 模块在 Node.js 中运行。 解决方案 请打开 ESLint 配置并在该 env …

关于 boost::asio::strand 初始化 socket、stream、resolver、deadline_timer 对象

在 boost::asio 之中默认情况下,大家使用 io_context 来为这些对象初始化传递的执行者,但我需要这里说明。 对于 boost::asio 构造类似 socket 对象必须构造传递 io_context 是个伪命题,boost::asio 对象并非只允许传递 boost::asio::io_cont…

pyrealsense2获取保存点云

一、第一种实现代码 Python import sys import cv2 import pyrealsense2 as rs import numpy as np import keyboard import open3d as o3d import osif __name__ "__main__":output_folder output_data/os.makedirs(output_folder, exist_okTrue)pipeline rs.p…

git cherry pick merge部分提交

cherry pick merge 指定某次提交 1. git history 选择要从哪个分支merge 2. 找到提交记录,选择cherry pick 3.这个时候就可以直接push了

【面试题】ES文档写入和读取流程详解

前言:在回答这个问题之前我们先要搞清楚一个问题那就是什么是文档,避免不知所云! 一、什么是文档? 在Elasticsearch中,文档(Document)是最基本的信息单元,用于表示和存储数据。文…

数据采集用,集成了主流工业通讯协议

IoTClient 是一个物联网设备通讯协议实现客户端,集成了主流工业通讯协议,包括主流PLC通信读取、ModBus协议、Bacnet协议等。该组件基于.NET Standard 2.0,适用于.NET的跨平台开发,可在Windows、Linux等系统上运行,甚至…

LinkedIn账号为什么被封?被封后如何解决?

近期会有一些小伙伴说自己遇到了帐号无法登录的情况,其实出现领英帐号被封号(被限制登录)主要会有两类情况,今天就给大家分享一下如果被封该如何解决,强烈建议收藏。 在电脑领英官网或者手机领英APP上,输入领英帐号密码点击登录后…

数据结构(五)单链表专题

在开始之前,我先来给大家讲一下顺序表与链表的区别: 它们在堆上存储的差异: 我们可以很容易的知道,循序表是连续的有序的,但链表是杂乱的,它们通过地址彼此联系起来。 1. 链表的概念及结构 概念&#xff1…