1

如果您能帮助我,我是 Atlasian Bamboo 开发的新手,遇到问题。

我开发了一个竹插件,我有这个 xwork:

<xwork key="viewNFTResults" name="View NFT Results">
    <package name="nftResults" extends="buildResultView">
        <action name="viewNFTLogs" class="com.atlassian.sap.nftresults.impl.NFTLogsView">
            <result name="success" type="freemarker">/fragments/view-nft-results-log.ftl</result>
            <result name="error" type="freemarker">/fragments/error.ftl</result>
        </action>
    </package>
</xwork>
<web-item key="NFT:\${planKey}-\${buildNumber}" name="chainNFTResults" section="chainResults.subMenu/chainResults"
          weight="80">
    <label key="NFT logs"/>
    <link linkId="NFT:\${planKey}-\${buildNumber}">/build/result/viewNFTLogs.action?buildKey=${planKey}&amp;buildNumber=${buildNumber}</link>
</web-item>

在我的 ftl 文件中,我输入了 head:

<head>
    <meta name="decorator" content="result"/>
    <meta name="tab" content="chainNFTResults"/>
</head>

NFTLogsView 类扩展了 BuildResultsAction。

现在,当我在构建运行时单击 NFt 日志选项卡时,会出现此选项卡的内容,并且执行的操作和页面装饰器也可以,如下所示:

构建运行

但是当我刷新页面或构建完成时,我正在显示选项卡(我的意思是在选项卡内),我得到这个页面:

构建完成

其他选项卡消失了,我在日志中出现了许多异常,例如:

BambooActionSupport.getWebSectionsForLocation(String) threw an exception.

和...

`[INFO] [talledLocalContainer] ==> fn.hasPlanPermissionForKey("BUILD", 
stage.planKey)  [in template "lib/chains.ftl" at line 369, column 49]`

和...

BambooActionSupport.hasPlanPermission(String, String) threw an exception.

还有许多其他例外。尽管当我单击选项卡和刷新页面时操作 URL 是相同的。

请有任何建议。

4

1 回答 1

1

最后,经过一周的努力和 Atlassian 开发团队的帮助,我们找到了原因和解决方法,直到 Bamboo 解决了这个问题。

JIRA: [ https://jira.atlassian.com/browse/BAM-19884]

原因:没有为 Xwork 操作注入以下依赖项。

BambooPermissionManager、BambooAuthenticationContext、JiraApplinksService、WebInterfaceManager、VcsRepositoryConfigurationService、PlanExecutionManager、TriggerManager、PlanManager

解决方法

在扩展ViewBuildResult的类中添加以下内容,spring 扫描器将找到这些依赖项,并在 xwork 操作被实例化时使它们对插件类加载器可见。

@ComponentImport
private BambooPermissionManager bambooPermissionManager;
@ComponentImport
private BambooAuthenticationContext bambooAuthenticationContext;
@ComponentImport
private JiraApplinksService jiraApplinksService;
@ComponentImport
private WebInterfaceManager webInterfaceManager;
@ComponentImport
private VcsRepositoryConfigurationService vcsRepositoryConfigurationService;
@ComponentImport
private PlanExecutionManager planExecutionManager;
@ComponentImport
private TriggerManager triggerManager;
@ComponentImport
private PlanManager planManager;

pom.xml中添加以下内容(最新版本的 spring 扫描器可能不需要)

<Import-Package>
 org.springframework.osgi.*;resolution:="optional",
 org.eclipse.gemini.blueprint.*;resolution:="optional",
 com.atlassian.bamboo.applinks.*;resolution:="optional",
 com.atlassian.bamboo.build.*;resolution:="optional",
 com.atlassian.bamboo.plan.*;resolution:="optional",
 com.atlassian.bamboo.plan.trigger.*;resolution:="optional",
 com.atlassian.bamboo.security.*;resolution:="optional",
 com.atlassian.bamboo.user.*;resolution:="optional",
 com.atlassian.bamboo.vcs.configuration.service.*:="optional",
 com.atlassian.plugin.web.*;resolution:="optional",
 *
</Import-Package>

链接: Atlassian 论坛

https://community.developer.atlassian.com/t/problem-with-decorator-in-xwork-the-page-is-displayed-without-tabs-and-lot-of-exceptions-in-the-log/ 18516/26

于 2018-05-11T12:03:55.680 回答