【问题标题】:TeamCity BuildRunner PluginTeamCity BuildRunner 插件
【发布时间】:2018-01-01 20:19:07
【问题描述】:

我正在尝试在 TeamCity 中创建一个新的构建步骤,由于您需要创建一个构建运行程序,因此我目前正在尝试自己创建一个。
我使用 Server and Agentside 命令创建了一个新的 Mavenproject >https://confluence.jetbrains.com/display/TCD10/Developing+Plugins+Using+Maven 现在我的问题是:我想创建一个新的构建步骤,为此我确实查看了来自 TeamCity 的示例插件,例如FxCop 跑步者并试图了解它是如何工作的。
我在服务器包中创建了一个editParams.jsp 和一个viewParams.jsp。我还创建了一个 CustomRunType.java 和一个 CustomRunTypePropertieProcessor.java。
好处是构建步骤的名称显示在 TC 中,但不好的是,当我选择自定义构建步骤时没有任何反应,我的意思是没有显示文本字段。

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

我想知道是否有人知道我做错了什么,或者我忘记了什么,或者在最好的情况下如何修复它或一个简单的示例。

感谢阅读!

【问题讨论】:

  • 嗨。我意识到距离最初的问题已经有一段时间了,但我想请问您是否知道您将“viewParams.jsp”和“editParams.jsp”存储在文件夹结构中的哪个位置?由于某种原因,我无法在我的项目中完成这项工作。谢谢。
  • 好的,一整天后,我在发布此评论后才弄清楚。 TLDR;带有 *.jsp muset 的文件夹被命名为“buildServerResources”,并且必须位于 src/main/resources 中。 confluence.jetbrains.com/display/TCD18/….

标签: java maven jsp plugins teamcity


【解决方案1】:

通常,只有当 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");
}

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多