下面列出了hudson.model.AbstractBuild#getAction ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Construct a FlakyTestResultAction object with Run and BuildListener
*
* @param build this build
* @param listener listener of this build
*/
public FlakyTestResultAction(AbstractBuild build, Launcher launcher, TaskListener listener) throws IOException, InterruptedException {
this.build = build;
// TODO consider the possibility that there is >1 such action
AbstractTestResultAction action = build.getAction(AbstractTestResultAction.class);
if (action != null) {
Object latestResult = action.getResult();
if (latestResult != null && latestResult instanceof TestResult) {
VirtualChannel channel = launcher.getChannel();
if(channel == null) {
throw new InterruptedException("Could not get channel to run a program remotely.");
}
FlakyTestResult flakyTestResult = channel.call(new FlakyTestResultCollector((TestResult) latestResult));
flakyTestResult.freeze(action, build);
FlakyRunStats stats = new FlakyRunStats(flakyTestResult.getTestFlakyStatsMap());
setFlakyRunStats(stats, listener);
}
} else {
logger.log(Level.WARNING, "No test result found, please publish junit report first");
}
}
@VisibleForTesting
static String getAbortOnRevisionId(AbstractBuild build) {
ParametersAction parameters = build.getAction(ParametersAction.class);
if (parameters != null) {
ParameterValue parameterValue = parameters.getParameter(
PhabricatorPlugin.ABORT_ON_REVISION_ID_FIELD);
if (parameterValue != null) {
return (String) parameterValue.getValue();
}
}
return null;
}
@VisibleForTesting
static Run<?, ?> getUpstreamRun(AbstractBuild build) {
CauseAction action = build.getAction(hudson.model.CauseAction.class);
if (action != null) {
Cause.UpstreamCause upstreamCause = action.findCause(hudson.model.Cause.UpstreamCause.class);
if (upstreamCause != null) {
return upstreamCause.getUpstreamRun();
}
}
return null;
}
/**
* Returns the AWS Device Farm test run action from the most recent build.
*
* @param project The Jenkins project which contains builds/runs to examine.
* @return The previous Device Farm build result action.
*/
public static AWSDeviceFarmTestResultAction previousAWSDeviceFarmBuildAction(AbstractProject<?, ?> project) {
AbstractBuild<?, ?> build = AWSDeviceFarmUtils.previousAWSDeviceFarmBuild(project);
if (build == null) {
return null;
}
return build.getAction(AWSDeviceFarmTestResultAction.class);
}
/**
* Returns the most recent build which contained an AWS Device Farm test run.
*
* @param project The Jenkins project which contains runs to examine.
* @return The previous Device Farm build.
*/
public static AbstractBuild<?, ?> previousAWSDeviceFarmBuild(AbstractProject<?, ?> project) {
AbstractBuild<?, ?> last = project.getLastBuild();
while (last != null) {
if (last.getAction(AWSDeviceFarmTestResultAction.class) != null) {
break;
}
last = last.getPreviousBuild();
}
return last;
}
/**
* Return collection of all previous builds of the given project which contain an AWS Device Farm test run.
*
* @param project The Jenkins project which contains runs to examine.
* @return The previous Device Farm builds.
*/
public static ArrayList<AWSDeviceFarmTestResultAction> previousAWSDeviceFarmBuilds(AbstractProject<?, ?> project) {
ArrayList<AWSDeviceFarmTestResultAction> actions = new ArrayList<AWSDeviceFarmTestResultAction>();
AbstractBuild<?, ?> build = project.getLastBuild();
while (build != null) {
AWSDeviceFarmTestResultAction action = build.getAction(AWSDeviceFarmTestResultAction.class);
if (action != null) {
actions.add(action);
}
build = build.getPreviousBuild();
}
return actions;
}