TeamCity BuildRunner 插件
TeamCity BuildRunner Plugin
我正在尝试在 TeamCity 中创建一个新的构建步骤,由于您需要创建一个构建运行程序才能这样做,我目前正在尝试自己创建一个。
我已经使用 Server 和 Agentside 命令创建了一个新的 Mavenproject >https://confluence.jetbrains.com/display/TCD10/Developing+Plugins+Using+Maven<。
现在我的问题是:我想创建一个新的构建步骤,为此我确实研究了来自 TeamCity 的示例插件,例如FxCop runner 并试图了解它是如何工作的。
我在服务器包中创建了一个 editParams.jsp 和一个 viewParams.jsp。我还创建了一个 CustomRunType.java 和一个 CustomRunTypePropertieProcessor.java。
好事是 buildstep 的名称显示在 TC 中,但坏事是,当我 select 自定义 buildstep 没有任何反应时,我的意思是没有显示文本字段。
editParams.jsp:
<%@ taglib prefix="props" tagdir="/WEB-INF/tags/props" %> <br>
<%@ taglib prefix="forms" tagdir="/WEB-INF/tags/forms" %><br>
<%@ taglib prefix="l" tagdir="/WEB-INF/tags/layout" %><br>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="propertiesBean" scope="request" type="jetbrains.buildServer.controllers.BasePropertiesBean"/>
<l:settingsGroup title="myTitle">
<tr>
<th><label for="Name" title="Name">Name: <span class="mandatoryAsterix" title="Mandatory field">*</span></label></th>
<td>
<props:textProperty name="Name" className="longField" />
<span class="error" id="error_Name"></span>
<span class="smallNote">Enter the Name.</span>
</td>
</tr>
</l:settingsGroup>
viewParams.jsp:
<!-- Pretty sure that here is the mistake, but no idea how to fix-->
<jsp:useBean id="propertiesBean" scope="request" type="jetbrains.buildServer.controllers.BasePropertiesBean"/>
CustomRunTypeProppertyProcessor.java:
import jetbrains.buildServer.serverSide.InvalidProperty;
import jetbrains.buildServer.serverSide.PropertiesProcessor;
import jetbrains.buildServer.util.PropertiesUtil;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Vector;
public class CustomRunTypePropertiesProcessor implements PropertiesProcessor {
@Override
public Collection<InvalidProperty> process(Map<String, String> map) {
List<InvalidProperty> result = new Vector();
String name = (String)map.get("Name");
if (PropertiesUtil.isEmptyOrNull(name)) {
result.add(new InvalidProperty("Name", "Name must be specified."));
}
return result;
}
}
CustomRunType.java:
import java.util.Map;
import jetbrains.buildServer.serverSide.PropertiesProcessor;
import jetbrains.buildServer.serverSide.RunType;
import jetbrains.buildServer.serverSide.RunTypeRegistry;
import jetbrains.buildServer.web.openapi.PluginDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class CustomRunType extends RunType {
public CustomRunType(RunTypeRegistry runTypeRegistry, PluginDescriptor pluginDescriptor) {
runTypeRegistry.registerRunType(this);
}
@NotNull
@Override
public String getType() {
return "CustomPlugin";
}
@NotNull
@Override
public String getDisplayName() {
return "CustomPlugin";
}
@NotNull
@Override
public String getDescription() {
return "CustomPlugin";
}
@Nullable
@Override
public PropertiesProcessor getRunnerPropertiesProcessor() {
return new CustomRunTypePropertiesProcessor();
}
@Nullable
@Override
public String getEditRunnerParamsJspFilePath() {
return "editParams.jsp";
}
@Nullable
@Override
public String getViewRunnerParamsJspFilePath() {
return "viewParams.jsp";
}
@Nullable
@Override
public Map<String, String> getDefaultRunnerProperties() {
return null;
}
}
我想知道是否有人知道我做错了什么,或者我忘记了什么,或者在最好的情况下如何修复它或为此提供一个简单示例。
感谢阅读!
通常,当 editParams.jsp 和 viewParams.jsp 的路径不正确时,就会发生这种情况。
试一试 this:
private final PluginDescriptor myPluginDescriptor;
public CostumRunType(final RunTypeRegistry runTypeRegistry, final
PluginDescriptor pluginDescriptor) {
myPluginDescriptor = pluginDescriptor;
runTypeRegistry.registerRunType(this);
}
@Override
public String getEditRunnerParamsJspFilePath() {
return myPluginDescriptor.getPluginResourcesPath("editRunParams.jsp");
}
@Override
public String getViewRunnerParamsJspFilePath() {
return myPluginDescriptor.getPluginResourcesPath("viewRunParams.jsp");
}
我正在尝试在 TeamCity 中创建一个新的构建步骤,由于您需要创建一个构建运行程序才能这样做,我目前正在尝试自己创建一个。
我已经使用 Server 和 Agentside 命令创建了一个新的 Mavenproject >https://confluence.jetbrains.com/display/TCD10/Developing+Plugins+Using+Maven<。
现在我的问题是:我想创建一个新的构建步骤,为此我确实研究了来自 TeamCity 的示例插件,例如FxCop runner 并试图了解它是如何工作的。
我在服务器包中创建了一个 editParams.jsp 和一个 viewParams.jsp。我还创建了一个 CustomRunType.java 和一个 CustomRunTypePropertieProcessor.java。
好事是 buildstep 的名称显示在 TC 中,但坏事是,当我 select 自定义 buildstep 没有任何反应时,我的意思是没有显示文本字段。
editParams.jsp:
<%@ taglib prefix="props" tagdir="/WEB-INF/tags/props" %> <br>
<%@ taglib prefix="forms" tagdir="/WEB-INF/tags/forms" %><br>
<%@ taglib prefix="l" tagdir="/WEB-INF/tags/layout" %><br>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="propertiesBean" scope="request" type="jetbrains.buildServer.controllers.BasePropertiesBean"/>
<l:settingsGroup title="myTitle">
<tr>
<th><label for="Name" title="Name">Name: <span class="mandatoryAsterix" title="Mandatory field">*</span></label></th>
<td>
<props:textProperty name="Name" className="longField" />
<span class="error" id="error_Name"></span>
<span class="smallNote">Enter the Name.</span>
</td>
</tr>
</l:settingsGroup>
viewParams.jsp:
<!-- Pretty sure that here is the mistake, but no idea how to fix-->
<jsp:useBean id="propertiesBean" scope="request" type="jetbrains.buildServer.controllers.BasePropertiesBean"/>
CustomRunTypeProppertyProcessor.java:
import jetbrains.buildServer.serverSide.InvalidProperty;
import jetbrains.buildServer.serverSide.PropertiesProcessor;
import jetbrains.buildServer.util.PropertiesUtil;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Vector;
public class CustomRunTypePropertiesProcessor implements PropertiesProcessor {
@Override
public Collection<InvalidProperty> process(Map<String, String> map) {
List<InvalidProperty> result = new Vector();
String name = (String)map.get("Name");
if (PropertiesUtil.isEmptyOrNull(name)) {
result.add(new InvalidProperty("Name", "Name must be specified."));
}
return result;
}
}
CustomRunType.java:
import java.util.Map;
import jetbrains.buildServer.serverSide.PropertiesProcessor;
import jetbrains.buildServer.serverSide.RunType;
import jetbrains.buildServer.serverSide.RunTypeRegistry;
import jetbrains.buildServer.web.openapi.PluginDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class CustomRunType extends RunType {
public CustomRunType(RunTypeRegistry runTypeRegistry, PluginDescriptor pluginDescriptor) {
runTypeRegistry.registerRunType(this);
}
@NotNull
@Override
public String getType() {
return "CustomPlugin";
}
@NotNull
@Override
public String getDisplayName() {
return "CustomPlugin";
}
@NotNull
@Override
public String getDescription() {
return "CustomPlugin";
}
@Nullable
@Override
public PropertiesProcessor getRunnerPropertiesProcessor() {
return new CustomRunTypePropertiesProcessor();
}
@Nullable
@Override
public String getEditRunnerParamsJspFilePath() {
return "editParams.jsp";
}
@Nullable
@Override
public String getViewRunnerParamsJspFilePath() {
return "viewParams.jsp";
}
@Nullable
@Override
public Map<String, String> getDefaultRunnerProperties() {
return null;
}
}
我想知道是否有人知道我做错了什么,或者我忘记了什么,或者在最好的情况下如何修复它或为此提供一个简单示例。
感谢阅读!
通常,当 editParams.jsp 和 viewParams.jsp 的路径不正确时,就会发生这种情况。 试一试 this:
private final PluginDescriptor myPluginDescriptor;
public CostumRunType(final RunTypeRegistry runTypeRegistry, final
PluginDescriptor pluginDescriptor) {
myPluginDescriptor = pluginDescriptor;
runTypeRegistry.registerRunType(this);
}
@Override
public String getEditRunnerParamsJspFilePath() {
return myPluginDescriptor.getPluginResourcesPath("editRunParams.jsp");
}
@Override
public String getViewRunnerParamsJspFilePath() {
return myPluginDescriptor.getPluginResourcesPath("viewRunParams.jsp");
}