Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Different prefix version Numbers should be incremented simultaneously when called simultaneously #22

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ public class VersionNumberAction implements Action {
private VersionNumberBuildInfo info;
private String versionNumber;

public VersionNumberAction(VersionNumberBuildInfo info, String versionNumber) {
private String envPrefix;

public VersionNumberAction(VersionNumberBuildInfo info, String versionNumber, String envPrefix) {
this.info = info;
this.versionNumber = versionNumber;
this.envPrefix = envPrefix;
}

public VersionNumberBuildInfo getInfo() {
Expand All @@ -32,6 +35,13 @@ public String getIconFileName() {
public String getUrlName() {
return "versionnumber/displayName";
}



public String getEnvPrefix() {
return envPrefix;
}

public void setEnvPrefix(String envPrefix) {
this.envPrefix = envPrefix;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,12 @@ public String getEnvironmentVariableName() {
public String getEnvironmentPrefixVariable() {
return this.environmentPrefixVariable;
}
private Run getPreviousBuildWithVersionNumber(Run build, BuildListener listener) {

private Run getPreviousBuildWithVersionNumber(Run build, String envPrefix) {
return VersionNumberCommon.getPreviousBuildWithVersionNumber(build, envPrefix);
}

private String getEnvPrefix(Run build, BuildListener listener){
String envPrefix;

if (this.environmentPrefixVariable != null) {
Expand All @@ -220,15 +225,16 @@ private Run getPreviousBuildWithVersionNumber(Run build, BuildListener listener)
} else {
envPrefix = null;
}

return VersionNumberCommon.getPreviousBuildWithVersionNumber(build, envPrefix);
return envPrefix;
}

@SuppressWarnings("unchecked")
private VersionNumberBuildInfo incBuild(Run build, BuildListener listener) throws IOException, InterruptedException {
private VersionNumberBuildInfo incBuild(Run build, BuildListener listener, String envPrefix) throws IOException, InterruptedException {
EnvVars enVars = build.getEnvironment(listener);
Run prevBuild = getPreviousBuildWithVersionNumber(build, listener);
VersionNumberBuildInfo incBuildInfo = VersionNumberCommon.incBuild(build, enVars, prevBuild,
Run prevBuild = getPreviousBuildWithVersionNumber(build, envPrefix);

VersionNumberBuildInfo incBuildInfo = VersionNumberCommon.incBuild(build, enVars, prevBuild, envPrefix,
this.getWorstResultForIncrement(),
this.oBuildsToday,
this.oBuildsThisWeek,
Expand Down Expand Up @@ -312,13 +318,16 @@ private VersionNumberBuildInfo incBuild(Run build, BuildListener listener) throw
public Environment setUp(AbstractBuild build, Launcher launcher, BuildListener listener) {
String formattedVersionNumber = "";
try {
VersionNumberBuildInfo info = incBuild(build, listener);

String envPrefix = getEnvPrefix(build,listener);

VersionNumberBuildInfo info = incBuild(build, listener,envPrefix);
formattedVersionNumber = VersionNumberCommon.formatVersionNumber(this.versionNumberString,
this.projectStartDate,
info,
build.getEnvironment(listener),
build.getTimestamp());
build.addAction(new VersionNumberAction(info, formattedVersionNumber));
build.addAction(new VersionNumberAction(info, formattedVersionNumber, envPrefix));
if (useAsBuildDisplayName) {
build.setDisplayName(formattedVersionNumber);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
import java.util.logging.Logger;
import java.lang.invoke.MethodHandles;

import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;

import hudson.EnvVars;
import hudson.model.Action;
import hudson.model.Result;
import hudson.model.Run;

Expand All @@ -32,14 +35,14 @@ public class VersionNumberCommon {
public static final String ENV_VAR_PATTERN = "^(?:\\$\\{(\\w+)\\})|(?:\\$(\\w+))$";

public static VersionNumberBuildInfo incBuild(Run build, EnvVars vars,
Run prevBuild, Result worstResultForIncrement, String overrideBuildsToday, String overrideBuildsThisWeek,
String overrideBuildsThisMonth, String overrideBuildsThisYear, String overrideBuildsAllTime) {
int buildsToday = new BuildsTodayGenerator().getNextNumber(build, vars, prevBuild, worstResultForIncrement, overrideBuildsToday);
int buildsThisWeek = new BuildsThisWeekGenerator().getNextNumber(build, vars, prevBuild, worstResultForIncrement, overrideBuildsThisWeek);
int buildsThisMonth = new BuildsThisMonthGenerator().getNextNumber(build, vars, prevBuild, worstResultForIncrement, overrideBuildsThisMonth);
int buildsThisYear = new BuildsThisYearGenerator().getNextNumber(build, vars, prevBuild, worstResultForIncrement, overrideBuildsThisYear);
int buildsAllTime = new BuildsAllTimeGenerator().getNextNumber(build, vars, prevBuild, worstResultForIncrement, overrideBuildsAllTime);
Run prevBuild, String envPrefix, Result worstResultForIncrement, String overrideBuildsToday, String overrideBuildsThisWeek,
String overrideBuildsThisMonth, String overrideBuildsThisYear, String overrideBuildsAllTime) {
int buildsToday = new BuildsTodayGenerator().getNextNumber(build, vars, prevBuild, envPrefix,worstResultForIncrement, overrideBuildsToday);
int buildsThisWeek = new BuildsThisWeekGenerator().getNextNumber(build, vars, prevBuild, envPrefix,worstResultForIncrement, overrideBuildsThisWeek);
int buildsThisMonth = new BuildsThisMonthGenerator().getNextNumber(build, vars, prevBuild, envPrefix,worstResultForIncrement, overrideBuildsThisMonth);
int buildsThisYear = new BuildsThisYearGenerator().getNextNumber(build, vars, prevBuild, envPrefix,worstResultForIncrement, overrideBuildsThisYear);
int buildsAllTime = new BuildsAllTimeGenerator().getNextNumber(build, vars, prevBuild, envPrefix,worstResultForIncrement, overrideBuildsAllTime);

return new VersionNumberBuildInfo(buildsToday, buildsThisWeek, buildsThisMonth, buildsThisYear, buildsAllTime);
}
Expand All @@ -49,9 +52,27 @@ public static Run getPreviousBuildWithVersionNumber(Run build, String envPrefix)
Run prevBuild = build.getPreviousBuild();

while (prevBuild != null) {
VersionNumberAction prevAction = (VersionNumberAction)prevBuild.getAction(VersionNumberAction.class);

if (prevAction == null)
// VersionNumberAction prevAction = (VersionNumberAction)prevBuild.getAction(VersionNumberAction.class);
// prevAction = (VersionNumberAction)prevBuild.getAction(VersionNumberAction.class);
// 改为获取所有的VersionNumberAction
for (Action a : prevBuild.getAllActions()) {
if (!VersionNumberAction.class.isInstance(a) || a == null) {
continue;
}
VersionNumberAction prevAction = VersionNumberAction.class.cast(a);

if (envPrefix != null) {
if (envPrefix.equals(prevAction.getEnvPrefix())) {
LOGGER.info("Previous build's version-number: '" + prevAction.getVersionNumber() + "'");
return prevBuild;
}
} else if(envPrefix == null && prevAction.getEnvPrefix() == null){
LOGGER.info("Previous build's version-number: '" + prevAction.getVersionNumber() + "'");
return prevBuild;
}
}

/*if (prevAction == null)
LOGGER.fine("prevAction.getVersionNumber() : 'null'");
else
LOGGER.fine("prevAction.getVersionNumber() : '" + prevAction.getVersionNumber() + "'");
Expand All @@ -68,7 +89,7 @@ public static Run getPreviousBuildWithVersionNumber(Run build, String envPrefix)
LOGGER.info("Previous build's version-number: '" + prevAction.getVersionNumber() + "'");
return prevBuild;
}
}
}*/

prevBuild = prevBuild.getPreviousBuild();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import org.jenkinsci.plugins.workflow.steps.AbstractStepDescriptorImpl;
import org.jenkinsci.plugins.workflow.steps.AbstractSynchronousStepExecution;
import org.jenkinsci.plugins.workflow.steps.StepContextParameter;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;

Expand Down Expand Up @@ -176,8 +175,10 @@ public static class Execution extends AbstractSynchronousStepExecution<String> {
protected String run() throws Exception {
if (step.versionNumberString != null) {
try {
VersionNumberAction prevAction=null;

Run prevBuild = VersionNumberCommon.getPreviousBuildWithVersionNumber(run, step.versionPrefix);
VersionNumberBuildInfo info = VersionNumberCommon.incBuild(run, env, prevBuild,
VersionNumberBuildInfo info = VersionNumberCommon.incBuild(run, env, prevBuild, step.versionPrefix,
step.getWorstResultForIncrement(),
step.overrideBuildsToday,
step.overrideBuildsThisWeek,
Expand All @@ -200,7 +201,7 @@ protected String run() throws Exception {
if (step.versionPrefix != null) {
formattedVersionNumber = step.versionPrefix + formattedVersionNumber;
}
run.addAction(new VersionNumberAction(info, formattedVersionNumber));
run.addAction(new VersionNumberAction(info, formattedVersionNumber,step.versionPrefix));
return formattedVersionNumber;
} catch (Exception e) {
}
Expand Down