2016-08-24 6 views
2

私は、パッケージマネージャコマンドを使用して、AEMパッケージを作成者ノードに配置して、Continuous Deploymentパイプラインの一部として使用しています。私は今これを拡張してノードをパブリッシュするために直接展開します。私は(ノード所有者によれば)これをやや異なった方法で行う必要があります。AEMパブリッシュノードと作成者ノードをREST API経由で区別する方法

私はこれらの相互作用をプログラミングしているので、ノード全体をサポートする必要があるため、パイプラインが何らかのエンドポイントを呼び出して著者やパブリッシュを呼び出すことができるかどうか疑問に思っていました。 ?

ここでは、私が作成しているコールの例を示します。

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

私は残念ながら、まだパッケージマネージャーのAPIを超えてAEMに精通しているわけではありません。私はこの例をAEM CQ5 Tutorialsから手に入れましたが、直接役立つものは何も見つかりませんでした。なぜなら、REST APIがどの種類のノードに関連しているかわからないからです。

私が安価で無害なGETを見つけることができれば、私は他とは一意であり、私は並べ替えられます。

+0

あなたは 'http://author.local.telegraph.co 'を得ることができます。runmodesを確認するには、システムコンソールの資格情報を入力する必要があります。とにかくそれをやる必要があるのはなぜですか? AEMインスタンスをデプロイするときは、作成者または発行者として設定し、後で変更することはできません。あなたのスクリプトをいくつかのAEMインスタンスに対して実行するには、それらのリストを必要とします。リストに必要なメタデータが含まれている可能性があります(インスタンスがAEM作成者か公開者かにかかわらず) – toniedzwiedz

+0

理由は経済的です。私はスクリプティングではなく、パイプラインは実際にはAEMだけのN配備技術をサポートする複雑なシステムです。理想的には、システムはノードタイプのようないくつかの余分なデータを格納することができますが、エンドポイントに問い合わせることは潜在的に安いでしょう。私たちが得た答えに応じて、ノードの種類を格納する機能を追加するか、このようにすることが可能です。 –

答えて

1

このSlingSettings APIを使用して、authorまたはpublishのいずれかを判別できるスリングランモードを取得しました。かなり軽量な呼び出しです。

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

0

AEMは、あなたがそれらのインスタンスに行く異なる展開を持っていない限り、パッケージを展開する実行モードに依存しない方法を提供します。

一般的なユースケースのほとんどで、デプロイメントパッケージは作成者と発行者で同じで、デプロイメントパスも変更されているため、すべてホストです。我々は、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プロジェクト(私はCIとしてジェンキンスを参照しています、ご使用のサーバーに適応できる)とパラメータ化ビルドとして設定を作成することができます -

POMは次のようになりますそれは次はあなたのSCMにおける上記POMプロジェクトを指すとMavenビルドステップを設定するには、ソースコード管理を設定することですhostdeployment version Build Params

を受け入れる -

目標やオプション

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} 

これはベース構成です、あなたはそれをさらにカスタマイズすることができ単一のpiplelineを維持するためにポート情報と共にnode_name/ip全体を受け入れる配備のため

+0

詳細な返信をありがとうが、ク​​ライアントの機関*の配備プロセス*の詳細は、ノードタイプごとに異なります。ごめんなさい。 –

関連する問題