Giter VIP home page Giter VIP logo

aemdesign-aem-core's Introduction

aemdesign-aem-core

build_status Quality Gate Status codecov Maven Central github license github issues github last commit github repo size github repo size github release CodeFactor

A set of standardized components for AEM 6.4+ that can be used to speed up development of websites.

Documentation

You will require a latest version of aemdesign-aem-compose that has the base dialogs configuration content.

Sonar Quality Gate

After completing your commits and before PUSHING please run following command to push your updates to sonar. Please cleanup your updates do not add items to Reliability, Security and Maintainability measures, please dont be a ๐Ÿ’ฉ and cleanup your code ๐Ÿ™๐Ÿ˜

On Master branch run this

mvn sonar:sonar "-Dsonar.branch.name=master" "-Dsonar.host.url=https://sonarcloud.io" "-Dsonar.login=e565f767e9723a7e1b27e1c339cc24dc8ee87aaf" "-Dsonar.organization=aemdesign-github"

On other branches run this, change sonar.branch.name to your branch name

mvn sonar:sonar "-Dsonar.branch.name=develop" "-Dsonar.branch.target=master" "-Dsonar.host.url=https://sonarcloud.io" "-Dsonar.login=e565f767e9723a7e1b27e1c339cc24dc8ee87aaf" "-Dsonar.organization=aemdesign-github"

Development

If you're curious about how the next generation of components looks like, a tech preview is made available in the development branch.

Contributing

Contributions are welcome! Read the Contributing Guide for more information.

Available Components

Detailed table of component can be found here Component List

Component Category Link
Cloud Services / Rest Rest
Cloud Services / Salesforce API Salesforce API
Common / Redirection Notification Redirection Notification
Common / Static Content Include Static Content Include
Common / Timing Component Timing Component
Content / File Download Link File Download Link
Content / Embed Source Embed Source
Content / External External
Content / Link Link
Content / Content Reference Content Reference
Content / Content Fragment Content Fragment
Content / Content Template Content Template
Content / Table Table
Content / Rich Text Rich Text
Content / Tool Tip Tool Tip
Content / Page Author Page Author
Content / Page Date Page Date
Content / Page Description Page Description
Content / Page Tags Page Tags
Content / Page Title Page Title
Details / Generic Details Generic Details
Details / Contact Details Contact Details
Details / Event Details Event Details
Details / Location Details Location Details
Details / News Details News Details
Details / Page Details Page Details
Layout / Article Article
Layout / Aside Aside
Layout / Breadcrumb Breadcrumb
Layout / Columns Columns
Layout / Content Block Content Block
Layout / Content Block Lock Content Block Lock
Layout / Content Block Menu Content Block Menu
Layout / Content Tabs Content Tabs
Layout / Footer Footer
Layout / Header Header
Layout / Nav Bar Nav Bar
Layout / Container Container
Lists / Asset List Asset List
Lists / Contact List Contact List
Lists / Event List Event List
Lists / Lang Nav Lang Nav
Lists / List List
Lists / List Nav List Nav
Lists / Location List Location List
Lists / News List News List
Lists / Page List Page List
Lists / Search Results List Search Results List
Lists / Tag List Tag List
Lists / Nav List Nav List
Media / Audio Audio
Media / Image Image
Media / Video Video
Analytics / Analytics Data Layer Analytics Data Layer
Template / AEM.Design Base Page AEM.Design Base Page
Template / Cloud Config / AddThis AddThis
Template / Cloud Config / Google Analytics Google Analytics
Template / Cloud Config / Google Map Google Map
Template / Column / AEM.Design One Column Page AEM.Design One Column Page
Template / Column / AEM.Design Three Column Page AEM.Design Three Column Page
Template / Column / AEM.Design Two Column Page AEM.Design Two Column Page
Template / Common / Design Importer Design Importer
Template / Experience Fragment / AEM.Design Experience Fragment AEM.Design Experience Fragment
Widgets / AddThis / Addthis Button Addthis Button
Widgets / Online Media Online Media
Widgets / Search Box Search Box
Workflow / Process Payload Process Payload
Workflow / Project Task Manager Project Task Manager
Workflow / Project Update Project Update
Workflow / Rest Rest
Workflow / Salesforce API Salesforce API
Workflow / Send Email Send Email
Coral / Common/Form / Tag Field Tag Field
Coral / Datasources / Forms Forms
Coral / Datasources / Tags Tags
Coral / Foundation / Accordion Accordion
Coral / Widgets/Form / Asset Options Asset Options

Component Versioning

The components' versioning scheme is documented on the AEM Core WCM Components' versioning policies wiki page.

Module Purpose

Following is a description of each repo and their purpose.

For more information see Project Artifacts

