jenkins运行python脚本,失败,以在jenlins配置python变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins运行python脚本,失败,以在jenlins配置python变量?相关的知识,希望对你有一定的参考价值。

python脚本再 VScode中运行是成功的

参考技术A 报错是找不到chrome驱动吧,你看下驱动放哪里,或指定驱动位置试试看追问

chrome的驱动插件是在python下放着呢,指定驱动位置怎么指定,一个月前就这样运行还可以的,现在还是这样运行的,不知道为啥就不行了,在VScode运行的结果都是对的,用jenkins调用执行就不行了呢

追答

webdriver.Chrome("Chrome驱动路径")

追问

应该给驱动没有关系,我一个月前在jenkins上部署的代码现在还能运行呢,用的都是同样的工具,语言,浏览器,

追答

这就是说你的环境不一样吧,你有试过指定路径没

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?

我有一个python脚本解析项目目录中的所有C ++源文件,在文件中查找一些东西,然后生成一个文件。这个python脚本工作正常,但我希望它在构建我的C ++项目之前自动运行。

所以基本上,我希望这个python脚本在每次构建之前运行,所以如果任何.h或.cpp文件已被更改。如果python脚本本身已被更改,我也希望它运行。我有问题的python脚本,genenums.py,与我的C ++源文件(如main.cpp等)在同一目录中。

我已经尝试过基于文档的add_custom_command实验,但我不能让cmake在任何实例中运行这个python脚本。我不确定如何使这项工作正确,因为我是cmake的新手。

这是我当前的cmake文件:

cmake_minimum_required(VERSION 3.9)
project(enum_test)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

find_package( PythonInterp 2.7 REQUIRED )
find_package( PythonLibs 2.7 REQUIRED )

add_custom_command(
 COMMAND ${PYTHON_EXECUTABLE} genenums.py
 DEPENDS genenums.py $(CMAKE_CURRENT_BINARY_DIR)
 OUTPUT enums.h
 WORKING_DIRECTORY $(CMAKE_CURRENT_BINARY_DIR)
 COMMENT "Generating enums"
)

add_executable(enum_test main.cpp test.h test.cpp)
答案

好吧,我有一个万无一失的,非丑陋的方式让cmake在构建构建依赖项之前运行任何类型的命令,等待命令在构建之前完成。

add_custom_target(
 run ALL
 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/genenums.py ${CMAKE_CURRENT_SOURCE_DIR}
 BYPRODUCTS enums.h
 COMMENT "Generating enums"
)

add_dependencies(enum_test run)

两个关键部分是add_custom_targetadd_dependencies,两者都需要完成这项工作。将add_executable放在CMakeLists.txt之后。 enum_test指的是由add_executable(列表中的第一个名字)创建的目标,因此您可以将其设置为项目的名称。

您可以通过将runrun中的add_custom_target更改为其他内容,将自定义目标命名为您喜欢的任何内容(我在这里使用add_dependencies)。

add_custom_target还有一个额外的捕获... WORKING_DIRECTORY对我的python脚本没有任何作用。即使我试图将WORKING_DIRECTORY设置为${CMAKE_CURRENT_SOURCE_DIR},该脚本仍然在默认的${CMAKE_CURRENT_BINARY_DIR}中执行。

因此,对于这一个问题,您使用的任何命令都需要能够获取${CMAKE_CURRENT_SOURCE_DIR}的命令行参数并使用它在源目录中正确运行(假设这是您的目标)。这就是为什么我在这一行的末尾有${CMAKE_CURRENT_SOURCE_DIR}

 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/genenums.py ${CMAKE_CURRENT_SOURCE_DIR}

这是完整的CMakeLists.txt与工作设置,应该很容易适应任何特定项目的CMakeLists.txt

cmake_minimum_required(VERSION 3.9)
project(enum_test)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

find_package( PythonInterp 2.7 REQUIRED )

add_executable(enum_test enums.h main.cpp test.h test.cpp)

add_custom_target(
 run ALL
 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/genenums.py ${CMAKE_CURRENT_SOURCE_DIR}
 BYPRODUCTS enums.h
 COMMENT "Generating enums"
)

add_dependencies(enum_test run)

以上是关于jenkins运行python脚本,失败,以在jenlins配置python变量?的主要内容,如果未能解决你的问题,请参考以下文章

配置 Jenkins 以在 Linux 平台上运行 MSBuild

jenkins构建python测试脚本失败

如何设置 Python 脚本以在 Apache 2.0 中工作?

脚本在Windows中运行但在Jenkins中失败

Jenkins运行python脚本报错

如何在没有远程桌面连接的 jenkins windows slave 上运行 GUI 测试?