如何获取 Teamcity 电子邮件通知 freemarker 中提供的数据模型
How to get what data-model provide in Teamcity email notification freemarker
我正在为 Teamcity 通知电子邮件做一些定制工作,我正在关注 Customizing Notifications。根据它,Teamcity 提供的数据模型是
<#-- @ftlvariable name="project" type="jetbrains.buildServer.serverSide.SProject" -->
<#-- @ftlvariable name="buildType" type="jetbrains.buildServer.serverSide.SBuildType" -->
<#-- @ftlvariable name="build" type="jetbrains.buildServer.serverSide.SBuild" -->
<#-- @ftlvariable name="agentName" type="java.lang.String" -->
<#-- @ftlvariable name="buildServer" type="jetbrains.buildServer.serverSide.SBuildServer" -->
<#-- @ftlvariable name="webLinks" type="jetbrains.buildServer.serverSide.WebLinks" -->
<#-- @ftlvariable name="var.buildFailedTestsErrors" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildShortStatusDescription" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildChanges" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildCompilationErrors" type="java.lang.String" -->
<#-- @ftlvariable name="link.editNotificationsLink" type="java.lang.String" -->
<#-- @ftlvariable name="link.buildResultsLink" type="java.lang.String" -->
<#-- @ftlvariable name="link.buildChangesLink" type="java.lang.String" -->
<#-- @ftlvariable name="responsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" -->
<#-- @ftlvariable name="oldResponsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" -->
据说
the code can be used in IntelliJ IDEA to edit the template with
completion
我没有 IntelliJ IDEA,所以我想知道有没有其他方法可以检查每个数据模型中的内容?
为了您的信息,我研究了一些关于如何在 Getting Started 下创建数据模型和模板的内容。
AFAK,如果导出到模板的对象符合JavaBean 规范,我可以通过变量名获取属性。例如,对于下面的 Class,
/**
* Product bean; note that it must be a public class!
*/
public class Product {
private String url;
private String name;
// As per the JavaBeans spec., this defines the "url" bean property
// It must be public!
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
// As per the JavaBean spec., this defines the "name" bean property
// It must be public!
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我可以像下面这样得到数据模型的属性,
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
但是,为什么Teamcity 通知模板中的build.name
可以工作?我在 http://javadoc.jetbrains.net/teamcity/openapi/8.1/jetbrains/buildServer/serverSide/SBuildType.html
处既没有看到 getName
方法也没有看到 name
变量
SBuiltType
从 BuildTypeIdentity
继承 getName()
,所以这就是 build.name
起作用的原因。
我正在为 Teamcity 通知电子邮件做一些定制工作,我正在关注 Customizing Notifications。根据它,Teamcity 提供的数据模型是
<#-- @ftlvariable name="project" type="jetbrains.buildServer.serverSide.SProject" -->
<#-- @ftlvariable name="buildType" type="jetbrains.buildServer.serverSide.SBuildType" -->
<#-- @ftlvariable name="build" type="jetbrains.buildServer.serverSide.SBuild" -->
<#-- @ftlvariable name="agentName" type="java.lang.String" -->
<#-- @ftlvariable name="buildServer" type="jetbrains.buildServer.serverSide.SBuildServer" -->
<#-- @ftlvariable name="webLinks" type="jetbrains.buildServer.serverSide.WebLinks" -->
<#-- @ftlvariable name="var.buildFailedTestsErrors" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildShortStatusDescription" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildChanges" type="java.lang.String" -->
<#-- @ftlvariable name="var.buildCompilationErrors" type="java.lang.String" -->
<#-- @ftlvariable name="link.editNotificationsLink" type="java.lang.String" -->
<#-- @ftlvariable name="link.buildResultsLink" type="java.lang.String" -->
<#-- @ftlvariable name="link.buildChangesLink" type="java.lang.String" -->
<#-- @ftlvariable name="responsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" -->
<#-- @ftlvariable name="oldResponsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" -->
据说
the code can be used in IntelliJ IDEA to edit the template with completion
我没有 IntelliJ IDEA,所以我想知道有没有其他方法可以检查每个数据模型中的内容?
为了您的信息,我研究了一些关于如何在 Getting Started 下创建数据模型和模板的内容。
AFAK,如果导出到模板的对象符合JavaBean 规范,我可以通过变量名获取属性。例如,对于下面的 Class,
/**
* Product bean; note that it must be a public class!
*/
public class Product {
private String url;
private String name;
// As per the JavaBeans spec., this defines the "url" bean property
// It must be public!
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
// As per the JavaBean spec., this defines the "name" bean property
// It must be public!
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我可以像下面这样得到数据模型的属性,
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
但是,为什么Teamcity 通知模板中的build.name
可以工作?我在 http://javadoc.jetbrains.net/teamcity/openapi/8.1/jetbrains/buildServer/serverSide/SBuildType.html
getName
方法也没有看到 name
变量
SBuiltType
从 BuildTypeIdentity
继承 getName()
,所以这就是 build.name
起作用的原因。