2016-08-24 1 views
2

Я использую команды диспетчера пакетов для развертывания пакетов AEM для создания узлов в составе конвейера непрерывного развертывания. Теперь я расширяю это, чтобы развернуть непосредственно для публикации узлов. Мне нужно (согласно владельцам узлов) сделать это несколько иначе.Как сообщить узел публикации AEM и узел автора отдельно через REST API

Поскольку я программирую эти взаимодействия и поддерживаю целую кучу узлов, мне было интересно, может ли конвейер вызывать некоторую конечную точку, которая каким-то образом уникальна для автора или публикации, поэтому я могу обнаружить, который был выбран на этот раз ?

Для примера приведен пример вызовов, которые я делаю.

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/samplepackage.zip?cmd=uninstall 

Я сожалею, что я еще не знаком с AEM за API API пакетов. Я получил этот пример от AEM CQ5 Tutorials, но не нашел ничего полезного, потому что я не уверен, какие API REST относятся к тому, какие типы узлов.

Если бы я мог найти дешевое и безобидное ПОЛУЧЕНИЕ, уникальное для того или другого, я бы сортировал.

+0

Вы можете получить 'http://author.local.telegraph.co.uk: 4502/system/console/status-slingsettings.json', чтобы проверить runmodes, но вам нужно будет предоставить учетные данные для системной консоли. Зачем вам это делать? Когда вы развертываете экземпляр AEM, вы устанавливаете его как автора или издателя и которые не могут быть изменены позже. Чтобы выполнить ваши скрипты по нескольким экземплярам AEM, вам все равно нужен список. Список может содержать необходимые метаданные (будь то экземпляр AEM Author или Publish) – toniedzwiedz

+0

Причина экономическая. Я не являюсь сценарием, и конвейер на самом деле представляет собой сложную систему, которая поддерживает N технологий развертывания, из которых AEM - это всего лишь один. В идеале система может хранить некоторые дополнительные данные, такие как тип узла, но потенциально более дешево спросить конечную точку. Вероятно, мы добавим функцию для хранения типа узла, или мы можем пойти таким образом, в зависимости от ответов, которые мы получаем. –

ответ

1

Я использовал этот SlingSettings API для получения строковых строп, используя которые вы можете определить, является ли это author или publish. Это довольно легкий вызов.

http(s):<host:port>/system/console/status-slingsettings.json

0

AEM предоставляет RunMode агностик способ развертывания пакетов, если у вас есть различные развертывания собираются те случаи.

В большинстве общих прецедентов пакет развертывания одинаковый для автора и публикации, а также путь развертывания, все изменения - это хост. Мы создаем отдельный проект pom для целей развертывания, который может напрямую подталкивать любой пакет к любому узлу, указанному как параметр CI Job. В нашем случае мы использовали его только для развертывания полного пакета приложений.

POM выглядит примерно так -

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>cms-parent</artifactId> 
     <groupId>com.myproject.cms</groupId> 
     <version>1.0.2</version> 
    </parent> 

    <artifactId>cms-deploy</artifactId> 
    <groupId>com.myproject.cms.deploy</groupId> 
    <packaging>pom</packaging> 
    <version>1.0.0</version> 
    <name> 
     AEM :: Deploy 
    </name> 

    <properties> 
     <app.cms.myproject.complete.version>1.0.0-SNAPSHOT</app.cms.myproject.complete.version> 
    </properties> 

    <build> 
     <plugins> 
      <!-- additionally deploy three further content-packages which are not part of the complete-package --> 
      <plugin> 
       <groupId>com.day.jcr.vault</groupId> 
       <artifactId>content-package-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <!-- override the default execution defined in the cq-parent by binding it to some invalid phase --> 
         <id>default-package</id> 
         <goals> 
          <goal>package</goal> 
         </goals> 
         <phase>foobar</phase> 
        </execution> 
        <execution> 
         <!-- override the default execution for install-package, which is called whenever you call deploy --> 
         <id>install-package</id> 
         <goals> 
          <goal>install</goal> 
         </goals> 
         <phase>foobar</phase> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <profiles> 

     <profile> 
      <id>install-myproject-complete</id> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>content-package-maven-plugin</artifactId> 
         <groupId>com.day.jcr.vault</groupId> 
         <executions> 
          <!-- deploy the scripts and classes (part of the release) --> 
          <execution> 
           <id>install-myproject-complete</id> 
           <goals> 
            <goal>install</goal> 
           </goals> 
           <configuration> 
            <artifactId>myproject-complete</artifactId> 
            <groupId>com.myproject.cms.msites</groupId> 
            <version>${app.cms.myproject.complete.version}</version> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

вы можете создать Maven проект в CI (я имею в виду Дженкинс, как CI, вы могли бы адаптироваться к серверу) и установить его в качестве параметризированного сборки который принимает host и deployment version Build Params

Следующая будет настроить Source Code Management указать выше пом проекта в вашем SCM и настроить Maven шаг сборки -

enter image description here

В цели и параметры определяют - Для развертывания Автор -

-U clean install -Pinstall-myproject-complete -Dcrx.host=${host}-author.mysite.com -Dcrx.port=4502 -e -Dapp.cms.myproject.complete.version=${version} 

Для опубликовывать развертывания -

-U clean install -Pinstall-myproject-complete -Dcrx.host=${host}-publish.mysite.com -Dcrx.port=4503 -e -Dapp.cms.myproject.complete.version=${version} 

Это базовая конфигурация, вы можете дополнительно настроить его принять либо полное имя узла/ip вместе с информацией о порте, чтобы сохранить один pipleline для развертывания

+0

Спасибо за подробный ответ, но сведения о процессе развертывания * в учреждении моего клиента * различны для каждого типа узлов. Сожалею. –

Смежные вопросы