Use build spec instead of ci spec

This commit is contained in:
Robin Shen 2019-11-27 19:55:42 +08:00
parent c1c69dd801
commit 698261f2e2
188 changed files with 775 additions and 700 deletions

View File

@ -72,17 +72,17 @@ import io.onedev.commons.launcher.loader.ImplementationProvider;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.commons.utils.schedule.DefaultTaskScheduler; import io.onedev.commons.utils.schedule.DefaultTaskScheduler;
import io.onedev.commons.utils.schedule.TaskScheduler; import io.onedev.commons.utils.schedule.TaskScheduler;
import io.onedev.server.buildspec.job.DefaultJobManager;
import io.onedev.server.buildspec.job.JobManager;
import io.onedev.server.buildspec.job.log.DefaultLogManager;
import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.buildspec.job.log.instruction.LogInstruction;
import io.onedev.server.cache.CodeCommentRelationInfoManager; import io.onedev.server.cache.CodeCommentRelationInfoManager;
import io.onedev.server.cache.CommitInfoManager; import io.onedev.server.cache.CommitInfoManager;
import io.onedev.server.cache.DefaultCodeCommentRelationInfoManager; import io.onedev.server.cache.DefaultCodeCommentRelationInfoManager;
import io.onedev.server.cache.DefaultCommitInfoManager; import io.onedev.server.cache.DefaultCommitInfoManager;
import io.onedev.server.cache.DefaultUserInfoManager; import io.onedev.server.cache.DefaultUserInfoManager;
import io.onedev.server.cache.UserInfoManager; import io.onedev.server.cache.UserInfoManager;
import io.onedev.server.ci.job.DefaultJobManager;
import io.onedev.server.ci.job.JobManager;
import io.onedev.server.ci.job.log.DefaultLogManager;
import io.onedev.server.ci.job.log.LogManager;
import io.onedev.server.ci.job.log.instruction.LogInstruction;
import io.onedev.server.entitymanager.BuildDependenceManager; import io.onedev.server.entitymanager.BuildDependenceManager;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildParamManager; import io.onedev.server.entitymanager.BuildParamManager;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci; package io.onedev.server.buildspec;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
@ -20,12 +20,12 @@ import com.google.common.base.Charsets;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobDependency; import io.onedev.server.buildspec.job.JobDependency;
import io.onedev.server.ci.job.action.PostBuildAction; import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.retrycondition.RetryCondition; import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.trigger.JobTrigger; import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.migration.VersionedDocument; import io.onedev.server.migration.VersionedDocument;
import io.onedev.server.util.validation.Validatable; import io.onedev.server.util.validation.Validatable;
import io.onedev.server.util.validation.annotation.ClassValidating; import io.onedev.server.util.validation.annotation.ClassValidating;
@ -33,13 +33,13 @@ import io.onedev.server.web.editable.annotation.Editable;
@Editable @Editable
@ClassValidating @ClassValidating
public class CISpec implements Serializable, Validatable { public class BuildSpec implements Serializable, Validatable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(CISpec.class); private static final Logger logger = LoggerFactory.getLogger(BuildSpec.class);
public static final String BLOB_PATH = "onedev-ci.xml"; public static final String BLOB_PATH = ".onedev-buildspec";
private List<Job> jobs = new ArrayList<>(); private List<Job> jobs = new ArrayList<>();
@ -183,13 +183,13 @@ public class CISpec implements Serializable, Validatable {
} }
@Nullable @Nullable
public static CISpec parse(byte[] bytes) { public static BuildSpec parse(byte[] bytes) {
String ciSpecString = new String(bytes, Charsets.UTF_8); String buildSpecString = new String(bytes, Charsets.UTF_8);
if (StringUtils.isNotBlank(ciSpecString)) { if (StringUtils.isNotBlank(buildSpecString)) {
try { try {
return (CISpec) VersionedDocument.fromXML(ciSpecString).toBean(); return (BuildSpec) VersionedDocument.fromXML(buildSpecString).toBean();
} catch (Exception e) { } catch (Exception e) {
throw new InvalidCISpecException("Invalid CI spec", e); throw new InvalidBuildSpecException("Invalid build spec", e);
} }
} else { } else {
return null; return null;

View File

@ -0,0 +1,10 @@
package io.onedev.server.buildspec;
import javax.annotation.Nullable;
public interface BuildSpecAware {
@Nullable
BuildSpec getBuildSpec();
}

View File

@ -0,0 +1,13 @@
package io.onedev.server.buildspec;
import io.onedev.server.OneException;
public class InvalidBuildSpecException extends OneException {
private static final long serialVersionUID = 1L;
public InvalidBuildSpecException(String message, Throwable cause) {
super(message, cause);
}
}

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.concurrent.CancellationException; import java.util.concurrent.CancellationException;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
@ -52,15 +52,15 @@ import io.onedev.commons.utils.MatrixRunner;
import io.onedev.k8shelper.CacheInstance; import io.onedev.k8shelper.CacheInstance;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.job.action.PostBuildAction; import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.ci.job.action.condition.ActionCondition; import io.onedev.server.buildspec.job.action.condition.ActionCondition;
import io.onedev.server.ci.job.log.LogManager; import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramspec.SecretParam; import io.onedev.server.buildspec.job.paramspec.SecretParam;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.retrycondition.RetryCondition; import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.trigger.JobTrigger; import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildParamManager; import io.onedev.server.entitymanager.BuildParamManager;
import io.onedev.server.entitymanager.ProjectManager; import io.onedev.server.entitymanager.ProjectManager;
@ -568,9 +568,9 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
if (!commitId.equals(ObjectId.zeroId())) { if (!commitId.equals(ObjectId.zeroId())) {
ScriptIdentity.push(new JobIdentity(event.getProject(), commitId)); ScriptIdentity.push(new JobIdentity(event.getProject(), commitId));
try { try {
CISpec ciSpec = event.getProject().getCISpec(commitId); BuildSpec buildSpec = event.getProject().getBuildSpec(commitId);
if (ciSpec != null) { if (buildSpec != null) {
for (Job job: ciSpec.getJobs()) { for (Job job: buildSpec.getJobs()) {
JobTrigger trigger = job.getMatchedTrigger(event); JobTrigger trigger = job.getMatchedTrigger(event);
if (trigger != null) { if (trigger != null) {
Map<String, List<List<String>>> paramMatrix = ParamSupply.getParamMatrix(trigger.getParams()); Map<String, List<List<String>>> paramMatrix = ParamSupply.getParamMatrix(trigger.getParams());

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import static io.onedev.server.search.entity.EntityQuery.quote; import static io.onedev.server.search.entity.EntityQuery.quote;
import static io.onedev.server.search.entity.build.BuildQuery.getRuleName; import static io.onedev.server.search.entity.build.BuildQuery.getRuleName;
@ -24,12 +24,12 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.CISpecAware; import io.onedev.server.buildspec.BuildSpecAware;
import io.onedev.server.ci.job.action.PostBuildAction; import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.trigger.JobTrigger; import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.model.Project; import io.onedev.server.model.Project;
import io.onedev.server.util.ComponentContext; import io.onedev.server.util.ComponentContext;
@ -465,11 +465,11 @@ public class Job implements Serializable, Validatable {
public static List<String> getChoices() { public static List<String> getChoices() {
List<String> choices = new ArrayList<>(); List<String> choices = new ArrayList<>();
Component component = ComponentContext.get().getComponent(); Component component = ComponentContext.get().getComponent();
CISpecAware ciSpecAware = WicketUtils.findInnermost(component, CISpecAware.class); BuildSpecAware buildSpecAware = WicketUtils.findInnermost(component, BuildSpecAware.class);
if (ciSpecAware != null) { if (buildSpecAware != null) {
CISpec ciSpec = ciSpecAware.getCISpec(); BuildSpec buildSpec = buildSpecAware.getBuildSpec();
if (ciSpec != null) { if (buildSpec != null) {
for (Job eachJob: ciSpec.getJobs()) { for (Job eachJob: buildSpec.getJobs()) {
if (eachJob.getName() != null) if (eachJob.getName() != null)
choices.add(eachJob.getName()); choices.add(eachJob.getName());
} }

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.File; import java.io.File;
import java.util.Collection; import java.util.Collection;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
@ -8,10 +8,10 @@ import org.apache.wicket.Component;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.CISpecAware; import io.onedev.server.buildspec.BuildSpecAware;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.util.ComponentContext; import io.onedev.server.util.ComponentContext;
import io.onedev.server.util.EditContext; import io.onedev.server.util.EditContext;
import io.onedev.server.web.editable.annotation.ChoiceProvider; import io.onedev.server.web.editable.annotation.ChoiceProvider;
@ -97,11 +97,11 @@ public class JobDependency implements Serializable {
String jobName = (String) EditContext.get().getInputValue("jobName"); String jobName = (String) EditContext.get().getInputValue("jobName");
if (jobName != null) { if (jobName != null) {
Component component = ComponentContext.get().getComponent(); Component component = ComponentContext.get().getComponent();
CISpecAware ciSpecAware = WicketUtils.findInnermost(component, CISpecAware.class); BuildSpecAware buildSpecAware = WicketUtils.findInnermost(component, BuildSpecAware.class);
if (ciSpecAware != null) { if (buildSpecAware != null) {
CISpec ciSpec = ciSpecAware.getCISpec(); BuildSpec buildSpec = buildSpecAware.getBuildSpec();
if (ciSpec != null) { if (buildSpec != null) {
Job job = ciSpec.getJobMap().get(jobName); Job job = buildSpec.getJobMap().get(jobName);
if (job != null) if (job != null)
return job.getParamSpecs(); return job.getParamSpecs();
} }

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import javax.annotation.Nullable; import javax.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.File; import java.io.File;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.Collection; import java.util.Collection;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job; package io.onedev.server.buildspec.job;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -9,7 +9,7 @@ import java.util.function.Function;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.util.GroovyUtils; import io.onedev.server.util.GroovyUtils;
import io.onedev.server.util.Input; import io.onedev.server.util.Input;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action; package io.onedev.server.buildspec.job.action;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -14,8 +14,8 @@ import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.IssueManager; import io.onedev.server.entitymanager.IssueManager;
import io.onedev.server.entitymanager.SettingManager; import io.onedev.server.entitymanager.SettingManager;
@ -139,8 +139,8 @@ public class CreateIssueAction extends PostBuildAction {
} }
@Override @Override
public void validateWithContext(CISpec ciSpec, Job job) { public void validateWithContext(BuildSpec buildSpec, Job job) {
super.validateWithContext(ciSpec, job); super.validateWithContext(buildSpec, job);
GlobalIssueSetting issueSetting = OneDev.getInstance(SettingManager.class).getIssueSetting(); GlobalIssueSetting issueSetting = OneDev.getInstance(SettingManager.class).getIssueSetting();
try { try {

View File

@ -1,11 +1,11 @@
package io.onedev.server.ci.job.action; package io.onedev.server.buildspec.job.action;
import java.io.Serializable; import java.io.Serializable;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.web.editable.annotation.ActionCondition; import io.onedev.server.web.editable.annotation.ActionCondition;
import io.onedev.server.web.editable.annotation.Editable; import io.onedev.server.web.editable.annotation.Editable;
@ -32,9 +32,9 @@ public abstract class PostBuildAction implements Serializable {
public abstract String getDescription(); public abstract String getDescription();
public void validateWithContext(CISpec ciSpec, Job job) { public void validateWithContext(BuildSpec buildSpec, Job job) {
try { try {
io.onedev.server.ci.job.action.condition.ActionCondition.parse(job, condition); io.onedev.server.buildspec.job.action.condition.ActionCondition.parse(job, condition);
} catch (Exception e) { } catch (Exception e) {
String message = "Invalid action condition"; String message = "Invalid action condition";
if (e.getMessage() != null) if (e.getMessage() != null)

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action; package io.onedev.server.buildspec.job.action;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -15,12 +15,12 @@ import org.slf4j.LoggerFactory;
import io.onedev.commons.utils.MatrixRunner; import io.onedev.commons.utils.MatrixRunner;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.CISpec; import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.ci.CISpecAware; import io.onedev.server.buildspec.BuildSpecAware;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobManager; import io.onedev.server.buildspec.job.JobManager;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.persistence.SessionManager; import io.onedev.server.persistence.SessionManager;
@ -77,11 +77,11 @@ public class RunJobAction extends PostBuildAction {
String jobName = (String) EditContext.get().getInputValue("jobName"); String jobName = (String) EditContext.get().getInputValue("jobName");
if (jobName != null) { if (jobName != null) {
Component component = ComponentContext.get().getComponent(); Component component = ComponentContext.get().getComponent();
CISpecAware ciSpecAware = WicketUtils.findInnermost(component, CISpecAware.class); BuildSpecAware buildSpecAware = WicketUtils.findInnermost(component, BuildSpecAware.class);
if (ciSpecAware != null) { if (buildSpecAware != null) {
CISpec ciSpec = ciSpecAware.getCISpec(); BuildSpec buildSpec = buildSpecAware.getBuildSpec();
if (ciSpec != null) { if (buildSpec != null) {
Job job = ciSpec.getJobMap().get(jobName); Job job = buildSpec.getJobMap().get(jobName);
if (job != null) if (job != null)
return job.getParamSpecs(); return job.getParamSpecs();
} }
@ -135,10 +135,10 @@ public class RunJobAction extends PostBuildAction {
} }
@Override @Override
public void validateWithContext(CISpec ciSpec, Job job) { public void validateWithContext(BuildSpec buildSpec, Job job) {
super.validateWithContext(ciSpec, job); super.validateWithContext(buildSpec, job);
Job jobToRun = ciSpec.getJobMap().get(jobName); Job jobToRun = buildSpec.getJobMap().get(jobName);
if (jobToRun != null) { if (jobToRun != null) {
try { try {
ParamSupply.validateParams(jobToRun.getParamSpecs(), jobParams); ParamSupply.validateParams(jobToRun.getParamSpecs(), jobParams);

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action; package io.onedev.server.buildspec.job.action;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
@ -29,7 +29,7 @@ public class SendNotificationAction extends PostBuildAction {
@Override @Override
public void execute(Build build) { public void execute(Build build) {
OneDev.getInstance(BuildNotificationManager.class).notify(build, OneDev.getInstance(BuildNotificationManager.class).notify(build,
io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiver.fromString(receivers, build).getEmails()); io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiver.fromString(receivers, build).getEmails());
} }
@Override @Override

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -16,16 +16,19 @@ import io.onedev.commons.codeassist.AntlrUtils;
import io.onedev.commons.codeassist.FenceAware; import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.AndCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionBaseVisitor;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.ConditionContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionLexer;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.CriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.FieldOperatorValueCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.AndCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.NotCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.ConditionContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OperatorCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.CriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OperatorValueCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.FieldOperatorValueCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OrCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.NotCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.ParensCriteriaContext; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.OperatorCriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.OperatorValueCriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.OrCriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.ParensCriteriaContext;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.util.BuildConstants; import io.onedev.server.util.BuildConstants;
import io.onedev.server.util.criteria.AndCriteria; import io.onedev.server.util.criteria.AndCriteria;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,10 +1,10 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.job.log.LogManager; import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
public class LogCriteria implements Predicate<Build> { public class LogCriteria implements Predicate<Build> {

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.action.condition;
import java.util.List; import java.util.List;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.action.condition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.notificationreceiver; package io.onedev.server.buildspec.job.action.notificationreceiver;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
@ -21,8 +21,10 @@ import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiverParser.CriteriaContext; import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverLexer;
import io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiverParser.ReceiverContext; import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser;
import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser.CriteriaContext;
import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser.ReceiverContext;
import io.onedev.server.entitymanager.GroupManager; import io.onedev.server.entitymanager.GroupManager;
import io.onedev.server.entitymanager.UserManager; import io.onedev.server.entitymanager.UserManager;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log; package io.onedev.server.buildspec.job.log;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
@ -39,9 +39,9 @@ import io.onedev.commons.launcher.loader.Listen;
import io.onedev.commons.utils.ExceptionUtils; import io.onedev.commons.utils.ExceptionUtils;
import io.onedev.commons.utils.LockUtils; import io.onedev.commons.utils.LockUtils;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.job.log.instruction.LogInstruction; import io.onedev.server.buildspec.job.log.instruction.LogInstruction;
import io.onedev.server.ci.job.log.instruction.LogInstructionParser.InstructionContext; import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser.InstructionContext;
import io.onedev.server.ci.job.log.instruction.LogInstructionParser.ParamContext; import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser.ParamContext;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.event.build.BuildFinished; import io.onedev.server.event.build.BuildFinished;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log; package io.onedev.server.buildspec.job.log;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log; package io.onedev.server.buildspec.job.log;
import java.io.InputStream; import java.io.InputStream;
import java.util.Collection; import java.util.Collection;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log; package io.onedev.server.buildspec.job.log;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log.instruction; package io.onedev.server.buildspec.job.log.instruction;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -16,7 +16,9 @@ import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.launcher.loader.ExtensionPoint; import io.onedev.commons.launcher.loader.ExtensionPoint;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.log.instruction.LogInstructionParser.InstructionContext; import io.onedev.server.buildspec.job.log.instruction.LogInstructionLexer;
import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser;
import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser.InstructionContext;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
@ExtensionPoint @ExtensionPoint

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.log.instruction; package io.onedev.server.buildspec.job.log.instruction;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import javax.validation.Valid; import javax.validation.Valid;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramspec; package io.onedev.server.buildspec.job.paramspec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramsupply; package io.onedev.server.buildspec.job.paramsupply;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
@ -26,9 +26,9 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramspec.SecretParam; import io.onedev.server.buildspec.job.paramspec.SecretParam;
import io.onedev.server.util.inputspec.SecretInput; import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.web.editable.BeanDescriptor; import io.onedev.server.web.editable.BeanDescriptor;
import io.onedev.server.web.editable.PropertyDescriptor; import io.onedev.server.web.editable.PropertyDescriptor;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramsupply; package io.onedev.server.buildspec.job.paramsupply;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramsupply; package io.onedev.server.buildspec.job.paramsupply;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.paramsupply; package io.onedev.server.buildspec.job.paramsupply;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.retrycondition;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.retrycondition;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@ -1,10 +1,10 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.retrycondition;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.job.log.LogManager; import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
public class LogCriteria implements Predicate<Build> { public class LogCriteria implements Predicate<Build> {

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.retrycondition;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.action.condition; package io.onedev.server.buildspec.job.retrycondition;
import java.util.List; import java.util.List;
import java.util.function.Predicate; import java.util.function.Predicate;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.retrycondition; package io.onedev.server.buildspec.job.retrycondition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -16,14 +16,17 @@ import io.onedev.commons.codeassist.AntlrUtils;
import io.onedev.commons.codeassist.FenceAware; import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.AndCriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionBaseVisitor;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.ConditionContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionLexer;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.CriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.FieldOperatorValueCriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.AndCriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.NotCriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.ConditionContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.OrCriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.CriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.ParensCriteriaContext; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.FieldOperatorValueCriteriaContext;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.NotCriteriaContext;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.OrCriteriaContext;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.ParensCriteriaContext;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.util.BuildConstants; import io.onedev.server.util.BuildConstants;
import io.onedev.server.util.criteria.AndCriteria; import io.onedev.server.util.criteria.AndCriteria;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.trigger; package io.onedev.server.buildspec.job.trigger;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -8,7 +8,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.utils.match.Matcher; import io.onedev.commons.utils.match.Matcher;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.event.RefUpdated; import io.onedev.server.event.RefUpdated;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;

View File

@ -1,10 +1,10 @@
package io.onedev.server.ci.job.trigger; package io.onedev.server.buildspec.job.trigger;
import java.util.List; import java.util.List;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobDependency; import io.onedev.server.buildspec.job.JobDependency;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.event.build.BuildFinished; import io.onedev.server.event.build.BuildFinished;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.trigger; package io.onedev.server.buildspec.job.trigger;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
@ -8,10 +8,10 @@ import javax.validation.Valid;
import org.apache.wicket.Component; import org.apache.wicket.Component;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobAware; import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply; import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.util.ComponentContext; import io.onedev.server.util.ComponentContext;
import io.onedev.server.web.editable.annotation.Editable; import io.onedev.server.web.editable.annotation.Editable;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.trigger; package io.onedev.server.buildspec.job.trigger;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -8,7 +8,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.utils.match.Matcher; import io.onedev.commons.utils.match.Matcher;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.event.pullrequest.PullRequestMergePreviewCalculated; import io.onedev.server.event.pullrequest.PullRequestMergePreviewCalculated;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job.trigger; package io.onedev.server.buildspec.job.trigger;
import java.util.List; import java.util.List;
@ -6,7 +6,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion; import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.event.ProjectEvent; import io.onedev.server.event.ProjectEvent;
import io.onedev.server.event.RefUpdated; import io.onedev.server.event.RefUpdated;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;

View File

@ -1,10 +0,0 @@
package io.onedev.server.ci;
import javax.annotation.Nullable;
public interface CISpecAware {
@Nullable
CISpec getCISpec();
}

View File

@ -1,13 +0,0 @@
package io.onedev.server.ci;
import io.onedev.server.OneException;
public class InvalidCISpecException extends OneException {
private static final long serialVersionUID = 1L;
public InvalidCISpecException(String message, Throwable cause) {
super(message, cause);
}
}

View File

@ -18,7 +18,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import io.onedev.commons.launcher.loader.Listen; import io.onedev.commons.launcher.loader.Listen;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.entitymanager.BuildParamManager; import io.onedev.server.entitymanager.BuildParamManager;
import io.onedev.server.event.system.SystemStarted; import io.onedev.server.event.system.SystemStarted;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;

View File

@ -60,13 +60,13 @@ import io.onedev.commons.utils.MatrixRunner;
import io.onedev.commons.utils.concurrent.Prioritized; import io.onedev.commons.utils.concurrent.Prioritized;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobManager;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.buildspec.job.trigger.PullRequestTrigger;
import io.onedev.server.cache.CommitInfoManager; import io.onedev.server.cache.CommitInfoManager;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobManager;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.trigger.JobTrigger;
import io.onedev.server.ci.job.trigger.PullRequestTrigger;
import io.onedev.server.entitymanager.ProjectManager; import io.onedev.server.entitymanager.ProjectManager;
import io.onedev.server.entitymanager.PullRequestBuildManager; import io.onedev.server.entitymanager.PullRequestBuildManager;
import io.onedev.server.entitymanager.PullRequestChangeManager; import io.onedev.server.entitymanager.PullRequestChangeManager;
@ -734,9 +734,9 @@ public class DefaultPullRequestManager extends AbstractEntityManager<PullRequest
} else { } else {
requiredJobNames = new HashSet<>(); requiredJobNames = new HashSet<>();
} }
CISpec ciSpec = project.getCISpec(commitId); BuildSpec buildSpec = project.getBuildSpec(commitId);
if (ciSpec != null) { if (buildSpec != null) {
for (Job job: ciSpec.getJobs()) { for (Job job: buildSpec.getJobs()) {
for (JobTrigger trigger: job.getTriggers()) { for (JobTrigger trigger: job.getTriggers()) {
if (trigger instanceof PullRequestTrigger) { if (trigger instanceof PullRequestTrigger) {
PullRequestTrigger pullRequestTrigger = (PullRequestTrigger) trigger; PullRequestTrigger pullRequestTrigger = (PullRequestTrigger) trigger;

View File

@ -49,12 +49,12 @@ import io.onedev.commons.utils.LockUtils;
import io.onedev.commons.utils.StringUtils; import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.VariableInterpolator;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.cache.CommitInfoManager; import io.onedev.server.cache.CommitInfoManager;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.VariableInterpolator;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;
import io.onedev.server.git.RefInfo; import io.onedev.server.git.RefInfo;
@ -187,7 +187,7 @@ public class Build extends AbstractEntity implements Referenceable {
private transient Map<Build.Status, Collection<RevCommit>> commitsCache; private transient Map<Build.Status, Collection<RevCommit>> commitsCache;
private transient CISpec ciSpec; private transient BuildSpec buildSpec;
private transient Job job; private transient Job job;
@ -537,15 +537,15 @@ public class Build extends AbstractEntity implements Referenceable {
return project.getSecretValue(secretName, ObjectId.fromString(getCommitHash())); return project.getSecretValue(secretName, ObjectId.fromString(getCommitHash()));
} }
public CISpec getCISpec() { public BuildSpec getBuildSpec() {
if (ciSpec == null) if (buildSpec == null)
ciSpec = Preconditions.checkNotNull(getProject().getCISpec(getCommitId())); buildSpec = Preconditions.checkNotNull(getProject().getBuildSpec(getCommitId()));
return ciSpec; return buildSpec;
} }
public Job getJob() { public Job getJob() {
if (job == null) if (job == null)
job = Preconditions.checkNotNull(getCISpec().getJobMap().get(getJobName())); job = Preconditions.checkNotNull(getBuildSpec().getJobMap().get(getJobName()));
return job; return job;
} }

View File

@ -73,8 +73,8 @@ import io.onedev.commons.utils.match.Matcher;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.cache.CommitInfoManager; import io.onedev.server.cache.CommitInfoManager;
import io.onedev.server.ci.CISpec;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildQuerySettingManager; import io.onedev.server.entitymanager.BuildQuerySettingManager;
import io.onedev.server.entitymanager.CodeCommentQuerySettingManager; import io.onedev.server.entitymanager.CodeCommentQuerySettingManager;
@ -290,7 +290,7 @@ public class Project extends AbstractEntity {
private transient Map<String, Optional<ObjectId>> objectIdCache; private transient Map<String, Optional<ObjectId>> objectIdCache;
private transient Map<ObjectId, Optional<CISpec>> ciSpecCache; private transient Map<ObjectId, Optional<BuildSpec>> buildSpecCache;
private transient Map<ObjectId, Map<String, Status>> commitStatusCache; private transient Map<ObjectId, Map<String, Status>> commitStatusCache;
@ -672,36 +672,36 @@ public class Project extends AbstractEntity {
} }
/** /**
* Get CI spec of specified commit * Get build spec of specified commit
* @param commitId * @param commitId
* commit id to get CI spec for * commit id to get build spec for
* @return * @return
* CI spec of specified commit, or <tt>null</tt> if no CI spec is defined and * build spec of specified commit, or <tt>null</tt> if no build spec is defined and
* auto-detection also can not provide an appropriate CI spec * auto-detection also can not provide an appropriate build spec
* @throws * @throws
* Exception when CI spec is defined but not valid * Exception when build spec is defined but not valid
*/ */
@Nullable @Nullable
public CISpec getCISpec(ObjectId commitId) { public BuildSpec getBuildSpec(ObjectId commitId) {
if (ciSpecCache == null) if (buildSpecCache == null)
ciSpecCache = new HashMap<>(); buildSpecCache = new HashMap<>();
Optional<CISpec> ciSpec = ciSpecCache.get(commitId); Optional<BuildSpec> buildSpec = buildSpecCache.get(commitId);
if (ciSpec == null) { if (buildSpec == null) {
Blob blob = getBlob(new BlobIdent(commitId.name(), CISpec.BLOB_PATH, FileMode.TYPE_FILE), false); Blob blob = getBlob(new BlobIdent(commitId.name(), BuildSpec.BLOB_PATH, FileMode.TYPE_FILE), false);
if (blob != null) if (blob != null)
ciSpec = Optional.fromNullable(CISpec.parse(blob.getBytes())); buildSpec = Optional.fromNullable(BuildSpec.parse(blob.getBytes()));
else else
ciSpec = Optional.absent(); buildSpec = Optional.absent();
ciSpecCache.put(commitId, ciSpec); buildSpecCache.put(commitId, buildSpec);
} }
return ciSpec.orNull(); return buildSpec.orNull();
} }
public List<String> getJobNames() { public List<String> getJobNames() {
if (jobNames == null) { if (jobNames == null) {
Set<String> jobNameSet = new HashSet<>(); Set<String> jobNameSet = new HashSet<>();
for (RefInfo refInfo: getBranches()) { for (RefInfo refInfo: getBranches()) {
Blob blob = getBlob(new BlobIdent(refInfo.getPeeledObj().name(), CISpec.BLOB_PATH, FileMode.TYPE_FILE), false); Blob blob = getBlob(new BlobIdent(refInfo.getPeeledObj().name(), BuildSpec.BLOB_PATH, FileMode.TYPE_FILE), false);
if (blob != null && blob.getText() != null) { if (blob != null && blob.getText() != null) {
try { try {
VersionedDocument dom = VersionedDocument.fromXML(blob.getText().getContent()); VersionedDocument dom = VersionedDocument.fromXML(blob.getText().getContent());

View File

@ -7,13 +7,13 @@ import java.util.List;
import edu.emory.mathcs.backport.java.util.Collections; import edu.emory.mathcs.backport.java.util.Collections;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.JobContext; import io.onedev.server.buildspec.job.JobContext;
import io.onedev.server.ci.job.JobExecutorDiscoverer; import io.onedev.server.buildspec.job.JobExecutorDiscoverer;
import io.onedev.server.web.editable.EditableUtils; import io.onedev.server.web.editable.EditableUtils;
import io.onedev.server.web.editable.annotation.Editable; import io.onedev.server.web.editable.annotation.Editable;
import io.onedev.server.web.editable.annotation.Horizontal; import io.onedev.server.web.editable.annotation.Horizontal;
@Editable(order=10000, description="Discover appropriate job executor automatically to run CI jobs") @Editable(order=10000, description="Discover appropriate job executor automatically to run builds")
@Horizontal @Horizontal
public class AutoDiscoveredJobExecutor extends JobExecutor { public class AutoDiscoveredJobExecutor extends JobExecutor {
@ -38,6 +38,7 @@ public class AutoDiscoveredJobExecutor extends JobExecutor {
}); });
JobExecutor jobExecutor = jobExecutors.iterator().next(); JobExecutor jobExecutor = jobExecutors.iterator().next();
jobExecutor.setName(getName());
jobExecutor.setApplicableBranches(getApplicableBranches()); jobExecutor.setApplicableBranches(getApplicableBranches());
jobExecutor.setCacheTTL(getCacheTTL()); jobExecutor.setCacheTTL(getCacheTTL());
jobExecutor.setEnabled(isEnabled()); jobExecutor.setEnabled(isEnabled());

View File

@ -13,7 +13,7 @@ import io.onedev.commons.launcher.loader.ExtensionPoint;
import io.onedev.commons.utils.match.Matcher; import io.onedev.commons.utils.match.Matcher;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.job.JobContext; import io.onedev.server.buildspec.job.JobContext;
import io.onedev.server.entitymanager.BuildManager; import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.model.Project; import io.onedev.server.model.Project;
import io.onedev.server.util.Usage; import io.onedev.server.util.Usage;

View File

@ -8,7 +8,7 @@ import javax.validation.constraints.Size;
import io.onedev.commons.utils.match.Matcher; import io.onedev.commons.utils.match.Matcher;
import io.onedev.commons.utils.match.PathMatcher; import io.onedev.commons.utils.match.PathMatcher;
import io.onedev.server.ci.job.JobService; import io.onedev.server.buildspec.job.JobService;
import io.onedev.server.util.patternset.PatternSet; import io.onedev.server.util.patternset.PatternSet;
import io.onedev.server.web.editable.annotation.Editable; import io.onedev.server.web.editable.annotation.Editable;
import io.onedev.server.web.editable.annotation.NameOfEmptyValue; import io.onedev.server.web.editable.annotation.NameOfEmptyValue;

View File

@ -12,7 +12,7 @@ import javax.annotation.Nullable;
import javax.validation.ConstraintValidatorContext; import javax.validation.ConstraintValidatorContext;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import io.onedev.server.ci.job.paramspec.ChoiceParam; import io.onedev.server.buildspec.job.paramspec.ChoiceParam;
import io.onedev.server.issue.fieldspec.ChoiceField; import io.onedev.server.issue.fieldspec.ChoiceField;
import io.onedev.server.util.inputspec.InputSpec; import io.onedev.server.util.inputspec.InputSpec;
import io.onedev.server.util.validation.Validatable; import io.onedev.server.util.validation.Validatable;

View File

@ -33,13 +33,16 @@ public class UrlProcessor implements MarkdownProcessor {
public void process(Project project, Document rendered, Object context) { public void process(Project project, Document rendered, Object context) {
if (context instanceof BlobRenderContext && project != null) { if (context instanceof BlobRenderContext && project != null) {
BlobRenderContext blobRenderContext = (BlobRenderContext) context; BlobRenderContext blobRenderContext = (BlobRenderContext) context;
Repository repository = project.getRepository(); Repository repository = project.getRepository();
RevCommit commit; RevCommit commit;
try (RevWalk revWalk = new RevWalk(repository)) { if (blobRenderContext.getBlobIdent().revision != null) {
commit = revWalk.parseCommit(repository.resolve(blobRenderContext.getBlobIdent().revision)); try (RevWalk revWalk = new RevWalk(repository)) {
} catch (IOException e) { commit = revWalk.parseCommit(repository.resolve(blobRenderContext.getBlobIdent().revision));
throw new RuntimeException(e); } catch (IOException e) {
throw new RuntimeException(e);
}
} else {
commit = null;
} }
new NodeTraversor(new NodeVisitor() { new NodeTraversor(new NodeVisitor() {
@ -62,25 +65,25 @@ public class UrlProcessor implements MarkdownProcessor {
String directory = blobRenderContext.getDirectory(); String directory = blobRenderContext.getDirectory();
String referencedPath = PathUtils.resolve(directory, path); String referencedPath = PathUtils.resolve(directory, path);
referencedPath = GitUtils.normalizePath(referencedPath); referencedPath = GitUtils.normalizePath(referencedPath);
if (referencedPath != null && TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null) { if (referencedPath != null && (commit == null || TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null)) {
element.after("<span class='missing'>!!missing!!</span>"); element.after("<span class='missing'>!!missing!!</span>");
Element missingElement = element.nextElementSibling(); Element missingElement = element.nextElementSibling();
BlobIdent blobIdent = blobRenderContext.getBlobIdent(); BlobIdent blobIdent = blobRenderContext.getBlobIdent();
Mode mode = blobRenderContext.getMode(); Mode mode = blobRenderContext.getMode();
if (mode != Mode.ADD && mode != Mode.EDIT if (mode != Mode.ADD && mode != Mode.EDIT
&& SecurityUtils.canModify(project, blobIdent.revision, referencedPath)) { && SecurityUtils.canModify(project, blobIdent.revision, referencedPath)) {
ProjectBlobPage.State state = new ProjectBlobPage.State(); ProjectBlobPage.State state = new ProjectBlobPage.State();
state.blobIdent = blobRenderContext.getBlobIdent(); state.blobIdent = blobRenderContext.getBlobIdent();
state.mode = Mode.ADD; state.mode = Mode.ADD;
state.initialNewPath = path; state.initialNewPath = path;
CharSequence urlToAddFile = RequestCycle.get().urlFor(ProjectBlobPage.class, CharSequence urlToAddFile = RequestCycle.get().urlFor(ProjectBlobPage.class,
ProjectBlobPage.paramsOf(project, state)); ProjectBlobPage.paramsOf(project, state));
String htmlToAddFile = String.format( String htmlToAddFile = String.format(
"<a href='%s' title='Add this file' class='add-missing'><i class='fa fa-plus'></i></a>", "<a href='%s' title='Add this file' class='add-missing'><i class='fa fa-plus'></i></a>",
urlToAddFile.toString()); urlToAddFile.toString());
missingElement.after(htmlToAddFile); missingElement.after(htmlToAddFile);
}
} }
}
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -97,7 +100,7 @@ public class UrlProcessor implements MarkdownProcessor {
String basePath = blobRenderContext.getDirectory(); String basePath = blobRenderContext.getDirectory();
String referencedPath = PathUtils.resolve(basePath, UrlUtils.trimHashAndQuery(URLDecoder.decode(url, Charsets.UTF_8.name()))); String referencedPath = PathUtils.resolve(basePath, UrlUtils.trimHashAndQuery(URLDecoder.decode(url, Charsets.UTF_8.name())));
referencedPath = GitUtils.normalizePath(referencedPath); referencedPath = GitUtils.normalizePath(referencedPath);
if (referencedPath != null && TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null) { if (referencedPath != null && (commit == null || TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null)) {
element.after("<span class='missing'>!!missing!!</span>"); element.after("<span class='missing'>!!missing!!</span>");
} }
} catch (IOException e) { } catch (IOException e) {
@ -108,7 +111,6 @@ public class UrlProcessor implements MarkdownProcessor {
} }
} }
}).traverse(rendered); }).traverse(rendered);
} }
} }

View File

@ -22,7 +22,7 @@ public class NotificationReceiverValidator implements ConstraintValidator<Notifi
return true; return true;
} else { } else {
try { try {
io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiver.fromString(value, null); io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiver.fromString(value, null);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
constraintContext.disableDefaultConstraintViolation(); constraintContext.disableDefaultConstraintViolation();

View File

@ -33,9 +33,15 @@ onedev.server.codemirror = {
onedev.server.codemirror.setMode(cm, modeInfo); onedev.server.codemirror.setMode(cm, modeInfo);
}, },
setModeByFileName: function(cm, fileName) { setModeByFileName: function(cm, fileName) {
var modeInfo = CodeMirror.findModeByFileName(fileName); if (fileName.endsWith(".cbl") || fileName.endsWith(".pco")) {
if (modeInfo) onedev.server.codemirror.setModeByName(cm, "cobol");
onedev.server.codemirror.setMode(cm, modeInfo); } else if (fileName == ".onedev-buildspec") {
onedev.server.codemirror.setModeByName(cm, "xml");
} else {
var modeInfo = CodeMirror.findModeByFileName(fileName);
if (modeInfo)
onedev.server.codemirror.setMode(cm, modeInfo);
}
}, },
setMode: function(cm, modeInfo) { setMode: function(cm, modeInfo) {
// specify mode via mime does not work for gfm (github flavored markdown) // specify mode via mime does not work for gfm (github flavored markdown)

View File

@ -17,12 +17,12 @@ import io.onedev.commons.codeassist.parser.Element;
import io.onedev.commons.codeassist.parser.ParseExpect; import io.onedev.commons.codeassist.parser.ParseExpect;
import io.onedev.commons.codeassist.parser.TerminalExpect; import io.onedev.commons.codeassist.parser.TerminalExpect;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobAware; import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.ci.job.action.condition.ActionCondition; import io.onedev.server.buildspec.job.action.condition.ActionCondition;
import io.onedev.server.ci.job.action.condition.ActionConditionLexer; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.action.condition.ActionConditionParser; import io.onedev.server.buildspec.job.action.condition.ActionConditionLexer;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.action.condition.ActionConditionParser;
import io.onedev.server.git.GitUtils; import io.onedev.server.git.GitUtils;
import io.onedev.server.git.RefInfo; import io.onedev.server.git.RefInfo;
import io.onedev.server.model.Project; import io.onedev.server.model.Project;

View File

@ -12,7 +12,7 @@ import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.codeassist.grammar.LexerRuleRefElementSpec; import io.onedev.commons.codeassist.grammar.LexerRuleRefElementSpec;
import io.onedev.commons.codeassist.parser.ParseExpect; import io.onedev.commons.codeassist.parser.ParseExpect;
import io.onedev.commons.codeassist.parser.TerminalExpect; import io.onedev.commons.codeassist.parser.TerminalExpect;
import io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiverParser; import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser;
import io.onedev.server.model.Project; import io.onedev.server.model.Project;
import io.onedev.server.web.behavior.inputassist.ANTLRAssistBehavior; import io.onedev.server.web.behavior.inputassist.ANTLRAssistBehavior;
import io.onedev.server.web.util.SuggestionUtils; import io.onedev.server.web.util.SuggestionUtils;

View File

@ -17,12 +17,12 @@ import io.onedev.commons.codeassist.parser.Element;
import io.onedev.commons.codeassist.parser.ParseExpect; import io.onedev.commons.codeassist.parser.ParseExpect;
import io.onedev.commons.codeassist.parser.TerminalExpect; import io.onedev.commons.codeassist.parser.TerminalExpect;
import io.onedev.server.OneException; import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job; import io.onedev.server.buildspec.job.Job;
import io.onedev.server.ci.job.JobAware; import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.ci.job.paramspec.ParamSpec; import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.retrycondition.RetryCondition; import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.retrycondition.RetryConditionLexer; import io.onedev.server.buildspec.job.retrycondition.RetryConditionLexer;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser; import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser;
import io.onedev.server.util.BuildConstants; import io.onedev.server.util.BuildConstants;
import io.onedev.server.web.behavior.inputassist.ANTLRAssistBehavior; import io.onedev.server.web.behavior.inputassist.ANTLRAssistBehavior;
import io.onedev.server.web.util.SuggestionUtils; import io.onedev.server.web.util.SuggestionUtils;

View File

@ -1,9 +1,12 @@
package io.onedev.server.web.component.blob; package io.onedev.server.web.component.blob;
import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import javax.annotation.Nullable;
import org.apache.wicket.Component; import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.AjaxLink;
@ -31,7 +34,7 @@ public abstract class BlobPicker extends Panel {
private final ObjectId commitId; private final ObjectId commitId;
public BlobPicker(String id, ObjectId commitId) { public BlobPicker(String id, @Nullable ObjectId commitId) {
super(id); super(id);
this.commitId = commitId; this.commitId = commitId;
@ -49,7 +52,10 @@ public abstract class BlobPicker extends Panel {
@Override @Override
public Iterator<? extends BlobIdent> getRoots() { public Iterator<? extends BlobIdent> getRoots() {
return getChildren(new BlobIdent(commitId.name(), null, FileMode.TYPE_TREE)); if (commitId != null)
return getChildren(new BlobIdent(commitId.name(), null, FileMode.TYPE_TREE));
else
return new ArrayList<BlobIdent>().iterator();
} }
@Override @Override

View File

@ -15,9 +15,9 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import io.onedev.server.OneDev; import io.onedev.server.OneDev;
import io.onedev.server.ci.job.log.JobLogEntry; import io.onedev.server.buildspec.job.log.JobLogEntry;
import io.onedev.server.ci.job.log.LogManager; import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.ci.job.log.LogSnippet; import io.onedev.server.buildspec.job.log.LogSnippet;
import io.onedev.server.model.Build; import io.onedev.server.model.Build;
import io.onedev.server.web.behavior.WebSocketObserver; import io.onedev.server.web.behavior.WebSocketObserver;

Some files were not shown because too many files have changed in this diff Show More