我正在寻找一种方法来更新Jenkins中的路径,以便使用PyTest运行Selenium测试。我需要运行最新版本的chromedriver,但由于基础架构的不足(我们的基础映像运行的是Debian,最新的可用版本是73,我需要至少运行83)。位于/usr/bin的映像上已经安装了chromedriver的一个版本,我需要能够指向其他版本
jenkins chromedriver插件似乎只会使用debian可用的最新版本,这对我一点帮助都没有。
在我有时间解决系统问题之前,我只想安装chromedriver并更新PATH -因为Selenium需要在PATH上安装chromedriver
为了便于使用,https://pypi.org/project/chromedriver-binary/似乎是一个很好的解决方案--它安装得很好,而且chromedriver-path脚本会响应这个位置,所以我可以像文档中显示的那样更新路径:PATH=$PATH:chromedriver-path
这在Jenkins中似乎并不靠谱-- PATH没有更新
stages {
stage('build'){
steps {
withCredentials([...]) {
sh """
alias python=python3.8
python -m venv --system-site-packages venv # only for jenkins
python -u setup.py
. venv/bin/activate
which chromedriver #/usr/bin/chromedriver
chromedriver-path #path/to/python/lib/python3.8/site-packages/chromedriver_binary
export PATH=$PATH:`chromedriver-path`
which chromedriver #/usr/bin/chromedriver
"""
sh "python -m pytest"
}
}
}
}我已经研究了withEnv()选项和environment{}步骤,但我不确定如何访问该二进制文件并在设置chromedriver-binary后更新PATH -因为environment{}似乎无法访问安装在各个步骤中的shell脚本。
任何建议我们都将不胜感激。
发布于 2020-12-01 04:16:58
这个问题实际上可能存在于Jenkinsfile声明中。
尝试使用带有单引号'''的sh。此外,二进制文件是从左到右在PATH中定义的目录中搜索的,因此要覆盖系统PATH,您必须将目录放在开头,而不是结尾。
如果我修改你的代码片段:
stages {
stage('build'){
steps {
withCredentials([...]) {
sh '''
alias python=python3.8
python -m venv --system-site-packages venv # only for jenkins
python -u setup.py
. venv/bin/activate
which chromedriver #/usr/bin/chromedriver
chromedriver-path #path/to/python/lib/python3.8/site-packages/chromedriver_binary
export PATH=$(chromedriver-path):$PATH
echo $PATH # just to check the output, your path should be on the beginning
which chromedriver # this should now find the proper chromedriver
'''
sh "python -m pytest"
}
}
}
}https://stackoverflow.com/questions/65080079
复制相似问题