Skip to main content

Deployment & Cloud Manager

In AEM as a Cloud Service, you do not deploy by copying files to a server. Instead, you push code to a **Git repository ** and Cloud Manager builds, tests, and deploys it through a pipeline. This chapter covers the entire path from code to production.

The deployment model

StepWhat happens
PushDeveloper pushes code to the Cloud Manager Git repo
BuildMaven builds the project, runs tests, validates code quality
Deploy to DevThe all package is deployed to the development environment
Approve & go liveBusiness approval, then deploy to production

Cloud Manager

Cloud Manager is Adobe's CI/CD platform for AEMaaCS. It provides:

  • Git repository -- managed Git for your project
  • Build pipelines -- Maven builds, code quality, security scans
  • Environments -- dev, stage, production
  • Monitoring -- logs, metrics, alerts

Accessing Cloud Manager

  1. Log in to Adobe Experience Cloud
  2. Navigate to Cloud Manager
  3. Select your program (a program maps to one AEM project)

Programs and environments

EnvironmentPurposeAccess
DevDevelopment and integration testingDevelopers
StagePre-production testing, UATQA team, stakeholders
ProductionLive siteEnd users
RDERapid Development Env (no pipeline needed)Developers

Git repository

Cloud Manager provides a managed Git repository. Your project structure maps to it:

repository-root/
├── pom.xml
├── core/
├── ui.apps/
├── ui.content/
├── ui.config/
├── ui.frontend/
├── all/
├── dispatcher/
└── it.tests/

Connecting your local project

# Add Cloud Manager as a remote
git remote add adobe https://git.cloudmanager.adobe.com/<org>/<program>/

# Push your code
git push adobe main

Or use Cloud Manager's Git directly as your primary repo. Many teams use GitHub/GitLab as the primary repo and sync to Cloud Manager via CI/CD.

Pipelines

Pipelines automate the build-test-deploy process.

Full-stack pipeline stages

  1. Maven Build -- compiles your project (mvn clean install)
  2. Unit Tests -- runs core/ tests
  3. Code Quality -- static analysis checks (coverage, bugs, maintainability)
  4. Security Scan -- checks for known vulnerabilities
  5. Deploy -- installs packages on the target environment
  6. Functional Tests -- runs integration tests (it.tests/)
  7. UI Tests -- runs end-to-end browser tests (if configured)

Pipeline types

Besides the full-stack pipeline, Cloud Manager supports specialized pipelines:

Pipeline typeDeploysUse when
Full-stackAll modules (core, ui.apps, ui.config, dispatcher, etc.)Java, component, config, or Dispatcher changes
Frontend-onlyOnly ui.frontend (compiled CSS/JS)CSS/JS-only changes -- much faster (~10 min)
Config-onlyOSGi configs and Dispatcher configConfiguration changes without a full build

Frontend-only pipelines skip the Java build entirely, which dramatically shortens the deploy cycle for UI work. Config-only pipelines are useful for toggling feature flags or updating Dispatcher rules without redeploying code.

Creating a pipeline

  1. In Cloud Manager, go to Pipelines
  2. Click Add Pipeline
  3. Choose Production or Non-Production
  4. Select the pipeline type (Full-stack, Frontend, or Config)
  5. Configure the trigger:
    • On Git Changes -- auto-trigger on push
    • Manual -- trigger manually
  6. Select the Git branch
  7. Configure quality gates (code coverage thresholds, etc.)

Running a pipeline

  1. Click Run on the pipeline
  2. Watch the stages execute in the Cloud Manager UI
  3. If a stage fails, review the logs:
    • Build logs for compilation errors
    • Test logs for test failures
    • Quality logs for static analysis findings

Code quality gates

Cloud Manager enforces quality gates:

Gate areaTypical expectation
Unit test coverageMeets configured threshold
ReliabilityNo blocking/high-severity defects
SecurityNo blocking/high-severity vulnerabilities
MaintainabilityWithin acceptable quality thresholds

Failing quality gates blocks deployment. You can override non-critical failures, but this requires manager approval.

Rapid Development Environments (RDE)

RDEs are fast-iteration environments for developers. Unlike the full pipeline (which takes 30--60 minutes), RDE deployments take seconds.

Setting up an RDE

  1. In Cloud Manager, create an RDE environment
  2. Install the AEM RDE CLI plugin:
aio plugins:install @adobe/aio-cli-plugin-aem-rde
  1. Connect to your RDE:
aio aem:rde:setup

Deploying to RDE

# Deploy the entire project
aio aem:rde:install all/target/mysite.all-1.0-SNAPSHOT.zip

# Deploy just the core bundle (fast!)
aio aem:rde:install core/target/mysite.core-1.0-SNAPSHOT.jar