Repo Notes
aemdesign-aem-author/ has all of the components and configurations that modify/update AEM
aemdesign-aem-common/ has all of the components code
aemdesign-aem-core-deploy/ monolith package for all projects
aemdesign-aem-services/ has all of the code that compiled and installed by common project

System Requirements

The latest version of the Core Components, require the below system requirements:

AEM Version 2.0.0
6.4 yes
6.5 yes

Installation

To install everything, excluding examples, the released aggregate package aemdesign-aem-core-deploy can be installed via the AEM Package Manager.

For more information about the Package Manager please have a look at How to Work With Packages documentation page.

Package Dependencies

Following packages are dependencies and should be installed on your AEM instance before installing AEM.Design:

Build

The project has the following requirements:

  • Java SE Development Kit 8 or Java SE Development Kit 11
  • Apache Maven 3.3.1 or newer

For ease of build and installation the following profiles are provided:

  • installdeploymentpackage - installs the deploy package/bundle to an existing AEM author instance

You can use helper script for ease of local deployment

  • deploy-local - deploy aemdesign-aem-core-deploy package to your local AEM instance running on port 4502
  • deploy-local-publish - deploy aemdesign-aem-core-deploy package to your local AEM instance running on port 4503

UberJar

This project relies on the AEM 6.4 cq-quickstart. This is publicly available on https://repo.adobe.com

For more details about the UberJar please head over to the How to Build AEM Projects using Apache Maven documentation page.

Include core components into your own project maven build

To add core components to your project, you will need to add it to your maven build. The released version of the framework are available on the public maven repository at https://repo1.maven.org/maven2/design/aem/aemdesign-aem-core-deploy/

To include the deploy package into your own project's maven build using maven you can add the dependency to your pom.xml like this

<dependency>
    <groupId>design.aem</groupId>
    <artifactId>aemdesign-aem-core-deploy</artifactId>
    <type>zip</type>
    <version>2.0.100</version>
</dependency>

and then add this subpackage to your sub package section

 <subPackage>
     <groupId>design.aem</groupId>
     <artifactId>aemdesign-aem-core-deploy</artifactId>
     <filter>true</filter>
 </subPackage>

inside the configuration of the content-package-maven-plugin.

Development Notes

Following section describes some of the development topics

Release Versions

Release versions are automated and based on Tags and Commit count from Tag using the git describe command

To see what the new version will be run:

mvn help:evaluate -q -DforceStdout -Dexpression=project.version

Version Convention

Version numbers for Git Tags should follow semver format:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version is automatically generated based on git commit count from last Tag

Please use MAJOR and MINOR version in Tags, PATCH version will be automatically added as a commit count since the last tag using the git describe.

Minimal core artifacts required for providing overridable AEM components.

aemdesign-aem-core-deploy module creates an aem package for deployment which contains:

  • aemdesign-aem-author
  • amedesign-aem-common

aemdesign-aem-common module embeds bundles:

  • aemdesign-aem-services

To build

To ensure the project builds correctly locally run:

mvn -Dvault.useProxy=false -DskipTests -e -U clean package

To deploy

To build and deploy the project to your local aem instance (default localhost:4502), in the project root run:

./deploy-local

To create a release

Releases are managed via the maven plugins versions-maven-plugin and maven-scm-plugin

Version numbers should follow the SemVer convention.

The release process

Prepare release branch

In preparation for a release, create a new git release branch from the current master snapshot branch:

  1. Create a new release branch.
    • mvn scm:branch -Dbranch=release/<version> -Dmessage="creating release branch <version>"
  2. Ensure you are on the new release branch.
    • git checkout release/<version>
  3. Update the maven version parameter.
    • mvn versions:set -DnewVersion=<version>
  4. Check the version number was correctly applied and confirm.
    • mvn versions:commit
  5. Commit the updated version numbers to the release branch.
    • mvn scm:checkin -Dmessage="updating version numbers"

Release new version

Once the testing cycle has been completed and all code fixes have been applied to the remote release branch, we create a git tag of our version and deploy the maven aemdesign-aem-core artifact to the remote maven repository and merge our release to master branch.

  1. Ensure we are on the release branch for aemdesign-aem-core.
  2. Raise a Merge Request from the relase branch to master branch, adding the necessary reviewers.
  3. Create the git tag.
    • mvn scm:tag -Dtag="<version>"
  4. Deploy the maven release artifacts to the remote maven repository
    • <ToDo>
  5. Accept the aemdesign-aem-core Merge Request and delete the release branch.
  6. Update the Release history section in this readme with details of the new release.

Release history

Please review Versions for all version history

Commit Signatures

Please ensure you have GPG setup and you sign all of your commits.

aemdesign-aem-core's People

Contributors

arpitvarshney18 avatar chaithanyajaishankar avatar cshawaus avatar kirill-frolov avatar leachuk avatar wildone avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.