我想在Crafter 2.5.2中自动化Approve / Publish。基本上,我已经获得了一些经过批准的静态内容,这些内容会被一个单独的服务放入存储库中,我想将其推送到我的特定网站的发布端点。
我没有看到通过简单配置的任何方法来执行此操作,因此我假设我应该创建一个作业并在我的站点的/config/site.xml中配置它。查看示例,我在默认站点中看到content-monitoring.groovy,因此我复制并更新了代码。但是,当它运行时,我得到一个关于无法导入CronJobContext的groovy编译时错误。
我认为我需要获取一张票并设置CronJobContext的方式与content-monitoring.groovy一样,这就是我导入的原因。任何建议我应该做些什么来解决这个或更好的方法来自动化我的发布将是很棒的。
引起:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: mysite:/scripts/jobs/jobBulkPublish.groovy:2:无法解析类org.craftercms.studio.api.v1.job.CronJobContext @第2行,第1列。 import 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.")
}
EDIT 现在我更多地想到这一点,我想知道问题是否在我部署的站点上下文中运行,这就是导入失败的原因。我希望这是从Crafter Studio运行而不是在我的网站的预览/部署引擎中运行,因为它的目的是发布。如果这是真的,我将如何创建一个应该在craftercms网站上运行的作业?我能够将我的groovy脚本放入我在webapps / studio / default-site / scripts / jobs /每5分钟的爆炸战中,然后重启并加载并运行。但是,我认为覆盖工作室WAR是一个坏主意。是否有一些干净的方法来添加脚本并配置作业以在craftercms / default-site上下文中运行,例如更新tomcat / share / classes / studio /中的上下文文件并在那里添加文件?
答案 0 :(得分:0)
由于这是一项Studio工作,我会把工作放在Studio战争中。我不知道是否有延伸点。