# Deploy a content package
aio aem:rde:install ui.apps/target/mysite.ui.apps-1.0-SNAPSHOT.zip

# Deploy Dispatcher config
aio aem:rde:install dispatcher/src --type dispatcher

RDE workflow

The cycle time is dramatically shorter than a full pipeline. Use RDEs for:

  • Trying out new features
  • Debugging deployment issues
  • Testing OSGi configurations
  • Validating Dispatcher rules

Note: RDE is for development only. Always use the full pipeline for stage and production.

Environment-specific configuration

OSGi configurations vary by environment using run mode folders (chapter 3):

ui.config/src/main/content/jcr_root/apps/mysite/osgiconfig/
├── config/ # All environments
├── config.author/ # Author instances
├── config.publish/ # Publish instances
├── config.dev/ # Dev environment
├── config.stage/ # Stage environment
└── config.prod/ # Production

Environment variables

AEMaaCS supports environment-specific variables in Cloud Manager:

  1. Go to Environments > select your environment
  2. Click Configuration
  3. Add variables:
VariableTypeExample
API_KEYSecretsk-abc123...
ANALYTICS_IDStandardUA-12345-1
FEATURE_FLAGStandardtrue

Access in OSGi configs:

{
"api.key": "$[secret:API_KEY]",
"analytics.id": "$[env:ANALYTICS_ID]"
}

The $[env:...] and $[secret:...] placeholders are resolved by AEM at config loading time. To use these values in Java, read them through the OSGi configuration -- not directly from the environment:

@Component(service = AnalyticsService.class)
@Designate(ocd = AnalyticsConfig.class)
public class AnalyticsServiceImpl implements AnalyticsService {

private String analyticsId;

@Activate
protected void activate(AnalyticsConfig config) {
// The value comes from the .cfg.json that references $[env:ANALYTICS_ID]
this.analyticsId = config.analytics_id();
}
}

Monitoring and logs

Cloud Manager logs

Access logs from Cloud Manager:

  1. Go to Environments > select environment
  2. Click Logs
  3. Available logs:
LogContains
aemerrorAEM error log
aemrequestHTTP request log
aemaccessAccess log
dispatcherDispatcher log
cdnCDN log

Log tailing

Use the CLI to tail logs in real time:

aio aem:log:tail --environment <env-id> --service author --name aemerror

Going to production -- checklist

Before your first production deployment:

AreaCheck
Code qualityAll quality gates pass
TestsUnit, integration, and UI tests pass
DispatcherConfig validated with Dispatcher SDK
PerformanceLoad testing completed
SecuritySecurity scan passes, sensitive paths blocked
SEOSitemap, robots.txt, canonical URLs, meta tags
AnalyticsTracking configured and verified
ContentContent authored and reviewed
RedirectsOld URL redirects configured
DNSDomain pointed to Adobe CDN
SSLCertificate provisioned via Cloud Manager
MonitoringAlerts configured for errors and performance

Migrating from AEM 6.5

If you are moving an existing AEM 6.5 project to AEMaaCS, the Content Transfer Tool (CTT) migrates content (pages, assets, users) from your on-premise or managed-services instance to the cloud. The tool handles extraction, ingestion, and validation. See the Content Transfer Tool documentation for details.

For deeper deployment patterns, see the Deployment, Cloud Service, Testing, and Security Basics references.

Summary

You learned:

  • The deployment model -- Git > Cloud Manager > pipeline > environments
  • Cloud Manager -- Git, pipelines, environments, monitoring
  • Pipeline types -- full-stack, frontend-only, config-only
  • Pipeline stages -- build, test, code quality, security, deploy
  • Rapid Development Environments -- fast iteration with the RDE CLI
  • Environment-specific config -- run modes, environment variables
  • Monitoring -- logs, tailing
  • Production checklist -- what to verify before going live
  • Content Transfer Tool for AEM 6.5 to AEMaaCS migration

Congratulations

You have completed the AEM Beginners Guide! You now understand:

  • The AEM technology stack (JCR, Sling, OSGi)
  • How to build components (HTL, dialogs, Sling Models)
  • How to create pages (templates, policies, Core Components, client libraries)
  • Headless content delivery (Content Fragments, GraphQL)
  • Multi-site and multi-language management (MSM, i18n)
  • Production operations (Dispatcher, Cloud Manager, deployment)

Ready to put it all into practice? The next chapter has six hands-on projects -- from building a simple component to hardening a Dispatcher config -- designed to reinforce everything you have learned.

Next up: Practice Projects -- six progressively challenging projects to build your AEM skills through hands-on practice.

For reference material beyond the beginner guide, explore the AEM documentation section.