如何通过 REST 区分 AEM 发布节点和作者节点 API
How to tell an AEM publish node and author node apart via REST API
我一直在使用包管理器命令将 AEM 包部署到创作节点,作为持续部署管道的一部分。我现在将其扩展为直接部署到发布节点。我需要(根据节点所有者)以稍微不同的方式执行此操作。
因为我正在对这些交互进行编程并且必须支持一大堆节点,所以我想知道管道是否可以调用某个端点,该端点对作者或发布者来说是独一无二的,这样我就可以检测到这次选择了哪个大约?
对于上下文,这是我正在拨打的电话的示例。
curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/samplepackage.zip?cmd=uninstall
很遗憾,除了包管理器之外,我(还)不熟悉 AEM API。我从 AEM CQ5 Tutorials 得到了这个例子,但没有发现其他直接有用的东西,也许是因为我不确定 REST API 与哪种节点有关。
如果我能找到一个便宜且无害的 GET,并且是独一无二的,我会被分类。
我已经使用这个 SlingSettings
API 来获取吊索运行模式,您可以使用它来确定它是 author
还是 publish
。这是一个非常轻量级的调用。
http(s):<host:port>/system/console/status-slingsettings.json
AEM 提供与运行模式无关的包部署方式,除非您对这些实例进行了不同的部署。
在大多数一般用例中,作者和发布的部署包相同,部署路径也相同,唯一不同的是主机。我们构建了一个单独的 pom 项目用于部署目的,它可以直接将任何类型的包推送到指定为 CI Job param 的任何节点。在我们的例子中,我们仅将其用于部署完整的应用程序包。
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>
您可以在 CI 中创建一个 Maven 项目(我将 Jenkins 称为 CI,您可以适应您的服务器)并将其设置为接受 host
和 deployment version
下一步是配置 源代码管理 以指向您的 SCM 中的上述 pom 项目并配置 maven 构建步骤 -
在目标和选项中指定 -
对于作者部署 -
-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}
这是 base 配置,您可以进一步自定义它以接受整个 node_name/ip 以及端口信息以保持单个部署管道
我一直在使用包管理器命令将 AEM 包部署到创作节点,作为持续部署管道的一部分。我现在将其扩展为直接部署到发布节点。我需要(根据节点所有者)以稍微不同的方式执行此操作。
因为我正在对这些交互进行编程并且必须支持一大堆节点,所以我想知道管道是否可以调用某个端点,该端点对作者或发布者来说是独一无二的,这样我就可以检测到这次选择了哪个大约?
对于上下文,这是我正在拨打的电话的示例。
curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/samplepackage.zip?cmd=uninstall
很遗憾,除了包管理器之外,我(还)不熟悉 AEM API。我从 AEM CQ5 Tutorials 得到了这个例子,但没有发现其他直接有用的东西,也许是因为我不确定 REST API 与哪种节点有关。
如果我能找到一个便宜且无害的 GET,并且是独一无二的,我会被分类。
我已经使用这个 SlingSettings
API 来获取吊索运行模式,您可以使用它来确定它是 author
还是 publish
。这是一个非常轻量级的调用。
http(s):<host:port>/system/console/status-slingsettings.json
AEM 提供与运行模式无关的包部署方式,除非您对这些实例进行了不同的部署。
在大多数一般用例中,作者和发布的部署包相同,部署路径也相同,唯一不同的是主机。我们构建了一个单独的 pom 项目用于部署目的,它可以直接将任何类型的包推送到指定为 CI Job param 的任何节点。在我们的例子中,我们仅将其用于部署完整的应用程序包。
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>
您可以在 CI 中创建一个 Maven 项目(我将 Jenkins 称为 CI,您可以适应您的服务器)并将其设置为接受 host
和 deployment version
下一步是配置 源代码管理 以指向您的 SCM 中的上述 pom 项目并配置 maven 构建步骤 -
在目标和选项中指定 - 对于作者部署 -
-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}
这是 base 配置,您可以进一步自定义它以接受整个 node_name/ip 以及端口信息以保持单个部署管道