blog image

Handle Multiple Projects With Cloud Manager

  • icons15 March, 2021
  • iconsVarshish Bhanushali

Adobe Cloud Manager comes provisioned with a single git repository that is used to deploy code using Cloud Manager’s CI/CD pipelines. If your code is split across multiple repositories which is often the case in larger Adobe Experience Manager Implementations, you will need to consolidate multiple git repositories into a single git repository.

In this article, I will walk through steps to consolidate multiple tenants/git repositories containing your Adobe Experience Manager multi-module projects into a single repository and sync that with the Cloud Manager git repository.

In this walkthrough I will execute the following steps at a high level:

  1. Generate a new Project A using the Adobe Experience Manager project archetype
  2. Re-organize project A for consolidation and Commit project A to git
  3. Generate a new Project B using the Adobe Experience Manager project archetype
  4. Re-organize project B for consolidation Commit project B to git
  5. Merge project B/master into project A/master

Step 1 : Generate a new Project A using the Adobe Experience Manager project archetype

In this step, we will create a new Adobe Experience Manager project as project A using the Adobe Experience Manager archetype. The project structure is as per the below screenshot:

Step 2 : Re-organize project A for consolidation

1. Navigate to the project A using command line tool.

2. Create new folder.

mkdir project-A

3. Now move all the modules except the dispatcher module inside project-A folder.

git mv all  analyse  core  it.test  ui.apps.structure  ui.apps  ui.config  ui.frontend  ui.test pom.xml project-A

4. Create a new pom.xml file outside project-A folder and update with following content

<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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
    	<groupId>com.consolidated</groupId>
    	<artifactId>consolidated-aem-project</artifactId>
    	<packaging>pom</packaging>
    	<version>1.0.0-SNAPSHOT</version>
    	<description>consolidated-aem-project</description>
	    <modules>
        	<module>dispatcher</module>
		    <module>project-A</module>
    	</modules>
</project>

5. Also update the dispatcher’s module pom.xml such that the newly created pom.xml is a parent of the dispatcher module. 

6. Test the project by running

mvn clean install

7. Commit and push the changes to git. The resulting project structure should look like below.

Step 3 : Generate a new Project B using the Adobe Experience Manager project archetype

In this step, we will create a new Adobe Experience Manager project as project B using the Adobe Experience Manager archetype as shown below.

Step 4 : Re-organize project B for consolidation

1. Navigate to the project B using command line tool

2. Create new folder

mkdir project-B

3. Now move all the modules except the dispatcher module inside the project-B folder.

git mv all  analyse  core  it.test  ui.apps.structure  ui.apps  ui.config  ui.frontend  ui.test pom.xml project-B

4. Delete dispatcher module as we are going to merge this with project A and over there we have a dispatcher module. 

5. Test the project by running 

mvn clean install

6. Commit and push the changes to git. The resulting project structure will look like below.

Step 5 : Merge project B/master into project A/master

In this step, we are going to merge the two projects and are going to consolidate them into one. This consolidated repo is then used as a cloud manager repo so the cloud manager pipeline will able to build both the projects.

1. Navigate to the project A and add project-b as GitHub remote repository for project B

git remote add project-b ../project-b

2. Now fetch the project B

git fetch project-b --no-tags

3. Merge the project B and final consolidated project looks like below

git merge project-b/master --allow-unrelated-histories

4. After a successful merge, we need to modify the root pom.xml such that it points to project-A and project-B projects

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
    	<groupId>com.consolidated</groupId>
    	<artifactId>consolidated-aem-project</artifactId>
    	<packaging>pom</packaging>
    	<version>1.0.0-SNAPSHOT</version>
    	<description>consolidated-aem-project</description>
	    <modules>
        	<module>dispatcher</module>
		    <module>project-A</module>
		    <module>project-B</module>
    	</modules>
</project>

5. Verify the build

mvn clean install

6. Remove the project-b remote

git remote remove project-b

7. Commit and push the changes to project-A

Project-A will be your new consolidated git repo which can be sync’d with cloud manager GIT and deployed by the pipeline.

Are you handling multiple projects with Cloud Manager? How has it turned out for you until now? If you are considering Cloud Manager to handle multiple projects and in need of help to get it done, contact us today

user pic

Neha Yagnesh Parekh

March 15, 2021

This is interesting. I will definitely give it a try. Thanks for creating such a great article, Varshish. Keep up the good work.


Reply Like

Leave A Comment

Your email address will not be published. Required fields are marked *