Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
7e1fc28c
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7e1fc28c
编写于
9月 28, 2013
作者:
O
Oliver Gondža
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #799 from imod/JENKINS-17555
上级
3a52e3c7
32b53335
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
150 addition
and
0 deletion
+150
-0
maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
...lugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
+7
-0
test/src/test/java/hudson/maven/MavenEnvironmentContributingActionTest.java
.../hudson/maven/MavenEnvironmentContributingActionTest.java
+143
-0
未找到文件。
maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
浏览文件 @
7e1fc28c
...
...
@@ -40,6 +40,7 @@ import hudson.model.AbstractProject;
import
hudson.model.Action
;
import
hudson.model.Build
;
import
hudson.model.BuildListener
;
import
hudson.model.EnvironmentContributingAction
;
import
hudson.model.Cause.UpstreamCause
;
import
hudson.model.Computer
;
import
hudson.model.Environment
;
...
...
@@ -634,6 +635,12 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
}
buildEnvironments
.
add
(
e
);
e
.
buildEnvVars
(
envVars
);
// #3502: too late for getEnvironment to do this
Collection
<?
extends
Action
>
actionsFromWrapper
=
w
.
getProjectActions
(
project
);
for
(
Action
action
:
actionsFromWrapper
)
{
if
(
action
instanceof
EnvironmentContributingAction
){
// #17555
((
EnvironmentContributingAction
)
action
).
buildEnvVars
(
MavenModuleSetBuild
.
this
,
envVars
);
}
}
}
// run pre build steps
...
...
test/src/test/java/hudson/maven/MavenEnvironmentContributingActionTest.java
0 → 100644
浏览文件 @
7e1fc28c
package
hudson.maven
;
import
hudson.EnvVars
;
import
hudson.Extension
;
import
hudson.Launcher
;
import
hudson.model.Action
;
import
hudson.model.BuildListener
;
import
hudson.model.EnvironmentContributingAction
;
import
hudson.model.InvisibleAction
;
import
hudson.model.Result
;
import
hudson.model.AbstractBuild
;
import
hudson.model.AbstractProject
;
import
hudson.model.Cause
;
import
hudson.tasks.BuildWrapper
;
import
hudson.tasks.BuildWrapperDescriptor
;
import
hudson.util.ArgumentListBuilder
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.Collections
;
import
net.sf.json.JSONObject
;
import
org.junit.Assert
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.Bug
;
import
org.jvnet.hudson.test.ExtractResourceSCM
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
org.kohsuke.stapler.StaplerRequest
;
/**
* This test case verifies that a maven build also takes EnvironmentContributingAction into account to resolve variables on the command line
*
* @see EnvironmentContributingAction
* @author Dominik Bartholdi (imod)
*/
public
class
MavenEnvironmentContributingActionTest
{
@Rule
public
JenkinsRule
j
=
new
JenkinsRule
();
@Test
@Bug
(
17555
)
public
void
envVariableFromEnvironmentContributingActionMustBeAvailableInMavenModuleSetBuild
()
throws
Exception
{
j
.
jenkins
.
getInjector
().
injectMembers
(
this
);
final
MavenModuleSet
p
=
j
.
createMavenProject
(
"mvn"
);
p
.
setMaven
(
j
.
configureMaven3
().
getName
());
p
.
setScm
(
new
ExtractResourceSCM
(
getClass
().
getResource
(
"maven3-project.zip"
)));
p
.
setGoals
(
"initialize -Dval=${KEY}"
);
p
.
getBuildWrappersList
().
add
(
new
TestMvnBuildWrapper
(
"-Dval=MY_VALUE"
));
j
.
assertBuildStatus
(
Result
.
SUCCESS
,
p
.
scheduleBuild2
(
0
,
new
Cause
.
UserIdCause
()).
get
());
}
/**
* This action contributes env variables
*/
private
static
final
class
TestAction
extends
InvisibleAction
implements
EnvironmentContributingAction
{
private
final
String
key
,
value
;
public
TestAction
(
String
key
,
String
value
)
{
this
.
key
=
key
;
this
.
value
=
value
;
}
@Override
public
void
buildEnvVars
(
AbstractBuild
<?,
?>
arg0
,
EnvVars
vars
)
{
vars
.
put
(
key
,
value
);
}
}
/**
* This action verifies that the variable in the maven arguments got replaced
*/
private
static
class
MvnCmdLineVerifier
extends
InvisibleAction
implements
MavenArgumentInterceptorAction
{
private
String
containsString
;
public
MvnCmdLineVerifier
(
String
containsString
)
{
this
.
containsString
=
containsString
;
}
@Override
public
ArgumentListBuilder
intercept
(
ArgumentListBuilder
cli
,
MavenModuleSetBuild
arg1
)
{
String
all
=
cli
.
toString
();
Assert
.
assertTrue
(
containsString
+
" was not found in the goals arguments"
,
all
.
contains
(
containsString
));
return
cli
;
}
@Override
public
String
getGoalsAndOptions
(
MavenModuleSetBuild
arg0
)
{
return
null
;
}
}
/**
* This wrapper adds a EnvironmentContributingAction to the build (see TestAction) and also adds the MvnCmdLineVerifier to the build to test whether the variable really got replaced
*/
public
static
class
TestMvnBuildWrapper
extends
BuildWrapper
{
private
String
containsString
;
public
TestMvnBuildWrapper
(
String
expectedString
)
{
this
.
containsString
=
expectedString
;
}
@Override
public
Collection
<?
extends
Action
>
getProjectActions
(
AbstractProject
job
)
{
return
Collections
.
singletonList
(
new
TestAction
(
"KEY"
,
"MY_VALUE"
));
}
@Override
public
Environment
setUp
(
AbstractBuild
build
,
Launcher
launcher
,
BuildListener
listener
)
throws
IOException
,
InterruptedException
{
build
.
addAction
(
new
MvnCmdLineVerifier
(
containsString
));
return
new
BuildWrapper
.
Environment
()
{
};
}
@Extension
public
static
class
TestMvnBuildWrapperDescriptor
extends
BuildWrapperDescriptor
{
@Override
public
boolean
isApplicable
(
AbstractProject
<?,
?>
project
)
{
return
true
;
}
@Override
public
BuildWrapper
newInstance
(
StaplerRequest
req
,
JSONObject
formData
)
{
throw
new
UnsupportedOperationException
();
}
@Override
public
String
getDisplayName
()
{
return
this
.
getClass
().
getName
();
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录