Необходимо автоматизировать утверждение/публикацию в Crafter CMS.

Я хочу автоматизировать утверждение/публикацию в 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/... и добавить туда файлы?


person Jeff R.    schedule 24.01.2017    source источник


Ответы (1)


Поскольку это работа в студии, я бы поместил ее в войну студий. Я не знаю, есть ли точка расширения для этого.

person gbags    schedule 24.01.2017
comment
Да, я сделал это на данный момент, но надеюсь, что есть более чистый способ справиться с этим. - person Jeff R.; 24.01.2017