1

我想在 Crafter 2.5.2 中自动化批准/发布。基本上,我有一些经过批准的静态内容,这些内容通过单独的服务放入存储库,我想将其推送到特定站点的发布端点。

我看不到任何通过简单配置来做到这一点的方法,所以我认为我应该创建一个作业并在我的站点的 /config/site.xml 中配置它。环顾四周,我在默认站点中看到 content-monitoring.groovy,因此我复制并更新了代码。但是,当它运行时,我收到一个关于无法导入 CronJobContext 的 groovy 编译时错误。

我假设我需要获得一张票并以与 content-monitoring.groovy 相同的方式设置 CronJobContext,这就是我进行该导入的原因。任何我应该做些什么来解决这个问题或更好地自动化我的发布的建议都会很棒。

引起:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:mysite:/scripts/jobs/jobBulkPublish.groovy:2:无法解析类org.craftercms.studio.api.v1.job.CronJobContext @第2行,第1栏.导入org.craftercms.studio.api.v1.job.CronJobContext;

我的代码是

import org.apache.commons.lang.StringUtils;
import org.craftercms.studio.api.v1.job.CronJobContext;

def context = applicationContext
def sercurityService = context.get("cstudioSecurityService")
def deploy = context.get("cstudioDeploymentService")
def job = context.get("cstudioDeployContentToEnvironmentJobs")

def user = job.userName
def pw = job.password

def ticket = sercurityService.authenticate(user, pw)
if (StringUtils.isNotEmpty(ticket)) {
    CronJobContext cronJobContext = new CronJobContext(ticket)
    CronJobContext.setCurrent(cronJobContext)

    // publish for site = mysite environment= Production path = /static-assets/tie
    logger.info("publishing mysite /static-assets/tie")
    deploy.bulkGoLive("mysite","Production","/static-assets/tie")

    CronJobContext.clear()
}
else {
    logger.error("Not able to authenticate user for cron job.")
}

编辑现在我想到了更多,我想知道问题是否在于它在我部署的站点上下文中运行,这就是导入失败的原因。我希望它从 Crafter Studio 运行,而不是在我网站的预览/部署引擎中运行,因为它的目的是发布。如果这是真的,我将如何创建一个应该在craftercms 网站上运行的工作?我能够将我的 groovy 脚本放入 webapps/studio/default-site/scripts/jobs/every-5-minutes 的爆炸式战争中,然后重新启动,它就被加载并工作了。但是,我认为覆盖工作室 WAR 是一个坏主意。是否有一些干净的方法来添加脚本并配置作业以在 craftercms/default-site 上下文中运行,例如更新 tomcat/share/classes/studio/... 中的上下文文件并在那里添加文件?

4

1 回答 1

0

由于这是一个工作室工作,我会将这份工作放在工作室战争中。我不知道这是否有一个扩展点。

于 2017-01-24T17:23:31.243 回答