Я хочу автоматизировать утверждение/публикацию в Crafter 2.5.2. По сути, у меня есть одобренный статический контент, который добавляется в репозиторий отдельной службой, и я хотел бы отправить его на свои конечные точки публикации для определенного сайта.
Я не вижу способа сделать это с помощью простой настройки, поэтому я предположил, что должен создать задание и настроить его в файле /config/site.xml моего сайта. Осматриваясь в поисках примера, я вижу content-monitoring.groovy на сайте по умолчанию, поэтому я скопировал и обновил код. Однако, когда он запускается, я получаю классную ошибку времени компиляции о невозможности импортировать CronJobContext.
Я предположил, что мне нужно получить билет и установить CronJobContext так же, как это делает content-monitoring.groovy, поэтому у меня есть этот импорт. Любые предложения, что я должен сделать, чтобы исправить это или лучший способ автоматизировать мою публикацию, были бы потрясающими.
Вызвано: 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? Я смог добавить свой отличный скрипт в мою взорванную войну в webapps/studio/default-site/scripts/jobs/every-5-minutes и перезапустить, и он загрузился и заработал. Однако я бы предположил, что перезапись студийной WAR — плохая идея. Есть ли какой-то чистый способ добавить скрипт и настроить задание для запуска в контексте craftercms/default-site, например, обновить файл контекста в tomcat/share/classes/studio/... и добавить туда файлы?