首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成参数仅在步骤前使用。

生成参数仅在步骤前使用。
EN

Stack Overflow用户
提问于 2014-06-22 20:04:04
回答 2查看 1.1K关注 0票数 0

我已经为Jenkins作业定义了SELENIUM_SERVER字符串参数。

该工作还具有预构建步骤:

调用顶级Maven目标

install -Dproject.build.sourceEncoding=Cp1252

和构建步骤,该步骤还调用具有以下目标的Maven

test -DseleniumServer=${SELENIUM_SERVER}

但是,当我运行作业时,该参数似乎只在运行预构建步骤的阶段使用,而在构建步骤阶段则被忽略。

日志显示如下:

[Automation] $ /home/build/tools/hudson.tasks.Maven_MavenInstallation/Maven_3/bin/mvn -DSELENIUM_SERVER=<server1> install

..。以及在test上下文中没有提到的参数。

这导致了例外情况:

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

如果删除预生成步骤,则参数将正确应用于生成步骤。

如何使参数应用到生成步骤,而不仅仅是预构建步骤?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-25 11:39:53

从您的问题中,我认为installtest被配置为两个不同的构建步骤。如果你看一下Maven生命周期,你会发现install先于test"if you call a build phase, it will execute not only that build phase, but also every build phase prior to the called build phase"

因此,通过运行您的第一个目标install,将运行整个默认生命周期,包括测试。因为您没有为它失败而指定参数,而且由于它失败了,所以test的第二个目标甚至没有执行。错误是在第一个目标期间抛出的,而不是在第二个目标中抛出的。

票数 1
EN

Stack Overflow用户

发布于 2014-07-01 08:58:03

如果没有看到您确切的Jenkins配置,可能很难找到一个精确的答案,但我想我知道答案是什么。

Jenkins通常不知道构建步骤实际执行与否。它只会召唤他们。

当日志发出步骤时,您应该能够显式地在日志中看到。我注意到您显示的日志消息来自于预构建步骤,而不是构建步骤。

代码语言:javascript
运行
复制
[Automation] $ /home/build/tools/hudson.tasks.Maven_MavenInstallation/Maven_3/bin/mvn 
-DSELENIUM_SERVER=<server1> install

然而,这一论点似乎是出于某种原因而在这里适用的。这通常意味着它使用该选项运行整个maven构建(包括测试),您可能会成功完成第一个maven作业。

但你说你在第二步就失败了?

在jenkins中设置maven目标时,可以指定一些选项(参见高级)

  • 目标是,
  • POM和
  • 性质

确保在预构建步骤下,以install为目标,并将属性部分与

代码语言:javascript
运行
复制
project.build.sourceEncoding=Cp1252

在另一条线上。这些内容将被转换为-D指令。

日志仍应显示一行

代码语言:javascript
运行
复制
mvn -Dproject.build.sourceEncoding=Cp1252 install 

再没有比这更多了。

在构建步骤下,确保目标是test,并且属性部分只包含

代码语言:javascript
运行
复制
seleniumServer=${SELENIUM_SERVER}

这应该转化为

代码语言:javascript
运行
复制
mvn -DseleniumServer=server1 test

注意,正如Andre所说,如果mvn测试插件已经运行,它可能不会再次运行。但你的说法似乎与安德烈斯的回答相矛盾。

如果您认为Jenkins在转换属性时确实遇到了困难,那么可以尝试在不使用Maven的情况下为调试目的提出一些更基本的任务,例如execute shell,并在构建或预构建中执行echo ${SELENIUM_SERVER},以查看Jenkins到底做了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档