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.schedule.DefaultTaskScheduler;
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.CommitInfoManager;
import io.onedev.server.cache.DefaultCodeCommentRelationInfoManager;
import io.onedev.server.cache.DefaultCommitInfoManager;
import io.onedev.server.cache.DefaultUserInfoManager;
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.BuildManager;
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.util.ArrayList;
@ -20,12 +20,12 @@ import com.google.common.base.Charsets;
import com.google.common.collect.Lists;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobDependency;
import io.onedev.server.ci.job.action.PostBuildAction;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.trigger.JobTrigger;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobDependency;
import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.migration.VersionedDocument;
import io.onedev.server.util.validation.Validatable;
import io.onedev.server.util.validation.annotation.ClassValidating;
@ -33,13 +33,13 @@ import io.onedev.server.web.editable.annotation.Editable;
@Editable
@ClassValidating
public class CISpec implements Serializable, Validatable {
public class BuildSpec implements Serializable, Validatable {
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<>();
@ -183,13 +183,13 @@ public class CISpec implements Serializable, Validatable {
}
@Nullable
public static CISpec parse(byte[] bytes) {
String ciSpecString = new String(bytes, Charsets.UTF_8);
if (StringUtils.isNotBlank(ciSpecString)) {
public static BuildSpec parse(byte[] bytes) {
String buildSpecString = new String(bytes, Charsets.UTF_8);
if (StringUtils.isNotBlank(buildSpecString)) {
try {
return (CISpec) VersionedDocument.fromXML(ciSpecString).toBean();
return (BuildSpec) VersionedDocument.fromXML(buildSpecString).toBean();
} catch (Exception e) {
throw new InvalidCISpecException("Invalid CI spec", e);
throw new InvalidBuildSpecException("Invalid build spec", e);
}
} else {
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.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.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;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job;
package io.onedev.server.buildspec.job;
import java.io.File;
import java.util.ArrayList;
@ -52,15 +52,15 @@ import io.onedev.commons.utils.MatrixRunner;
import io.onedev.k8shelper.CacheInstance;
import io.onedev.server.OneDev;
import io.onedev.server.OneException;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.job.action.PostBuildAction;
import io.onedev.server.ci.job.action.condition.ActionCondition;
import io.onedev.server.ci.job.log.LogManager;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramspec.SecretParam;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.trigger.JobTrigger;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.buildspec.job.action.condition.ActionCondition;
import io.onedev.server.buildspec.job.log.LogManager;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramspec.SecretParam;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildParamManager;
import io.onedev.server.entitymanager.ProjectManager;
@ -568,9 +568,9 @@ public class DefaultJobManager implements JobManager, Runnable, CodePullAuthoriz
if (!commitId.equals(ObjectId.zeroId())) {
ScriptIdentity.push(new JobIdentity(event.getProject(), commitId));
try {
CISpec ciSpec = event.getProject().getCISpec(commitId);
if (ciSpec != null) {
for (Job job: ciSpec.getJobs()) {
BuildSpec buildSpec = event.getProject().getBuildSpec(commitId);
if (buildSpec != null) {
for (Job job: buildSpec.getJobs()) {
JobTrigger trigger = job.getMatchedTrigger(event);
if (trigger != null) {
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.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.build.BuildQuery.getRuleName;
@ -24,12 +24,12 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.CISpecAware;
import io.onedev.server.ci.job.action.PostBuildAction;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.ci.job.trigger.JobTrigger;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.BuildSpecAware;
import io.onedev.server.buildspec.job.action.PostBuildAction;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.trigger.JobTrigger;
import io.onedev.server.event.ProjectEvent;
import io.onedev.server.model.Project;
import io.onedev.server.util.ComponentContext;
@ -465,11 +465,11 @@ public class Job implements Serializable, Validatable {
public static List<String> getChoices() {
List<String> choices = new ArrayList<>();
Component component = ComponentContext.get().getComponent();
CISpecAware ciSpecAware = WicketUtils.findInnermost(component, CISpecAware.class);
if (ciSpecAware != null) {
CISpec ciSpec = ciSpecAware.getCISpec();
if (ciSpec != null) {
for (Job eachJob: ciSpec.getJobs()) {
BuildSpecAware buildSpecAware = WicketUtils.findInnermost(component, BuildSpecAware.class);
if (buildSpecAware != null) {
BuildSpec buildSpec = buildSpecAware.getBuildSpec();
if (buildSpec != null) {
for (Job eachJob: buildSpec.getJobs()) {
if (eachJob.getName() != null)
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;

View File

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

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job;
package io.onedev.server.buildspec.job;
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.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.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.util.ArrayList;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job;
package io.onedev.server.buildspec.job;
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;

View File

@ -1,4 +1,4 @@
package io.onedev.server.ci.job;
package io.onedev.server.buildspec.job;
import java.io.Serializable;
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;

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.HashMap;
@ -9,7 +9,7 @@ import java.util.function.Function;
import io.onedev.commons.utils.StringUtils;
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.util.GroovyUtils;
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.Collection;
@ -14,8 +14,8 @@ import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.server.OneDev;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.job.Job;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.IssueManager;
import io.onedev.server.entitymanager.SettingManager;
@ -139,8 +139,8 @@ public class CreateIssueAction extends PostBuildAction {
}
@Override
public void validateWithContext(CISpec ciSpec, Job job) {
super.validateWithContext(ciSpec, job);
public void validateWithContext(BuildSpec buildSpec, Job job) {
super.validateWithContext(buildSpec, job);
GlobalIssueSetting issueSetting = OneDev.getInstance(SettingManager.class).getIssueSetting();
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 org.hibernate.validator.constraints.NotEmpty;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.job.Job;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.model.Build;
import io.onedev.server.web.editable.annotation.ActionCondition;
import io.onedev.server.web.editable.annotation.Editable;
@ -32,9 +32,9 @@ public abstract class PostBuildAction implements Serializable {
public abstract String getDescription();
public void validateWithContext(CISpec ciSpec, Job job) {
public void validateWithContext(BuildSpec buildSpec, Job job) {
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) {
String message = "Invalid action condition";
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.List;
@ -15,12 +15,12 @@ import org.slf4j.LoggerFactory;
import io.onedev.commons.utils.MatrixRunner;
import io.onedev.server.OneDev;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.CISpecAware;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobManager;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.buildspec.BuildSpecAware;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobManager;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.model.Build;
import io.onedev.server.persistence.SessionManager;
@ -77,11 +77,11 @@ public class RunJobAction extends PostBuildAction {
String jobName = (String) EditContext.get().getInputValue("jobName");
if (jobName != null) {
Component component = ComponentContext.get().getComponent();
CISpecAware ciSpecAware = WicketUtils.findInnermost(component, CISpecAware.class);
if (ciSpecAware != null) {
CISpec ciSpec = ciSpecAware.getCISpec();
if (ciSpec != null) {
Job job = ciSpec.getJobMap().get(jobName);
BuildSpecAware buildSpecAware = WicketUtils.findInnermost(component, BuildSpecAware.class);
if (buildSpecAware != null) {
BuildSpec buildSpec = buildSpecAware.getBuildSpec();
if (buildSpec != null) {
Job job = buildSpec.getJobMap().get(jobName);
if (job != null)
return job.getParamSpecs();
}
@ -135,10 +135,10 @@ public class RunJobAction extends PostBuildAction {
}
@Override
public void validateWithContext(CISpec ciSpec, Job job) {
super.validateWithContext(ciSpec, job);
public void validateWithContext(BuildSpec buildSpec, Job job) {
super.validateWithContext(buildSpec, job);
Job jobToRun = ciSpec.getJobMap().get(jobName);
Job jobToRun = buildSpec.getJobMap().get(jobName);
if (jobToRun != null) {
try {
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;
@ -29,7 +29,7 @@ public class SendNotificationAction extends PostBuildAction {
@Override
public void execute(Build 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

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.List;
@ -16,16 +16,19 @@ import io.onedev.commons.codeassist.AntlrUtils;
import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.AndCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.ConditionContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.CriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.FieldOperatorValueCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.NotCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OperatorCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OperatorValueCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.OrCriteriaContext;
import io.onedev.server.ci.job.action.condition.ActionConditionParser.ParensCriteriaContext;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.action.condition.ActionConditionBaseVisitor;
import io.onedev.server.buildspec.job.action.condition.ActionConditionLexer;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.AndCriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.ConditionContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.CriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.FieldOperatorValueCriteriaContext;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser.NotCriteriaContext;
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.util.BuildConstants;
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;

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;

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;

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.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;

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.regex.Pattern;
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;
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;

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.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;

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;

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;

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;

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 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;

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;

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.HashSet;
@ -21,8 +21,10 @@ import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiverParser.CriteriaContext;
import io.onedev.server.ci.job.action.notificationreceiver.NotificationReceiverParser.ReceiverContext;
import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverLexer;
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.UserManager;
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.BufferedOutputStream;
@ -39,9 +39,9 @@ import io.onedev.commons.launcher.loader.Listen;
import io.onedev.commons.utils.ExceptionUtils;
import io.onedev.commons.utils.LockUtils;
import io.onedev.server.OneDev;
import io.onedev.server.ci.job.log.instruction.LogInstruction;
import io.onedev.server.ci.job.log.instruction.LogInstructionParser.InstructionContext;
import io.onedev.server.ci.job.log.instruction.LogInstructionParser.ParamContext;
import io.onedev.server.buildspec.job.log.instruction.LogInstruction;
import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser.InstructionContext;
import io.onedev.server.buildspec.job.log.instruction.LogInstructionParser.ParamContext;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.event.build.BuildFinished;
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.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.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.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.Map;
@ -16,7 +16,9 @@ import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.launcher.loader.ExtensionPoint;
import io.onedev.commons.utils.StringUtils;
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;
@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.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.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.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.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.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.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.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.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.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;

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.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.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.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.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.util.ArrayList;
@ -26,9 +26,9 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramspec.SecretParam;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramspec.SecretParam;
import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.web.editable.BeanDescriptor;
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.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.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.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;

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.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.regex.Pattern;
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;
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;

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.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.List;
@ -16,14 +16,17 @@ import io.onedev.commons.codeassist.AntlrUtils;
import io.onedev.commons.codeassist.FenceAware;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.AndCriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.ConditionContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.CriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.FieldOperatorValueCriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.NotCriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.OrCriteriaContext;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser.ParensCriteriaContext;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionBaseVisitor;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionLexer;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.AndCriteriaContext;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.ConditionContext;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser.CriteriaContext;
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.util.BuildConstants;
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.List;
@ -8,7 +8,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.utils.match.Matcher;
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.RefUpdated;
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 io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobDependency;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobDependency;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.event.ProjectEvent;
import io.onedev.server.event.build.BuildFinished;
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.util.ArrayList;
@ -8,10 +8,10 @@ import javax.validation.Valid;
import org.apache.wicket.Component;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobAware;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.paramsupply.ParamSupply;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.paramsupply.ParamSupply;
import io.onedev.server.event.ProjectEvent;
import io.onedev.server.util.ComponentContext;
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.List;
@ -8,7 +8,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion;
import io.onedev.commons.utils.match.Matcher;
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.pullrequest.PullRequestMergePreviewCalculated;
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;
@ -6,7 +6,7 @@ import org.eclipse.jgit.lib.ObjectId;
import io.onedev.commons.codeassist.InputSuggestion;
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.RefUpdated;
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 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.event.system.SystemStarted;
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.server.OneDev;
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.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.PullRequestBuildManager;
import io.onedev.server.entitymanager.PullRequestChangeManager;
@ -734,9 +734,9 @@ public class DefaultPullRequestManager extends AbstractEntityManager<PullRequest
} else {
requiredJobNames = new HashSet<>();
}
CISpec ciSpec = project.getCISpec(commitId);
if (ciSpec != null) {
for (Job job: ciSpec.getJobs()) {
BuildSpec buildSpec = project.getBuildSpec(commitId);
if (buildSpec != null) {
for (Job job: buildSpec.getJobs()) {
for (JobTrigger trigger: job.getTriggers()) {
if (trigger instanceof PullRequestTrigger) {
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.server.OneDev;
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.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.git.GitUtils;
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 CISpec ciSpec;
private transient BuildSpec buildSpec;
private transient Job job;
@ -537,15 +537,15 @@ public class Build extends AbstractEntity implements Referenceable {
return project.getSecretValue(secretName, ObjectId.fromString(getCommitHash()));
}
public CISpec getCISpec() {
if (ciSpec == null)
ciSpec = Preconditions.checkNotNull(getProject().getCISpec(getCommitId()));
return ciSpec;
public BuildSpec getBuildSpec() {
if (buildSpec == null)
buildSpec = Preconditions.checkNotNull(getProject().getBuildSpec(getCommitId()));
return buildSpec;
}
public Job getJob() {
if (job == null)
job = Preconditions.checkNotNull(getCISpec().getJobMap().get(getJobName()));
job = Preconditions.checkNotNull(getBuildSpec().getJobMap().get(getJobName()));
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.server.OneDev;
import io.onedev.server.OneException;
import io.onedev.server.buildspec.BuildSpec;
import io.onedev.server.cache.CommitInfoManager;
import io.onedev.server.ci.CISpec;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildQuerySettingManager;
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<ObjectId, Optional<CISpec>> ciSpecCache;
private transient Map<ObjectId, Optional<BuildSpec>> buildSpecCache;
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
* commit id to get CI spec for
* commit id to get build spec for
* @return
* CI spec of specified commit, or <tt>null</tt> if no CI spec is defined and
* auto-detection also can not provide an appropriate CI spec
* build spec of specified commit, or <tt>null</tt> if no build spec is defined and
* auto-detection also can not provide an appropriate build spec
* @throws
* Exception when CI spec is defined but not valid
* Exception when build spec is defined but not valid
*/
@Nullable
public CISpec getCISpec(ObjectId commitId) {
if (ciSpecCache == null)
ciSpecCache = new HashMap<>();
Optional<CISpec> ciSpec = ciSpecCache.get(commitId);
if (ciSpec == null) {
Blob blob = getBlob(new BlobIdent(commitId.name(), CISpec.BLOB_PATH, FileMode.TYPE_FILE), false);
public BuildSpec getBuildSpec(ObjectId commitId) {
if (buildSpecCache == null)
buildSpecCache = new HashMap<>();
Optional<BuildSpec> buildSpec = buildSpecCache.get(commitId);
if (buildSpec == null) {
Blob blob = getBlob(new BlobIdent(commitId.name(), BuildSpec.BLOB_PATH, FileMode.TYPE_FILE), false);
if (blob != null)
ciSpec = Optional.fromNullable(CISpec.parse(blob.getBytes()));
buildSpec = Optional.fromNullable(BuildSpec.parse(blob.getBytes()));
else
ciSpec = Optional.absent();
ciSpecCache.put(commitId, ciSpec);
buildSpec = Optional.absent();
buildSpecCache.put(commitId, buildSpec);
}
return ciSpec.orNull();
return buildSpec.orNull();
}
public List<String> getJobNames() {
if (jobNames == null) {
Set<String> jobNameSet = new HashSet<>();
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) {
try {
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 io.onedev.server.OneDev;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.JobContext;
import io.onedev.server.ci.job.JobExecutorDiscoverer;
import io.onedev.server.buildspec.job.JobContext;
import io.onedev.server.buildspec.job.JobExecutorDiscoverer;
import io.onedev.server.web.editable.EditableUtils;
import io.onedev.server.web.editable.annotation.Editable;
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
public class AutoDiscoveredJobExecutor extends JobExecutor {
@ -38,6 +38,7 @@ public class AutoDiscoveredJobExecutor extends JobExecutor {
});
JobExecutor jobExecutor = jobExecutors.iterator().next();
jobExecutor.setName(getName());
jobExecutor.setApplicableBranches(getApplicableBranches());
jobExecutor.setCacheTTL(getCacheTTL());
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.PathMatcher;
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.model.Project;
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.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.web.editable.annotation.Editable;
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.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.util.inputspec.InputSpec;
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) {
if (context instanceof BlobRenderContext && project != null) {
BlobRenderContext blobRenderContext = (BlobRenderContext) context;
Repository repository = project.getRepository();
RevCommit commit;
try (RevWalk revWalk = new RevWalk(repository)) {
commit = revWalk.parseCommit(repository.resolve(blobRenderContext.getBlobIdent().revision));
} catch (IOException e) {
throw new RuntimeException(e);
if (blobRenderContext.getBlobIdent().revision != null) {
try (RevWalk revWalk = new RevWalk(repository)) {
commit = revWalk.parseCommit(repository.resolve(blobRenderContext.getBlobIdent().revision));
} catch (IOException e) {
throw new RuntimeException(e);
}
} else {
commit = null;
}
new NodeTraversor(new NodeVisitor() {
@ -62,25 +65,25 @@ public class UrlProcessor implements MarkdownProcessor {
String directory = blobRenderContext.getDirectory();
String referencedPath = PathUtils.resolve(directory, path);
referencedPath = GitUtils.normalizePath(referencedPath);
if (referencedPath != null && TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null) {
element.after("<span class='missing'>!!missing!!</span>");
Element missingElement = element.nextElementSibling();
BlobIdent blobIdent = blobRenderContext.getBlobIdent();
Mode mode = blobRenderContext.getMode();
if (mode != Mode.ADD && mode != Mode.EDIT
&& SecurityUtils.canModify(project, blobIdent.revision, referencedPath)) {
ProjectBlobPage.State state = new ProjectBlobPage.State();
state.blobIdent = blobRenderContext.getBlobIdent();
state.mode = Mode.ADD;
state.initialNewPath = path;
CharSequence urlToAddFile = RequestCycle.get().urlFor(ProjectBlobPage.class,
ProjectBlobPage.paramsOf(project, state));
String htmlToAddFile = String.format(
"<a href='%s' title='Add this file' class='add-missing'><i class='fa fa-plus'></i></a>",
urlToAddFile.toString());
missingElement.after(htmlToAddFile);
}
if (referencedPath != null && (commit == null || TreeWalk.forPath(repository, referencedPath, commit.getTree()) == null)) {
element.after("<span class='missing'>!!missing!!</span>");
Element missingElement = element.nextElementSibling();
BlobIdent blobIdent = blobRenderContext.getBlobIdent();
Mode mode = blobRenderContext.getMode();
if (mode != Mode.ADD && mode != Mode.EDIT
&& SecurityUtils.canModify(project, blobIdent.revision, referencedPath)) {
ProjectBlobPage.State state = new ProjectBlobPage.State();
state.blobIdent = blobRenderContext.getBlobIdent();
state.mode = Mode.ADD;
state.initialNewPath = path;
CharSequence urlToAddFile = RequestCycle.get().urlFor(ProjectBlobPage.class,
ProjectBlobPage.paramsOf(project, state));
String htmlToAddFile = String.format(
"<a href='%s' title='Add this file' class='add-missing'><i class='fa fa-plus'></i></a>",
urlToAddFile.toString());
missingElement.after(htmlToAddFile);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
@ -97,7 +100,7 @@ public class UrlProcessor implements MarkdownProcessor {
String basePath = blobRenderContext.getDirectory();
String referencedPath = PathUtils.resolve(basePath, UrlUtils.trimHashAndQuery(URLDecoder.decode(url, Charsets.UTF_8.name())));
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>");
}
} catch (IOException e) {
@ -108,7 +111,6 @@ public class UrlProcessor implements MarkdownProcessor {
}
}
}).traverse(rendered);
}
}

View File

@ -22,7 +22,7 @@ public class NotificationReceiverValidator implements ConstraintValidator<Notifi
return true;
} else {
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;
} catch (Exception e) {
constraintContext.disableDefaultConstraintViolation();

View File

@ -33,9 +33,15 @@ onedev.server.codemirror = {
onedev.server.codemirror.setMode(cm, modeInfo);
},
setModeByFileName: function(cm, fileName) {
var modeInfo = CodeMirror.findModeByFileName(fileName);
if (modeInfo)
onedev.server.codemirror.setMode(cm, modeInfo);
if (fileName.endsWith(".cbl") || fileName.endsWith(".pco")) {
onedev.server.codemirror.setModeByName(cm, "cobol");
} 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) {
// 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.TerminalExpect;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobAware;
import io.onedev.server.ci.job.action.condition.ActionCondition;
import io.onedev.server.ci.job.action.condition.ActionConditionLexer;
import io.onedev.server.ci.job.action.condition.ActionConditionParser;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.buildspec.job.action.condition.ActionCondition;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.action.condition.ActionConditionLexer;
import io.onedev.server.buildspec.job.action.condition.ActionConditionParser;
import io.onedev.server.git.GitUtils;
import io.onedev.server.git.RefInfo;
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.parser.ParseExpect;
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.web.behavior.inputassist.ANTLRAssistBehavior;
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.TerminalExpect;
import io.onedev.server.OneException;
import io.onedev.server.ci.job.Job;
import io.onedev.server.ci.job.JobAware;
import io.onedev.server.ci.job.paramspec.ParamSpec;
import io.onedev.server.ci.job.retrycondition.RetryCondition;
import io.onedev.server.ci.job.retrycondition.RetryConditionLexer;
import io.onedev.server.ci.job.retrycondition.RetryConditionParser;
import io.onedev.server.buildspec.job.Job;
import io.onedev.server.buildspec.job.JobAware;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.buildspec.job.retrycondition.RetryCondition;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionLexer;
import io.onedev.server.buildspec.job.retrycondition.RetryConditionParser;
import io.onedev.server.util.BuildConstants;
import io.onedev.server.web.behavior.inputassist.ANTLRAssistBehavior;
import io.onedev.server.web.util.SuggestionUtils;

View File

@ -1,9 +1,12 @@
package io.onedev.server.web.component.blob;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.annotation.Nullable;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
@ -31,7 +34,7 @@ public abstract class BlobPicker extends Panel {
private final ObjectId commitId;
public BlobPicker(String id, ObjectId commitId) {
public BlobPicker(String id, @Nullable ObjectId commitId) {
super(id);
this.commitId = commitId;
@ -49,7 +52,10 @@ public abstract class BlobPicker extends Panel {
@Override
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

View File

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

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