From cc60a7a3f7bc7b6f6c2c13a15d88f5e05e14351e Mon Sep 17 00:00:00 2001 From: Jinah Yun-Mitchell Date: Fri, 8 Nov 2024 13:38:34 -0600 Subject: [PATCH] ENDOC-815 periodic review docs/curate --- .../docs/curate/bundle-component-details.md | 57 +++++++++------ .../docs/next/docs/curate/bundle-details.md | 56 +++++++-------- .../docs/next/docs/curate/bundle-filters.md | 13 ++-- .../docs/curate/bundle-presentation-config.md | 19 +++-- .../next/docs/curate/bundle-versions-faq.md | 15 ++-- vuepress/docs/next/docs/curate/hub-details.md | 68 +++++++++--------- .../docs/curate/img/publishing-process.jpg | Bin 77994 -> 34106 bytes .../next/docs/curate/troubleshooting-guide.md | 33 +++++---- .../docs/next/docs/curate/uninstall-flow.md | 23 +++--- .../docs/curate/bundle-component-details.md | 57 +++++++++------ .../docs/v7.3/docs/curate/bundle-details.md | 56 +++++++-------- .../docs/v7.3/docs/curate/bundle-filters.md | 13 ++-- .../docs/curate/bundle-presentation-config.md | 19 +++-- .../v7.3/docs/curate/bundle-versions-faq.md | 15 ++-- vuepress/docs/v7.3/docs/curate/hub-details.md | 68 +++++++++--------- .../docs/curate/img/publishing-process.jpg | Bin 77994 -> 34106 bytes .../v7.3/docs/curate/troubleshooting-guide.md | 33 +++++---- .../docs/v7.3/docs/curate/uninstall-flow.md | 23 +++--- 18 files changed, 312 insertions(+), 256 deletions(-) diff --git a/vuepress/docs/next/docs/curate/bundle-component-details.md b/vuepress/docs/next/docs/curate/bundle-component-details.md index 4857dc959e..e72a06b928 100644 --- a/vuepress/docs/next/docs/curate/bundle-component-details.md +++ b/vuepress/docs/next/docs/curate/bundle-component-details.md @@ -5,15 +5,15 @@ sidebarDepth: 2 # Bundle Component Descriptors -Elements such as pages, content, simple widgets, fragments, and static resources are classified as platform components on Entando. This page describes each of these elements with an example. +Elements such as pages, content, simple widgets, fragments, and static resources that belong to a bundle are classified as platform components on Entando. The following paragraphs describe each of these types and how they can be used in a bundle, with an example. Currently, Entando supports the following component types: ![component-types.png](./img/component-types.png) -Each component is defined by a descriptor YAML located in the bundle `platform` directory, inside the corresponding type as listed below. During the bundle pack phase, the descriptors are added to build the Docker images for the bundle. +Each is defined by a descriptor YAML placed in the corresponding folder inside the bundle `platform` directory. During the pack phase of building an Entando bundle, the descriptors are included in the resulting Docker image following this pattern. -Here is an example structure of a bundle project: +Here is an example structure of the `platform` directory in an Entando Bundle project: ``` bundle-project/ @@ -39,7 +39,7 @@ bundle-project/ ... entando.json <= Bundle project descriptor ``` ->Note: Older names `pageModels` and `contentModels` for `pageTemplates` and `contentTemplates`, respectively, are still supported on Entando 7 but may be removed in a future release. +>Note: Older names `pageModels` and `contentModels`, for `pageTemplates` and `contentTemplates` respectively, are still supported on Entando 7 but may be phased out in future releases. ## Assets The CMS asset descriptor contains the metadata required for uploading and updating bundle assets. @@ -69,7 +69,9 @@ This descriptor contains a list of categories. ## Contents This descriptor enables content to be created and published via a bundle, according to the `status` property. The content ID is optional and enables linking from other components, like content widgets. It can be auto-generated or explicitly declared. -Groups in a content descriptor are configured by the owner group `mainGroup` and the join group `groups`. The owner group consists of users who can manage the content within the App Builder, while the join group consists of users who can view the content. +Groups in a content descriptor are configured by the owner group `mainGroup` and the join group, `groups`. The owner group consists of users who can manage the content within the App Builder, while the join group consists of users who can view the content. + +See an example of [how content is created and managed](../../tutorials/compose/content-tutorial.md). **contents-descriptor.yaml** @@ -93,7 +95,9 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and - code: body values: en: | -

For many people, financial concerns are their number one stress point. Here are 6 ways to help reduce your money stress and get motivated to take control of your finances.

+

For many people, financial concerns are their number one stress point. + Here are 6 ways to help reduce your money stress and get motivated + to take control of your finances.

- code: img values: en: @@ -126,11 +130,12 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and correlationCode: '205' name: Entando_Admin_Console_Overview_4.3.3_EN.pdf -**^ Content Links** -* Content descriptors are loaded in alphabetical order during the bundle creation process. If content X references content Y, content Y must already exist in the bundle for the reference to work. To guarantee referential integrity in a bundle, we recommend that the descriptor name for Y appears earlier in the alphabetical order then content X. -* Contents in bundles cannot make circular references to another content through the link attribute. A circular link is when content A links to content B and B links back to A. Due to the descriptor's alphabetical order of installation, the circular link will cause an error but the links can be added manually after the installation of the bundle. +**^ Code: Links** +* Content descriptors are loaded in alphabetical order during the bundle creation process. If content X references content Y, content Y must already exist in the bundle for the reference to work. To guarantee referential integrity in a bundle, we recommend that the descriptor name for Y appear earlier in the alphabetical order then content X. +* Content in bundles cannot make circular references to each other through the link attribute. A circular link is when content A links to content B and B links back to A. Due to the descriptor's alphabetical order of installation, the circular link will cause an error, but the links can be added manually after the installation of the bundle. ## Content Templates +For some additional details, see the [Content Templates Tutorial](../../tutorials/compose/content-templates-tutorial.md). **contentTemplates-descriptor.yaml** @@ -138,10 +143,12 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and contentType: CNG description: Demo Content Template - # Optional. Define the content template shape in a separate file or inside the descriptor file with `contentShape` + # Optional. Define the content template shape in a separate file or inside + # the descriptor file with `contentShape` contentShapePath: - # Optional. Define the content template shape as shown below or in a separate file with `contentShapePath` + # Optional. Define the content template shape as shown below or in a separate file + # with `contentShapePath` contentShape: >-

$content.Title.text

@@ -179,7 +186,7 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and pos: 13 ## Content Types -For more details on content type properties, refer to the [Content Type documentation](../../tutorials/compose/content-types-tutorial.md). +For some more details, refer to the [Content Types Tutorial](../../tutorials/compose/content-types-tutorial.md). **contentTypes.yaml** @@ -233,6 +240,7 @@ For more details on content type properties, refer to the [Content Type document ognlExpression: string ## Fragments +See an example of [how to use a fragment](../../tutorials/compose/widgets-fragments.md#create-a-new-fragment). **fragments-descriptor.yaml** @@ -277,7 +285,9 @@ This descriptor contains a list of languages to enable during the installation p ## Pages This descriptor creates a page for a bundle. The page layout can be fully configured with a configuration widget. Page status can be `published` or `draft`. -Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The `ownerGroup` property specifies the group of users who can manage the entity in the App Builder. The `joinGroups` property specifies those who can view or access the page. For example, setting `ownerGroup` to "free" means anyone with access to the App Builder can manage the page, whereas setting `joinGroup` to "free" means any end user can view the page in the application. +Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The `ownerGroup` property specifies the group of users who can manage the page in the App Builder. The `joinGroups` property specifies those who can view or access the page. For example, setting `ownerGroup` to "free" means anyone with access to the App Builder can manage the page, whereas setting `joinGroup` to "free" means any end user can view the page in the application. + +See an example of [how a page is created and managed](../../tutorials/compose/page-management.md) in the App Builder. **pages-descriptor.yaml** @@ -325,6 +335,7 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The pos: 13 ## Page Templates +Here's some more details about [how page templates work on Entando](../../tutorials/compose/page-management.md#create-a-page-template). **pageTemplate-descriptor.yaml** @@ -346,14 +357,16 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The x2: 11 y2: 1 defaultWidget: - code: my-widget # The widget code to apply when using the button "apply default widgets" in the page configuration UI + code: my-widget # The widget code to apply when using the button + # "apply default widgets" in the page configuration UI # A simplified way to define frames - pos: 1 description: Breadcrumb sketch: { x1: 0, y1: 0, x2: 11, y2: 1 } - # Optional. Define the page template in a separate file or inside the descriptor file with `template` + # Optional. Define the page template in a separate file or inside the descriptor file + # with `template` templatePath: page.ftl # Optional. Define the page template as below or in a separate file with `templatePath` @@ -375,7 +388,9 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The ## Static Resources -The `resources` folder in the `platform` directory contains all static resources. These files will be uploaded to Entando using the same structure, found in the App Builder File Browser public folder. +The `resources` folder in the `platform` directory contains all static resources. Once the bundle is installed, they can be found inside the App Builder File Browser, with the same file structure. + +See which [digital formats are supported on Entando](../../tutorials/compose/digital-assets-tutorial.md). ``` platform/ ... @@ -399,9 +414,9 @@ To use static files in a Widget or Page Template, use the FTL tag `<@wp.resource ``` ent ecr get-bundle-id repo=url ``` -It should return an 8 digit string of numbers and letters, e.g. bundle-id=8785d979. +It should return an 8 digit string of numbers and letters, e.g. BUNDLE-ID=8785d979. -2. YOUR-BUNDLE-CODE is YOUR-BUNDLE-NAME-YOUR-BUNDLE-ID: +2. YOUR-BUNDLE-CODE is YOUR-BUNDLE-NAME appended with YOUR-BUNDLE-ID: If YOUR-BUNDLE-NAME=first-bundle and YOUR-BUNDLE-ID=8785d979, then YOUR-BUNDLE-CODE=first-bundle-8785d979 @@ -435,9 +450,11 @@ Here are example tags to access static resources in a typical bundle: # Optional. The configUI configUi: - customElement: my-widget-config # The name of the custom element used to render the configUi + customElement: my-widget-config # The name of the custom element used to render + # the configUi resources: - - /static/js/main.js # The resources necessary for the custom element to render the configUI, like the code + - /static/js/main.js # The resources necessary for the custom element to + # render the configUi, i.e., the code **Note**: To configure micro frontends to access static assets, Entando provides a path with the following snippet: ``` js diff --git a/vuepress/docs/next/docs/curate/bundle-details.md b/vuepress/docs/next/docs/curate/bundle-details.md index a63433a0fb..986f5fa3fc 100644 --- a/vuepress/docs/next/docs/curate/bundle-details.md +++ b/vuepress/docs/next/docs/curate/bundle-details.md @@ -2,18 +2,18 @@ sidebarDepth: 2 --- -# Entando Bundle +# The Entando Bundle -The structure of an Entando Bundle leverages composable development methods, decoupling microservices, micro frontends, API management, and services such as databases. The **ent bundle CLI** module administers the process, using the descriptor `entando.json`. This single bundle descriptor defines all the components and resources of the docker-based bundle. The following page describes the descriptor, the structure, its conventions, and the building process. +The Entando Bundle is the smallest building block from which applications are built on Entando. It leverages composable development methods, decoupling microservices, micro frontends, and APIs to make it modular and easier to containerize. The **ent bundle CLI** administers the process, using a single descriptor `entando.json` to define the docker-based bundle. This page describes the Entando Bundle structure, the descriptor file, its conventions, and the packaging process. The docker-based approach is an improvement on the previous Entando Bundle structure and to see the differences, refer to the [Bundle Evolution](../reference/bundle-comparison.md) page. ## Entando Bundle Conventions * There is a single bundle descriptor, `entando.json`, initialized and managed by the [ent bundle CLI](../getting-started/ent-bundle.md). -* Microservices and micro frontends can be built independently, each with their own folders. -* The `platform` directory is dedicated to platform specific components such as fragments, pages, and static resources. For more information on component types and descriptors, see the [Bundle Component Details](bundle-component-details.md) page. -* The `svc` directory is allocated for auxiliary services and the docker-compose configuration files that define them. The ent bundle module enables, starts and stops the services. MySQL, PostgreSQL, and Keycloak services are available with Entando out of the box, and for more details, go to the [ent CLI Services page](../getting-started/ent-svc.md). +* Microservices (MSs) and micro frontends (MFEs) are built and processed independently, with a Docker image for the bundle and for each MS. +* The `platform` directory is dedicated to project specific components such as fragments, pages, and static resources. For more information on component types and corresponding descriptors, see the [Bundle Component Details](bundle-component-details.md) page. +* The `svc` directory is allocated for auxiliary services and the docker-compose configuration files that define them. The ent bundle commands enable, start and stop the services. MySQL, PostgreSQL, and Keycloak services are available with Entando out of the box, and for details on adding custom services, go to the [ent Bundle CLI Services page](../getting-started/ent-svc.md). * Optionally, a thumbnail for your bundle can be set by adding a JPG or PNG image file to the bundle root folder. The file must be named "thumbnail" and be 100kb or less, e.g. thumbnail.png. ## Project Structure @@ -53,9 +53,9 @@ platform/ <= platform specific components ![Bundle Development Process](./img/development-process.jpg) -The ent bundle CLI module manages the building and publishing of an Entando Bundle. From initialization to installation, from adding MFEs and MSs to calling for services such as Keycloak and making API claims, the ent bundle commands streamline the development process. +The ent bundle CLI module manages the building and publishing of an Entando Bundle. From initialization to installation, from adding MFEs and MSs to calling for services and making API claims, the ent bundle commands streamline the development process. -At initialization, the project scaffolding is built. A project can be started from scratch with this structure or retrieved interactively from an Entando Hub as a starting point for new bundles. Microservices, micro frontends, components, services, and API claims can then be added. At this stage, components can be run locally and independently with the ent bundle commands. +At initialization, the project scaffolding is built. A project can be started from scratch with this structure or downloaded interactively from an Entando Hub with the `ent bundle init --from-hub` command. Microservices, micro frontends, components, services, and API claims can then be added, manually or with the ent bundle CLI. At this stage, components can be run locally and independently. The next steps build and pack the project using the bundle descriptor. The specifics depend on the component type and stack. The build phase constructs the microservices and micro frontends while the pack command generates the artifacts and Docker images. Images are built for the bundle and for each microservice. @@ -63,9 +63,9 @@ In the publish step, images are pushed to a Docker registry and tagged according ![Bundle Publishing Process](./img/publishing-process.jpg) -Finally, the bundle is deployed into the Local Hub of a running Entando instance where it can then be installed. Any improvements to the bundle can be made by repeating the **four steps: pack, publish, deploy and install**. Alternatively, the install step can be done in the App Builder UI by the composer designing the application. +Finally, the bundle is deployed into the Local Hub of a running Entando instance where it can be installed. Any improvements to the bundle can be made by repeating the **four steps: pack, publish, deploy and install**. Alternatively, the install step can be completed in the App Builder UI when composing an application by upgrading the version. -At every phase of the process, options are available to fine-tune the process, and to see more information, go to the [ent bundle CLI](../getting-started/ent-bundle.md) documentation. +At every phase of the process, options are available to fine-tune the process, and for more specifics, see the [ent bundle CLI](../getting-started/ent-bundle.md) documentation. ## Bundle Descriptor entando.json The following is a list of specifications for the bundle descriptor and its component parts. @@ -73,13 +73,13 @@ The following is a list of specifications for the bundle descriptor and its comp ### Bundle Descriptor Specifications |Name|Type|Required|Description| |:---|:---|:-|:-----------------------| -|`description`|String| No |A description of the bundle project shown in the App Builder| +|`description`|String| No |A description of the bundle project displayed in the App Builder| |`displayName`|String|No|A descriptive label used in the UI in place of a name| |`global`|[Global[]](#global-specification)|No|Global bundle configuration items| |`microfrontends`|[Micro Frontends](#micro-frontends-specifications)|No|Bundle micro frontends| |`microservices`|[Microservices](#microservices-specifications)|No|Bundle microservices| |`name^`|String|Yes|The bundle project name used as the default Docker image name| -|`version`|String|Yes|The bundle version used as the default Docker image tag| +|`version`|String|Yes|The bundle version used in the default Docker image tag| ^ Bundle Name: A bundle name may only contain lowercase letters, numbers, periods(.), and dashes(-). They cannot start or end with periods or dashes. ```json @@ -111,7 +111,7 @@ The following is a list of specifications for the bundle descriptor and its comp |`stack`|Enum|Yes|*spring-boot
*node
*custom|Microservice stack | |`version`|String|Required only for a custom stack||Microservice version override| -**^ dbms none**: Oracle and other DBMS types are not supported for automatic deployment in a container. Bundle env variables should be used instead, similar to connecting the EntandoApp to an [external database](../../tutorials/devops/external-db.md). +**^ dbms none**: Oracle and other DBMS types are not supported for automatic deployment in a container. Bundle env variables should be used instead, similar to this instance of an [external database](../../tutorials/devops/external-db.md). #### Microservices Sample Code ```json @@ -147,7 +147,7 @@ The following is a list of specifications for the bundle descriptor and its comp - To utilize **environment variables**, inline or based on Kubernetes Secrets, see the [Plugin Environment Variables](../../tutorials/devops/plugin-environment-variables.md) tutorial. - - Entando uses the `healthCheckPath` to monitor the health of the microservice. A plugin in an Entando Bundle can use any technology, as long as it provides a health check service configured via the `healthCheckPath`. This path must be specified in the descriptor file and return an HTTP 200 or success status. This can be implemented by a Java service included with the Entando Blueprint in the Spring Boot application. You can also [use a Node.js service as shown here](https://github.com/entando-samples/ent-project-template-node-ms/blob/main/src/main/node/controller/health-controller.js). + - Entando uses the `healthCheckPath` to monitor the health of the microservice. A plugin or microservice in an Entando Bundle can use any technology, as long as it provides a health check service configured via the `healthCheckPath`. This path must be specified in the descriptor file and return an HTTP 200 or success status. This can be implemented by a Java service included with the Entando Blueprint in the Spring Boot application. You can also [use a Node.js service as shown here](https://github.com/entando-samples/ent-project-template-node-ms/blob/main/src/main/node/controller/health-controller.js). ### Micro Frontends Specifications |Name|Type|Required|Possible Values|Description| @@ -160,18 +160,18 @@ The following is a list of specifications for the bundle descriptor and its comp |`contextParams`|String[]| Yes | | Information extracted from the application context | |`group`|String|Yes||Visibility group name| |`name`|String|Yes||Micro frontend name| -|`stack`|Enum|Yes|*react
*angular
*custom|MFE stack| -|`type`|Enum|Yes|*widget *widget-config *app-builder|Type of MFE| |`nav`|[MenuEntry[]](#menuentry-specification)|No||Bundle menu global links| |`params`| [MfeParam[]](#mfeparam-specification) |Yes| | User configuration for executing a widget| |`paths`|String[]|Yes for `type=app-builder` and `slot=content`||App Builder activation paths| |`publicFolder`|String|No|Default is `public`|MFE public folder (typically where index.html is located)| |`slot`|Enum|Yes for `type=app-builder`|*primary-header *primary-menu *content|Named reference to an App Builder embedded position in a specific layout| +|`stack`|Enum|Yes|*react
*angular
*custom|MFE stack| |`titles`|String[]|Yes for `type=widget`||Localized widget labels| +|`type`|Enum|Yes|*widget *widget-config *app-builder|Type of MFE| |`version`|String|Required only for custom stack MFE||Microfrontend version override| #### Configure a Path for Static Assets -To configure your micro frontend with access to static assets, Entando provides two paths, one for widgets and another for EPCs. +To configure your micro frontend with access to static assets, Entando provides two paths, one for widgets and another for [Entando Platform Capabilities (EPCs)](../../tutorials/create/mfe/epc.md). * For widgets: `window.entando?.widgets['YOUR-MFE']?.basePath;` @@ -216,7 +216,7 @@ A custom `category` provides an organizing classification for `Widgets`, to appe ### API Claim Specification |Name|Type|Required|Possible Value|Description| |:-|:-|:-|:-|:------------------------| -|`bundle`|String|Yes only for `type=external`||Bundle Docker URL| +|`bundle`|String|Yes only for `type=external`||Bundle Docker URL| |`name`|String|Yes||Name| |`serviceName`|String|Yes||The name of the microservice| |`serviceUrl`| String| No ||The URL of the microservice deployed in the local environment| @@ -238,25 +238,21 @@ A custom `category` provides an organizing classification for `Widgets`, to appe } ] ``` -For more information, go to the [API Management](../getting-started/ent-api.md) page. +For more information, see the [API Management](../getting-started/ent-api.md) page. ### Command Specification -|Name|Type|Required| Description| -|:-|:-|:-|:------------------------| -|`build`|String|No| Custom build command| -|`pack`|String|No| Custom pack command| -|`run`|String|No| Custom run command| +|Name|Type|Required| Default (Stack dependent) | Description| +|:-|:-|:-|:-|:------------------------| +|`build`|String|No| mvn test, npm run test | Custom build command| +|`pack`|String|No| mvn spring-boot:run, npm run start | Custom pack command| +|`run`|String|No| mvn package, npm run build | Custom run command| -#### Command Spec Sample Code +#### Custom Command Sample Code ```json "commands": { "run": "mvn -Dspring-boot.run.arguments=\"--server.port=8082\" spring-boot:run" } ``` -Depending on the stack type, default values are: -- build: mvn test, npm run test -- run: mvn spring-boot:run, npm run start -- pack: mvn package, npm run build ### EnvironmentVariables Specification |Name|Type|Required|Description| @@ -304,12 +300,12 @@ Depending on the stack type, default values are: The following are platform-provided runtime variables. |Name| Type | Description| |:-|:---|:----------------------------------| -|`ENTANDO_TENANT_CODE`| string | For multitenant environments only, automatically inserted to identify the owner tenant | +|`ENTANDO_TENANT_CODE`| string | For multitenant environments only, automatically inserted to identify the owner tenant. | |`KEYCLOAK_REALM`| string | Keycloak or Red Hat Single Sign-On (RH-SSO) realm to be used by the MS. | |`KEYCLOAK_AUTH_URL` | string | Keycloak/RH-SSO URL to be used by the MS.| |`KEYCLOAK_CLIENT_SECRET`| `secretKeyRef[]`| Keycloak/RH-SSO autogenerated clientSecret to be used by the MS. | | `KEYCLOAK_CLIENT_ID`| `secretKeyRef[]`| Keycloak/RH-SSO autogenerated clientId to be used by the MS. | -|`SERVER_SERVLET_CONTEXT_PATH` | string | Context path used to access the MS. Automatically handled by a Spring Boot MS, but can be manually set for other `stack` types.| +|`SERVER_SERVLET_CONTEXT_PATH` | string | Context path used to access the MS. Automatically handled by a Spring Boot MS but can be manually set for other `stack` types.| | `SPRING_PROFILES_ACTIVE`| string | Application profile to use when the MS runs on Entando, differentiating dev vs prod at runtime. Automatically handled by a Spring Boot MS but can be manually managed if using another technology `stack`. | | `SPRING_DATASOURCE_URL`| string| Provisioned database JDBC connection URL. Automatically handled by a Spring Boot MS but can be manually managed if using another technology `stack`. | | `SPRING_DATASOURCE_USERNAME` | string| Provisioned database username. Automatically handled for a Spring Boot MS, but can be manually managed if using another technology `stack`.| diff --git a/vuepress/docs/next/docs/curate/bundle-filters.md b/vuepress/docs/next/docs/curate/bundle-filters.md index c49a7f808b..1f0b75cc18 100644 --- a/vuepress/docs/next/docs/curate/bundle-filters.md +++ b/vuepress/docs/next/docs/curate/bundle-filters.md @@ -1,12 +1,15 @@ +--- +sidebarDepth: 2 +--- # Filtering Bundles -Entando Bundles are filterable by component, status or textual search from the App Builder user interface. +Entando Bundles can be filtered by its status, component part, or textual search from the App Builder user interface. ![App Builder bundle filtering](./img/bundle-filtering.png) ## Filtering Bundles by Component -To filter a bundle by component, its custom resource on the Entando Cluster must contain appropriate labels. Valid labels are: widget, plugin, fragment, pageTemplate, contentType and contentTemplate. To correctly define a label in a K8s resource requires both a key and value, but Entando uses only the key when filtering. Although the value is arbitrary, we recommend a setting of `"true"` for clarity and simplicity. +To filter a bundle by component, its custom resource in the Entando Cluster must contain appropriate labels. Valid labels are: widget, plugin, fragment, pageTemplate, contentType and contentTemplate. To correctly define a label in a K8s resource requires both a key and value, but Entando uses only the key when filtering. Although the value is arbitrary, we recommend a setting of `"true"` for clarity and simplicity. ### Supported Labels Keys @@ -68,13 +71,13 @@ spec: ## Filtering Bundles by Status -Entando Bundles are filterable by availability and install status. Select the `Explore` tab to see the full list of bundles available in the Kubernetes cluster. Select the `Installed` tab to see the list of currently installed bundles. +Entando Bundles are filterable by availability and install status. Select the `Explore` tab to see the full list of bundles available in the Kubernetes cluster. Select the `Installed` tab to see the list of currently installed bundles in the Local Hub of the App Builder. ## Filtering Bundles by Textual Search -Use the textual search to return bundles that contain certain keywords in their name, description or version. When creating a new bundle, bear in mind that a textual search is performed against data extracted from the bundle CRD file. +Use the textual search to return bundles that contain certain keywords in their name, description or version. When creating a new bundle, bear in mind that a textual search is performed against data extracted from the bundle custom resource definition. ## Mixing Search Criteria -Filtering can be refined by combining component, status and textual search criteria. For example, you could search for all available bundles (filter by status) that contain `Page Templates` (filter by component) and the word `Login` in their name (filter by textual search). +Filtering can be refined by combining component, status and textual search criterias. For example, you could search for all available bundles (filter by status), that contain `Page Templates` (filter by component), with the word `Login` in the name (filter by textual search). diff --git a/vuepress/docs/next/docs/curate/bundle-presentation-config.md b/vuepress/docs/next/docs/curate/bundle-presentation-config.md index d41be3070b..db6b2df82c 100644 --- a/vuepress/docs/next/docs/curate/bundle-presentation-config.md +++ b/vuepress/docs/next/docs/curate/bundle-presentation-config.md @@ -1,11 +1,16 @@ +--- +sidebarDepth: 2 +--- # Customize Bundle Info Shown in App Builder -An example of how bundles are displayed in the Local Hub of the App Builder is shown below: +To modify what is displayed for your bundles in the Local Hub, there are a few specifications that can be customized. This is helpful when there are many bundles or they are shared across teams and organizations. + +Bundles are typically displayed in the Local Hub of the App Builder like this: ![Hub user interface in Entando App Builder](./img/local-hub-page.png) -The corresponding custom resource file on Kubernetes contains content similar to the following: +The corresponding Kubernetes custom resource file looks similar to this: ``` apiVersion: entando.org/v1 @@ -32,10 +37,10 @@ spec: version: 0.0.1 ``` -Spec Definitions: +These are the specifications that can be customized: | Field | UI Element | -|---------------------------------|---------------------------------------------------------------------------| -| `spec.details.name` | Set the bundle title | -| `spec.details.description` | Set the bundle description (only visible in list format) | -| `spec.details.dist-tags.latest` | Set the latest version of the bundle | \ No newline at end of file +|-------------------------|---------------------------------------------------------------------------| +| `spec.details.name` | The bundle title | +| `spec.details.description` | The bundle description (only visible in list format) | +| `spec.details.dist-tags.latest` | The latest version of the bundle | \ No newline at end of file diff --git a/vuepress/docs/next/docs/curate/bundle-versions-faq.md b/vuepress/docs/next/docs/curate/bundle-versions-faq.md index 0d2596292e..aac51221a5 100644 --- a/vuepress/docs/next/docs/curate/bundle-versions-faq.md +++ b/vuepress/docs/next/docs/curate/bundle-versions-faq.md @@ -2,23 +2,22 @@ sidebarDepth: 1 --- -# Bundle Versions and Updates - FAQ +# Bundle Versions - FAQ ## Support ### 1. Does the Entando Platform support bundle versioning? -A bundle is an independent package containing one or more components. -As in other packaging systems, the [Entando Component Registry](../compose/local-hub-overview.md)(ECR) supports bundle versioning, allowing developers to create and release updates of their package over time. +A bundle is a self-contained package containing one or more components such as microservices and micro frontends. As in other packaging systems, the [Entando Component Registry](../compose/local-hub-overview.md) (ECR) supports bundle versioning, allowing developers to create and release updates of their package over time. ## How-Tos ### 1. How do I create a new version of a bundle? -To release new versions of your bundle after changes have been made, edit the `entando.json` with the new version number for the bundle, then pack and publish your images to Docker. Docker will provide tags to update the bundle version. Once you deploy and install the bundle, the new version number will appear in the App Builder. +To release new versions of your bundle after changes have been made, edit the `entando.json` with the new version number, then pack and publish your images to Docker. Docker will provide tags to update the bundle version. Once you deploy and install the bundle, the new version number will appear in the App Builder. Micro frontends and microservices can have their own version numbers, independent of the bundle version, and can be updated in the same way. ### 2. My bundle contains a microservice generated with the Entando Component Generator; does the version of the microservice have to be the same as the bundle version? -The version of the microservice - or the Docker image associated with the microservice - isn't bound to the version of the bundle containing the microservice itself. +The version of the microservice - or the Docker image associated with the microservice - isn't bound to the version number of the bundle it is a part of. Thus, the same microservice can be used in different bundles. This gives the developer control over the bundle release process, especially in situations where the bundle may contain many components. @@ -27,7 +26,7 @@ This gives the developer control over the bundle release process, especially in ### 1. How is a bundle version defined? -Bundle versions are defined by the creator and set in the bundle descriptor `entando.json`. You can have multiple versions of a bundle as long as they are defined and tagged as such. +Bundle versions are defined by the creator and set in the `entando.json` bundle descriptor. You can have multiple versions of a bundle as long as they are defined and tagged as such. ```json { @@ -49,9 +48,9 @@ Follow the recommended [semantic versioning 2.0.0](https://semver.org/#semantic- ### 3. Can I publish all versions of any bundle to my Local Hub for development? -To make all versions for all bundles available in the Local Hub, edit the environment variable `ENTANDO_BUNDLE_TAGS_TYPES` in the component manager (CM) deployment to have the value, `dev,prod`. Tag types can also be set to `dev` or `prod`. +To make all versions for all bundles available in the Local Hub, edit the environment variable `ENTANDO_BUNDLE_TAGS_TYPES` of the Entando Component Manager (ECM) deployment to have the value, `dev,prod`. Tag types can also be set to only `dev` or `prod`. -For individual bundles, see the [Bundle Management page](../getting-started/ent-bundle.md#generate-cr) for details about how to utilize the ent CLI's bundle commands to select development, production, or both types of bundles. +For individual bundles, see the [Bundle Management page](../getting-started/ent-bundle.md#generate-cr) for details about how to utilize the ent CLI's bundle commands to select for development, production, or both types of bundles. diff --git a/vuepress/docs/next/docs/curate/hub-details.md b/vuepress/docs/next/docs/curate/hub-details.md index 2a8c231f6f..b46e805043 100644 --- a/vuepress/docs/next/docs/curate/hub-details.md +++ b/vuepress/docs/next/docs/curate/hub-details.md @@ -4,54 +4,54 @@ sidebarDepth: 2 # Entando Hub Features and Definitions ## Overview -The Entando Hub is the central catalog where components are published, organized and shared. The reusable components called Bundle Groups come with versioning and publishing management capabilites in the Hub UI. The following describes the details of how this process is defined and accomplished. +The Entando Hub is the central catalog where components are published, organized and shared. When building composable applications, building blocks called bundles or bundle groups are chosen from this catalog and placed onto a page. The Hub UI provides publishing and versioning capabilites for these reusable components and the following describes the details of how this process works. -Entando Hub Features: +**Entando Hub Features:** -- Centralize components and business capabilities for use across teams, groups, or clients +- Centralize components and packaged business capabilities (PBCs) for use across teams, projects, or clients - Publish and manage components, and communicate component features, versions and metadata -- Perform business-level assessment of component readiness +- Perform business-level assessments of component readiness -The Hub can be utilized in several ways in any Entando Application: -* The **Local Hub**, included in the Entando App Builder, displays a collection of ready-to-use components. They can be used to compose an application or as a starting point to create new components. +The Entando Platform provides three variations of the catalog. They are all directly accessible from the App Builder to make it easy to find and select the components to build your applications. -* **Entando Cloud Hub** is the public catalog containing packaged business capabilities and components provided by Entando and its partners throughout the world. +* The **Local Hub**, included in the Entando App Builder, displays a collection of ready-to-use components. They can be used to compose an application or as a starting point to create your own. -* **Enterprise Entando Hub**, applied and curated by Entando clients and partners, it can be used to share components within their respective organizations or made available for public use. +* **Entando Marketplace** is the public catalog presenting the packaged business capabilities and components developed by Entando and its partners throughout the world. -[Installation and User Guide](../../tutorials/solution/entando-hub.md) +* The **Enterprise Entando Hub** can be added to your Entando instance for your organization to share components, privately within teams, with clients, or with the public. + +The remainder of this document explores the parameters of the Enterprise Hub, and to see how it is installed, here is the [Installation and User Guide](../../tutorials/solution/entando-hub.md). ## Bundle Group Definitions -The key entities in an enterprise Hub are: +The key entities in a Hub are as follows: -- `Bundle Group`: A Bundle Group is a Hub entry, a single unit containing one or more Entando Bundles. -- `Bundle`: An Entando Bundle is the deployment unit within an Entando Application. A bundle can contain one or more components such as micro frontends, microservices, or any of the [component types](../../docs/curate/bundle-component-details.md) allowed in Entando. -- `Bundle Group Version`: A Bundle Group can have one or more versions, each with a particular status. -- `Category`: Each Bundle Group belongs to a specific category. The default categories are solution template, packaged business capability (PBC), and component collection. An admin of an enterprise Hub can create and refine the categories as desired. -- `Organization`: Bundle Groups belong to a single organization. Authors and managers can only update entries within their own organization. A single instance of the Hub can have multiple organizations. +- `Bundle`: An Entando Bundle is the basic deployment unit within an Entando Application. A bundle can contain one or more component such as micro frontends, microservices, or any of the [component types](../../docs/curate/bundle-component-details.md) allowed on Entando. +- `Bundle Group`: A bundle group is a Hub entry, a single unit containing one or more Entando Bundle. +- `Bundle Group Version`: A bundle group can have one or more versions, each with a particular status. +- `Category`: Each bundle group belongs to a specific category. The default categories are solution template, packaged business capability (PBC), and component collection. Additional categories can be customized for any Enterprise Hub. +- `Organization`: Bundle groups belong to a single organization. Authors and managers can only update entries within their own organization. A single instance of the Hub can have multiple organizations. - `User`: User identity is managed within Keycloak, where users are granted roles within a Hub instance. Users must be created in Keycloak, then added in the Hub and assigned to a specific organization. - -> A private repository can be used for a bundle, but this requires [an additional Kubernetes Secret](../../tutorials/curate/private-git-repo.md) before deployment via the App Builder. +> A private repository can be the source of a bundle, but this requires [an additional Kubernetes Secret](../../tutorials/curate/private-git-repo.md) before deployment in the App Builder. ## Roles -Three roles are defined to provide access to the enterprise Hub features: +Three roles are available for the Enterprise Hub UI to manage its catalog. All roles are tied to an organization and are defined as follows: -- `eh-author`: An author can create and edit Bundle Groups for their organization and submit them for publication. They can generate an API key. -- `eh-manager`: A manager has the capabilities of an author, but can also approve a publication request for their organization. -- `eh-admin`: An admin has full access to create, update, and delete Bundle Groups and manage users for the entire Hub instance. An admin can also create categories, organizations and private catalogs, assign users to organizations, and generate API keys. -- `guest`: Any user without one of the preceding roles is considered a guest in the enterprise Hub and is given a read-only view of the public catalog. This is also true for unauthenticated users. +- `eh-author`: An author can create and edit bundle groups and submit them for publication. They can also generate an API key for private Hubs. +- `eh-manager`: A manager has all the capabilities of an author, but also has the job of approving bundle groups for publication. +- `eh-admin`: An admin has full access to create, update, approve, and delete bundle groups, and manage users for the entire Hub instance. An admin can create categories, organizations and private catalogs, assign users to organizations, and generate API keys for private catalogs. +- `guest`: Any user without one of the preceding roles is considered a guest in the Enterprise Hub and is given a read-only view of a public catalog. This is also true for unauthenticated users. To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#user-management) ## Bundle Group Versions -The list of Bundle Group versions can be seen by clicking `View Versions` for any entry in the catalog: +Available bundle group versions can be viewed or edited from the kebab-dropdown menu of an entry as seen here: ![hub-actions.png](./img/hub-actions.png) -The following rules apply to Bundle Group versions: +The following versioning rules apply to bundle groups: - Once the first version of a group is published, the organization, name, and category can no longer be changed. -- A new version of a Bundle Group can be created (via the `New Version` option) after the first version has been published. +- A new version of a bundle group can be created only after the first version has been published. - There can be at most two active versions: one draft or publication requested version, and one published version. - When a new version is published, the previous version is set to `Archived`. - Archived versions are only visible in the versions view and are not shown elsewhere in the user interface. @@ -60,24 +60,24 @@ The following rules apply to Bundle Group versions: ## Bundle Group Status -The possible statuses for each version of a Bundle Group are as follows: +The possible statuses for each version of a bundle group are as follows: -- `Draft`: This is the default status for the first version of a Bundle Group. -- `Publication Request`: An `eh-author` sets a version to this status to request the `eh-manager` or `eh-admin` to review the version and approve it for publication. The manager or admin may also edit versions with this status. -- `Published`: Versions with this status are visible in the home page catalog of available Bundle Groups, and are also available in the App Builder-facing API. An `eh-manager` or `eh-admin` may edit published versions. +- `Draft`: This is the default status for a newly created bundle group. +- `Publication Request`: An `eh-author` sets a version to this status to request the `eh-manager` or `eh-admin` to review and approve it for publication. The manager or admin may edit versions with this status. +- `Published`: Versions with this status are visible in the Hub's catalog of available bundle groups, and are also available in the App Builder-facing API. An `eh-manager` or `eh-admin` may edit published versions. - `Archived`: Previously published versions are assigned this status. No edits can be made to an archived version. -- `Deletion Request`: An `eh-manager` or `eh-admin` can delete versions once this status has been set. +- `Deletion Request`: An `eh-manager` or `eh-admin` can delete versions once a group has been assigned this status. Notes: - An `eh-author` can change any field except organization while a version is in `Draft` status. -- There is no automated notification process when a publication request is made for a Bundle Group version. +- There is no automated notification process when a publication request is made for a bundle group version. -## Application Details +## Entando Hub Application Details -An Entando Hub includes the following key components: +An Enterprise Entando Hub includes the following key components: #### Micro Frontends / Widgets -- `Entando Hub App`: This is the main micro frontend which contains the management UI for the Hub entities noted above. +- `Entando Hub App`: This is the main micro frontend which contains the management UI for the catalog noted above. - `Entando Hub Login`: This is an optional login component which can be used in a page’s top navigation. #### Microservices diff --git a/vuepress/docs/next/docs/curate/img/publishing-process.jpg b/vuepress/docs/next/docs/curate/img/publishing-process.jpg index 971adc1d50f66bba92cae7879c9d40e406c338ce..e19e3b37fdfc992847b01e802103449383336cde 100644 GIT binary patch literal 34106 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 C8ozx2 literal 77994 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 diff --git a/vuepress/docs/next/docs/curate/troubleshooting-guide.md b/vuepress/docs/next/docs/curate/troubleshooting-guide.md index 4a701ae078..0f85003d9f 100644 --- a/vuepress/docs/next/docs/curate/troubleshooting-guide.md +++ b/vuepress/docs/next/docs/curate/troubleshooting-guide.md @@ -1,30 +1,33 @@ -# Troubleshooting ECR +--- +sidebarDepth: 2 +--- +# Troubleshooting the Entando Local Hub -## How do I access the logs? +## 1. How do I access the logs? **A bundle installation or removal has failed. How do I access the logs?** -The Entando Component Manager (CM) logs can be viewed using CLI tools like kubectl or oc, or visualization dashboards like OpenShift or K9s. +The Entando Component Manager (ECM) logs can be viewed using CLI tools like kubectl or oc, or visualization dashboards like OpenShift or K9s. ### Solution -1. To view the Component Manager logs, find the CM pod name in your instance: +1. To view the Component Manager logs, find the ECM pod name in your instance: ``` ent kubectl get pods ``` -It will be something like this: `quickstart-cm-deployment-7f74757f97-xnlbn` +It should be something like this: `quickstart-cm-deployment-7f74757f97-xnlbn` -2. Using your CM pod name and namespace, use this command to view the logs: +2. Using the ECM pod name and your namespace, use this command to view the logs: ``` -ent kubectl logs -f YOUR-PODNAME-7f74757f97-xnlbn -n YOUR-NAMESPACE +ent kubectl logs -f YOUR-ECM-PODNAME -n YOUR-NAMESPACE ``` >Notes: >1. Use the [ent CLI](../getting-started/entando-cli.md) to send commands directly to Kubernetes from the host machine. >2. The `-f` flag is optional and used to follow the logs for debugging purposes. The namespace (-n) is also optional if ent has a profile configured. -## ERROR - File not found in bundle +## 2. ERROR - File not found in bundle **Installation fails because a file has not been found in the bundle** -When a component referenced in the entando.json is missing or not properly called, the bundle installation fails and the error is reported in the logs. +When a component referenced in the `entando.json` is missing or not properly called, the bundle installation fails and the error is reported in the logs. ``` ERROR - File with name {filename} not found in the bundle @@ -34,19 +37,19 @@ ERROR - File with name {filename} not found in the bundle Verify that the component named in the descriptor file is actually at the specified location and the reference is properly formatted. Then, publish the updated bundle with `ent bundle publish`. -## My plugin Docker image is unreachable +## 3. My microservice's Docker image is unreachable **Bundle installation fails due to plugin images that are not reachable** -A bundle installation does not complete successfully because a plugin in a bundle, defined by a Docker image, is not available. +A bundle installation does not complete successfully because a microservice in a bundle, defined by a Docker image, is not available. ### Solution -This may happen if the Docker image for the plugin is located in a private registry or not yet published. Verify that the Docker image you are referencing is published, correctly formatted, and publicly available. Then, publish the updated bundle with `ent bundle publish`. +This may happen if the Docker image for the microservice is located in a private registry or not yet published. Verify that the Docker image you are referencing is published, correctly formatted, and publicly available. -## How do I uninstall a bundle +## 4. How do I uninstall a bundle **I can't uninstall a bundle because some components are in use** -When uninstalling an installed bundle, the Entando Component Manager verfies that the bundle components are not in use by any other component. An error message informs you and does not allow the removal. +When uninstalling a previously installed bundle, the Entando Component Manager verifies that the bundle components are not in use elsewhere. If any part of the bundle is in use, an error message informs you and does not allow the removal. ### Solution -A bundle cannot be uninstalled if any of its components are in use. To uninstall the bundle, the user must manually remove all references to it and all its component. \ No newline at end of file +A bundle cannot be uninstalled if any of its components are in use. To uninstall the bundle, the user must manually remove all references to it and its component parts. \ No newline at end of file diff --git a/vuepress/docs/next/docs/curate/uninstall-flow.md b/vuepress/docs/next/docs/curate/uninstall-flow.md index b0a4fdbe22..1380c6b078 100644 --- a/vuepress/docs/next/docs/curate/uninstall-flow.md +++ b/vuepress/docs/next/docs/curate/uninstall-flow.md @@ -1,26 +1,31 @@ +--- +sidebarDepth: 2 +--- # Bundle Upgrade, Downgrade, and Uninstall -An application bundle that has been installed in the Entando App Builder can be upgraded to a new version, reverted to a previous version or uninstalled at any time. You can update the bundle or just a component within that bundle, all within the App Builder. +An application bundle that has been installed in the Entando App Builder can be removed, upgraded to a new version, or downgraded to a previous version at any time. You can update the bundle group or just a component within that bundle. ## Upgrade or Downgrade Bundle Version -1. Log in to your App Builder instance and select `Hub` from the navigation on the left to enter your Local Hub. +1. Log in to your App Builder instance and select `Hub` from the left navigation bar to go to your Local Hub. 2. Click the `Installed` button to open a pop-up window with the options to update or uninstall the bundle. -3. Click the `Update` button to see a list of versions available. Choose a version. A warning will appear regarding the possible loss of features or data with the update. You may wish to review the bundle's release notes before confirming the upgrade or rollback. +3. Click the `Update` button to see the list of available versions. Choose one and a warning will appear regarding the possible loss of features or data with the update. You may wish to review the bundle's release notes before confirming the upgrade or rollback. 4. Once you confirm, a page listing all the components in the bundle appears. You can `Update All` or select each component to be updated or skipped. 5. Click `Ok` to finish. ## Uninstall a Bundle -1. Log in to your App Builder instance and select `Hub` from the navigation on the left to enter your Local Hub. -2. Click the `Installed` button to open a pop-up window with the options to update or uninstall the bundle. -3. Click the `Uninstall` button. -4. An initial check is made to verify that components are not in use outside of the bundle. A pop-up window will list the components with external references that must be removed manually and then the uninstall process may be resumed^. +1. Log in to your App Builder instance and select `Hub` from the left navigation menu to enter your Local Hub. +2. Click the `Installed` button to open a pop-up window with the available options. +3. Click `Uninstall`. +4. An initial check is done to verify that components are not in use outside of the bundle. A pop-up window will list the components with external references that must be cleared manually, and then the uninstall process may resume. 5. When the `Uninstall` is confirmed, a progress bar shows the following removal process: - Bundle resources are deleted from the Entando App Engine - Components included in the bundle are removed from the Entando App Engine - - Plugins are unlinked + - Microservices are unlinked 6. To remove the bundle from the Local Hub catalog, click the `Undeploy` button. -^ When unistalling a PBC or any component with **multiple bundles**, it is important to remove the bundles in the reverse order of installation because of dependencies. +::: tip Uninstall Order +When unistalling a PBC or a Bundle Group with multiple bundles, it is important to remove the bundles in the reverse order of installation due to dependencies. +::: ## Troubleshooting If an error occurs during the uninstall process, check out the [Troubleshooting guide](./troubleshooting-guide.md) or the [Entando Forum](https://forum.entando.com). diff --git a/vuepress/docs/v7.3/docs/curate/bundle-component-details.md b/vuepress/docs/v7.3/docs/curate/bundle-component-details.md index 4857dc959e..e72a06b928 100644 --- a/vuepress/docs/v7.3/docs/curate/bundle-component-details.md +++ b/vuepress/docs/v7.3/docs/curate/bundle-component-details.md @@ -5,15 +5,15 @@ sidebarDepth: 2 # Bundle Component Descriptors -Elements such as pages, content, simple widgets, fragments, and static resources are classified as platform components on Entando. This page describes each of these elements with an example. +Elements such as pages, content, simple widgets, fragments, and static resources that belong to a bundle are classified as platform components on Entando. The following paragraphs describe each of these types and how they can be used in a bundle, with an example. Currently, Entando supports the following component types: ![component-types.png](./img/component-types.png) -Each component is defined by a descriptor YAML located in the bundle `platform` directory, inside the corresponding type as listed below. During the bundle pack phase, the descriptors are added to build the Docker images for the bundle. +Each is defined by a descriptor YAML placed in the corresponding folder inside the bundle `platform` directory. During the pack phase of building an Entando bundle, the descriptors are included in the resulting Docker image following this pattern. -Here is an example structure of a bundle project: +Here is an example structure of the `platform` directory in an Entando Bundle project: ``` bundle-project/ @@ -39,7 +39,7 @@ bundle-project/ ... entando.json <= Bundle project descriptor ``` ->Note: Older names `pageModels` and `contentModels` for `pageTemplates` and `contentTemplates`, respectively, are still supported on Entando 7 but may be removed in a future release. +>Note: Older names `pageModels` and `contentModels`, for `pageTemplates` and `contentTemplates` respectively, are still supported on Entando 7 but may be phased out in future releases. ## Assets The CMS asset descriptor contains the metadata required for uploading and updating bundle assets. @@ -69,7 +69,9 @@ This descriptor contains a list of categories. ## Contents This descriptor enables content to be created and published via a bundle, according to the `status` property. The content ID is optional and enables linking from other components, like content widgets. It can be auto-generated or explicitly declared. -Groups in a content descriptor are configured by the owner group `mainGroup` and the join group `groups`. The owner group consists of users who can manage the content within the App Builder, while the join group consists of users who can view the content. +Groups in a content descriptor are configured by the owner group `mainGroup` and the join group, `groups`. The owner group consists of users who can manage the content within the App Builder, while the join group consists of users who can view the content. + +See an example of [how content is created and managed](../../tutorials/compose/content-tutorial.md). **contents-descriptor.yaml** @@ -93,7 +95,9 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and - code: body values: en: | -

For many people, financial concerns are their number one stress point. Here are 6 ways to help reduce your money stress and get motivated to take control of your finances.

+

For many people, financial concerns are their number one stress point. + Here are 6 ways to help reduce your money stress and get motivated + to take control of your finances.

- code: img values: en: @@ -126,11 +130,12 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and correlationCode: '205' name: Entando_Admin_Console_Overview_4.3.3_EN.pdf -**^ Content Links** -* Content descriptors are loaded in alphabetical order during the bundle creation process. If content X references content Y, content Y must already exist in the bundle for the reference to work. To guarantee referential integrity in a bundle, we recommend that the descriptor name for Y appears earlier in the alphabetical order then content X. -* Contents in bundles cannot make circular references to another content through the link attribute. A circular link is when content A links to content B and B links back to A. Due to the descriptor's alphabetical order of installation, the circular link will cause an error but the links can be added manually after the installation of the bundle. +**^ Code: Links** +* Content descriptors are loaded in alphabetical order during the bundle creation process. If content X references content Y, content Y must already exist in the bundle for the reference to work. To guarantee referential integrity in a bundle, we recommend that the descriptor name for Y appear earlier in the alphabetical order then content X. +* Content in bundles cannot make circular references to each other through the link attribute. A circular link is when content A links to content B and B links back to A. Due to the descriptor's alphabetical order of installation, the circular link will cause an error, but the links can be added manually after the installation of the bundle. ## Content Templates +For some additional details, see the [Content Templates Tutorial](../../tutorials/compose/content-templates-tutorial.md). **contentTemplates-descriptor.yaml** @@ -138,10 +143,12 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and contentType: CNG description: Demo Content Template - # Optional. Define the content template shape in a separate file or inside the descriptor file with `contentShape` + # Optional. Define the content template shape in a separate file or inside + # the descriptor file with `contentShape` contentShapePath: - # Optional. Define the content template shape as shown below or in a separate file with `contentShapePath` + # Optional. Define the content template shape as shown below or in a separate file + # with `contentShapePath` contentShape: >-

$content.Title.text

@@ -179,7 +186,7 @@ Groups in a content descriptor are configured by the owner group `mainGroup` and pos: 13 ## Content Types -For more details on content type properties, refer to the [Content Type documentation](../../tutorials/compose/content-types-tutorial.md). +For some more details, refer to the [Content Types Tutorial](../../tutorials/compose/content-types-tutorial.md). **contentTypes.yaml** @@ -233,6 +240,7 @@ For more details on content type properties, refer to the [Content Type document ognlExpression: string ## Fragments +See an example of [how to use a fragment](../../tutorials/compose/widgets-fragments.md#create-a-new-fragment). **fragments-descriptor.yaml** @@ -277,7 +285,9 @@ This descriptor contains a list of languages to enable during the installation p ## Pages This descriptor creates a page for a bundle. The page layout can be fully configured with a configuration widget. Page status can be `published` or `draft`. -Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The `ownerGroup` property specifies the group of users who can manage the entity in the App Builder. The `joinGroups` property specifies those who can view or access the page. For example, setting `ownerGroup` to "free" means anyone with access to the App Builder can manage the page, whereas setting `joinGroup` to "free" means any end user can view the page in the application. +Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The `ownerGroup` property specifies the group of users who can manage the page in the App Builder. The `joinGroups` property specifies those who can view or access the page. For example, setting `ownerGroup` to "free" means anyone with access to the App Builder can manage the page, whereas setting `joinGroup` to "free" means any end user can view the page in the application. + +See an example of [how a page is created and managed](../../tutorials/compose/page-management.md) in the App Builder. **pages-descriptor.yaml** @@ -325,6 +335,7 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The pos: 13 ## Page Templates +Here's some more details about [how page templates work on Entando](../../tutorials/compose/page-management.md#create-a-page-template). **pageTemplate-descriptor.yaml** @@ -346,14 +357,16 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The x2: 11 y2: 1 defaultWidget: - code: my-widget # The widget code to apply when using the button "apply default widgets" in the page configuration UI + code: my-widget # The widget code to apply when using the button + # "apply default widgets" in the page configuration UI # A simplified way to define frames - pos: 1 description: Breadcrumb sketch: { x1: 0, y1: 0, x2: 11, y2: 1 } - # Optional. Define the page template in a separate file or inside the descriptor file with `template` + # Optional. Define the page template in a separate file or inside the descriptor file + # with `template` templatePath: page.ftl # Optional. Define the page template as below or in a separate file with `templatePath` @@ -375,7 +388,9 @@ Groups in a page descriptor are configured by `ownerGroup` and `joinGroups`. The ## Static Resources -The `resources` folder in the `platform` directory contains all static resources. These files will be uploaded to Entando using the same structure, found in the App Builder File Browser public folder. +The `resources` folder in the `platform` directory contains all static resources. Once the bundle is installed, they can be found inside the App Builder File Browser, with the same file structure. + +See which [digital formats are supported on Entando](../../tutorials/compose/digital-assets-tutorial.md). ``` platform/ ... @@ -399,9 +414,9 @@ To use static files in a Widget or Page Template, use the FTL tag `<@wp.resource ``` ent ecr get-bundle-id repo=url ``` -It should return an 8 digit string of numbers and letters, e.g. bundle-id=8785d979. +It should return an 8 digit string of numbers and letters, e.g. BUNDLE-ID=8785d979. -2. YOUR-BUNDLE-CODE is YOUR-BUNDLE-NAME-YOUR-BUNDLE-ID: +2. YOUR-BUNDLE-CODE is YOUR-BUNDLE-NAME appended with YOUR-BUNDLE-ID: If YOUR-BUNDLE-NAME=first-bundle and YOUR-BUNDLE-ID=8785d979, then YOUR-BUNDLE-CODE=first-bundle-8785d979 @@ -435,9 +450,11 @@ Here are example tags to access static resources in a typical bundle: # Optional. The configUI configUi: - customElement: my-widget-config # The name of the custom element used to render the configUi + customElement: my-widget-config # The name of the custom element used to render + # the configUi resources: - - /static/js/main.js # The resources necessary for the custom element to render the configUI, like the code + - /static/js/main.js # The resources necessary for the custom element to + # render the configUi, i.e., the code **Note**: To configure micro frontends to access static assets, Entando provides a path with the following snippet: ``` js diff --git a/vuepress/docs/v7.3/docs/curate/bundle-details.md b/vuepress/docs/v7.3/docs/curate/bundle-details.md index a63433a0fb..986f5fa3fc 100644 --- a/vuepress/docs/v7.3/docs/curate/bundle-details.md +++ b/vuepress/docs/v7.3/docs/curate/bundle-details.md @@ -2,18 +2,18 @@ sidebarDepth: 2 --- -# Entando Bundle +# The Entando Bundle -The structure of an Entando Bundle leverages composable development methods, decoupling microservices, micro frontends, API management, and services such as databases. The **ent bundle CLI** module administers the process, using the descriptor `entando.json`. This single bundle descriptor defines all the components and resources of the docker-based bundle. The following page describes the descriptor, the structure, its conventions, and the building process. +The Entando Bundle is the smallest building block from which applications are built on Entando. It leverages composable development methods, decoupling microservices, micro frontends, and APIs to make it modular and easier to containerize. The **ent bundle CLI** administers the process, using a single descriptor `entando.json` to define the docker-based bundle. This page describes the Entando Bundle structure, the descriptor file, its conventions, and the packaging process. The docker-based approach is an improvement on the previous Entando Bundle structure and to see the differences, refer to the [Bundle Evolution](../reference/bundle-comparison.md) page. ## Entando Bundle Conventions * There is a single bundle descriptor, `entando.json`, initialized and managed by the [ent bundle CLI](../getting-started/ent-bundle.md). -* Microservices and micro frontends can be built independently, each with their own folders. -* The `platform` directory is dedicated to platform specific components such as fragments, pages, and static resources. For more information on component types and descriptors, see the [Bundle Component Details](bundle-component-details.md) page. -* The `svc` directory is allocated for auxiliary services and the docker-compose configuration files that define them. The ent bundle module enables, starts and stops the services. MySQL, PostgreSQL, and Keycloak services are available with Entando out of the box, and for more details, go to the [ent CLI Services page](../getting-started/ent-svc.md). +* Microservices (MSs) and micro frontends (MFEs) are built and processed independently, with a Docker image for the bundle and for each MS. +* The `platform` directory is dedicated to project specific components such as fragments, pages, and static resources. For more information on component types and corresponding descriptors, see the [Bundle Component Details](bundle-component-details.md) page. +* The `svc` directory is allocated for auxiliary services and the docker-compose configuration files that define them. The ent bundle commands enable, start and stop the services. MySQL, PostgreSQL, and Keycloak services are available with Entando out of the box, and for details on adding custom services, go to the [ent Bundle CLI Services page](../getting-started/ent-svc.md). * Optionally, a thumbnail for your bundle can be set by adding a JPG or PNG image file to the bundle root folder. The file must be named "thumbnail" and be 100kb or less, e.g. thumbnail.png. ## Project Structure @@ -53,9 +53,9 @@ platform/ <= platform specific components ![Bundle Development Process](./img/development-process.jpg) -The ent bundle CLI module manages the building and publishing of an Entando Bundle. From initialization to installation, from adding MFEs and MSs to calling for services such as Keycloak and making API claims, the ent bundle commands streamline the development process. +The ent bundle CLI module manages the building and publishing of an Entando Bundle. From initialization to installation, from adding MFEs and MSs to calling for services and making API claims, the ent bundle commands streamline the development process. -At initialization, the project scaffolding is built. A project can be started from scratch with this structure or retrieved interactively from an Entando Hub as a starting point for new bundles. Microservices, micro frontends, components, services, and API claims can then be added. At this stage, components can be run locally and independently with the ent bundle commands. +At initialization, the project scaffolding is built. A project can be started from scratch with this structure or downloaded interactively from an Entando Hub with the `ent bundle init --from-hub` command. Microservices, micro frontends, components, services, and API claims can then be added, manually or with the ent bundle CLI. At this stage, components can be run locally and independently. The next steps build and pack the project using the bundle descriptor. The specifics depend on the component type and stack. The build phase constructs the microservices and micro frontends while the pack command generates the artifacts and Docker images. Images are built for the bundle and for each microservice. @@ -63,9 +63,9 @@ In the publish step, images are pushed to a Docker registry and tagged according ![Bundle Publishing Process](./img/publishing-process.jpg) -Finally, the bundle is deployed into the Local Hub of a running Entando instance where it can then be installed. Any improvements to the bundle can be made by repeating the **four steps: pack, publish, deploy and install**. Alternatively, the install step can be done in the App Builder UI by the composer designing the application. +Finally, the bundle is deployed into the Local Hub of a running Entando instance where it can be installed. Any improvements to the bundle can be made by repeating the **four steps: pack, publish, deploy and install**. Alternatively, the install step can be completed in the App Builder UI when composing an application by upgrading the version. -At every phase of the process, options are available to fine-tune the process, and to see more information, go to the [ent bundle CLI](../getting-started/ent-bundle.md) documentation. +At every phase of the process, options are available to fine-tune the process, and for more specifics, see the [ent bundle CLI](../getting-started/ent-bundle.md) documentation. ## Bundle Descriptor entando.json The following is a list of specifications for the bundle descriptor and its component parts. @@ -73,13 +73,13 @@ The following is a list of specifications for the bundle descriptor and its comp ### Bundle Descriptor Specifications |Name|Type|Required|Description| |:---|:---|:-|:-----------------------| -|`description`|String| No |A description of the bundle project shown in the App Builder| +|`description`|String| No |A description of the bundle project displayed in the App Builder| |`displayName`|String|No|A descriptive label used in the UI in place of a name| |`global`|[Global[]](#global-specification)|No|Global bundle configuration items| |`microfrontends`|[Micro Frontends](#micro-frontends-specifications)|No|Bundle micro frontends| |`microservices`|[Microservices](#microservices-specifications)|No|Bundle microservices| |`name^`|String|Yes|The bundle project name used as the default Docker image name| -|`version`|String|Yes|The bundle version used as the default Docker image tag| +|`version`|String|Yes|The bundle version used in the default Docker image tag| ^ Bundle Name: A bundle name may only contain lowercase letters, numbers, periods(.), and dashes(-). They cannot start or end with periods or dashes. ```json @@ -111,7 +111,7 @@ The following is a list of specifications for the bundle descriptor and its comp |`stack`|Enum|Yes|*spring-boot
*node
*custom|Microservice stack | |`version`|String|Required only for a custom stack||Microservice version override| -**^ dbms none**: Oracle and other DBMS types are not supported for automatic deployment in a container. Bundle env variables should be used instead, similar to connecting the EntandoApp to an [external database](../../tutorials/devops/external-db.md). +**^ dbms none**: Oracle and other DBMS types are not supported for automatic deployment in a container. Bundle env variables should be used instead, similar to this instance of an [external database](../../tutorials/devops/external-db.md). #### Microservices Sample Code ```json @@ -147,7 +147,7 @@ The following is a list of specifications for the bundle descriptor and its comp - To utilize **environment variables**, inline or based on Kubernetes Secrets, see the [Plugin Environment Variables](../../tutorials/devops/plugin-environment-variables.md) tutorial. - - Entando uses the `healthCheckPath` to monitor the health of the microservice. A plugin in an Entando Bundle can use any technology, as long as it provides a health check service configured via the `healthCheckPath`. This path must be specified in the descriptor file and return an HTTP 200 or success status. This can be implemented by a Java service included with the Entando Blueprint in the Spring Boot application. You can also [use a Node.js service as shown here](https://github.com/entando-samples/ent-project-template-node-ms/blob/main/src/main/node/controller/health-controller.js). + - Entando uses the `healthCheckPath` to monitor the health of the microservice. A plugin or microservice in an Entando Bundle can use any technology, as long as it provides a health check service configured via the `healthCheckPath`. This path must be specified in the descriptor file and return an HTTP 200 or success status. This can be implemented by a Java service included with the Entando Blueprint in the Spring Boot application. You can also [use a Node.js service as shown here](https://github.com/entando-samples/ent-project-template-node-ms/blob/main/src/main/node/controller/health-controller.js). ### Micro Frontends Specifications |Name|Type|Required|Possible Values|Description| @@ -160,18 +160,18 @@ The following is a list of specifications for the bundle descriptor and its comp |`contextParams`|String[]| Yes | | Information extracted from the application context | |`group`|String|Yes||Visibility group name| |`name`|String|Yes||Micro frontend name| -|`stack`|Enum|Yes|*react
*angular
*custom|MFE stack| -|`type`|Enum|Yes|*widget *widget-config *app-builder|Type of MFE| |`nav`|[MenuEntry[]](#menuentry-specification)|No||Bundle menu global links| |`params`| [MfeParam[]](#mfeparam-specification) |Yes| | User configuration for executing a widget| |`paths`|String[]|Yes for `type=app-builder` and `slot=content`||App Builder activation paths| |`publicFolder`|String|No|Default is `public`|MFE public folder (typically where index.html is located)| |`slot`|Enum|Yes for `type=app-builder`|*primary-header *primary-menu *content|Named reference to an App Builder embedded position in a specific layout| +|`stack`|Enum|Yes|*react
*angular
*custom|MFE stack| |`titles`|String[]|Yes for `type=widget`||Localized widget labels| +|`type`|Enum|Yes|*widget *widget-config *app-builder|Type of MFE| |`version`|String|Required only for custom stack MFE||Microfrontend version override| #### Configure a Path for Static Assets -To configure your micro frontend with access to static assets, Entando provides two paths, one for widgets and another for EPCs. +To configure your micro frontend with access to static assets, Entando provides two paths, one for widgets and another for [Entando Platform Capabilities (EPCs)](../../tutorials/create/mfe/epc.md). * For widgets: `window.entando?.widgets['YOUR-MFE']?.basePath;` @@ -216,7 +216,7 @@ A custom `category` provides an organizing classification for `Widgets`, to appe ### API Claim Specification |Name|Type|Required|Possible Value|Description| |:-|:-|:-|:-|:------------------------| -|`bundle`|String|Yes only for `type=external`||Bundle Docker URL| +|`bundle`|String|Yes only for `type=external`||Bundle Docker URL| |`name`|String|Yes||Name| |`serviceName`|String|Yes||The name of the microservice| |`serviceUrl`| String| No ||The URL of the microservice deployed in the local environment| @@ -238,25 +238,21 @@ A custom `category` provides an organizing classification for `Widgets`, to appe } ] ``` -For more information, go to the [API Management](../getting-started/ent-api.md) page. +For more information, see the [API Management](../getting-started/ent-api.md) page. ### Command Specification -|Name|Type|Required| Description| -|:-|:-|:-|:------------------------| -|`build`|String|No| Custom build command| -|`pack`|String|No| Custom pack command| -|`run`|String|No| Custom run command| +|Name|Type|Required| Default (Stack dependent) | Description| +|:-|:-|:-|:-|:------------------------| +|`build`|String|No| mvn test, npm run test | Custom build command| +|`pack`|String|No| mvn spring-boot:run, npm run start | Custom pack command| +|`run`|String|No| mvn package, npm run build | Custom run command| -#### Command Spec Sample Code +#### Custom Command Sample Code ```json "commands": { "run": "mvn -Dspring-boot.run.arguments=\"--server.port=8082\" spring-boot:run" } ``` -Depending on the stack type, default values are: -- build: mvn test, npm run test -- run: mvn spring-boot:run, npm run start -- pack: mvn package, npm run build ### EnvironmentVariables Specification |Name|Type|Required|Description| @@ -304,12 +300,12 @@ Depending on the stack type, default values are: The following are platform-provided runtime variables. |Name| Type | Description| |:-|:---|:----------------------------------| -|`ENTANDO_TENANT_CODE`| string | For multitenant environments only, automatically inserted to identify the owner tenant | +|`ENTANDO_TENANT_CODE`| string | For multitenant environments only, automatically inserted to identify the owner tenant. | |`KEYCLOAK_REALM`| string | Keycloak or Red Hat Single Sign-On (RH-SSO) realm to be used by the MS. | |`KEYCLOAK_AUTH_URL` | string | Keycloak/RH-SSO URL to be used by the MS.| |`KEYCLOAK_CLIENT_SECRET`| `secretKeyRef[]`| Keycloak/RH-SSO autogenerated clientSecret to be used by the MS. | | `KEYCLOAK_CLIENT_ID`| `secretKeyRef[]`| Keycloak/RH-SSO autogenerated clientId to be used by the MS. | -|`SERVER_SERVLET_CONTEXT_PATH` | string | Context path used to access the MS. Automatically handled by a Spring Boot MS, but can be manually set for other `stack` types.| +|`SERVER_SERVLET_CONTEXT_PATH` | string | Context path used to access the MS. Automatically handled by a Spring Boot MS but can be manually set for other `stack` types.| | `SPRING_PROFILES_ACTIVE`| string | Application profile to use when the MS runs on Entando, differentiating dev vs prod at runtime. Automatically handled by a Spring Boot MS but can be manually managed if using another technology `stack`. | | `SPRING_DATASOURCE_URL`| string| Provisioned database JDBC connection URL. Automatically handled by a Spring Boot MS but can be manually managed if using another technology `stack`. | | `SPRING_DATASOURCE_USERNAME` | string| Provisioned database username. Automatically handled for a Spring Boot MS, but can be manually managed if using another technology `stack`.| diff --git a/vuepress/docs/v7.3/docs/curate/bundle-filters.md b/vuepress/docs/v7.3/docs/curate/bundle-filters.md index c49a7f808b..1f0b75cc18 100644 --- a/vuepress/docs/v7.3/docs/curate/bundle-filters.md +++ b/vuepress/docs/v7.3/docs/curate/bundle-filters.md @@ -1,12 +1,15 @@ +--- +sidebarDepth: 2 +--- # Filtering Bundles -Entando Bundles are filterable by component, status or textual search from the App Builder user interface. +Entando Bundles can be filtered by its status, component part, or textual search from the App Builder user interface. ![App Builder bundle filtering](./img/bundle-filtering.png) ## Filtering Bundles by Component -To filter a bundle by component, its custom resource on the Entando Cluster must contain appropriate labels. Valid labels are: widget, plugin, fragment, pageTemplate, contentType and contentTemplate. To correctly define a label in a K8s resource requires both a key and value, but Entando uses only the key when filtering. Although the value is arbitrary, we recommend a setting of `"true"` for clarity and simplicity. +To filter a bundle by component, its custom resource in the Entando Cluster must contain appropriate labels. Valid labels are: widget, plugin, fragment, pageTemplate, contentType and contentTemplate. To correctly define a label in a K8s resource requires both a key and value, but Entando uses only the key when filtering. Although the value is arbitrary, we recommend a setting of `"true"` for clarity and simplicity. ### Supported Labels Keys @@ -68,13 +71,13 @@ spec: ## Filtering Bundles by Status -Entando Bundles are filterable by availability and install status. Select the `Explore` tab to see the full list of bundles available in the Kubernetes cluster. Select the `Installed` tab to see the list of currently installed bundles. +Entando Bundles are filterable by availability and install status. Select the `Explore` tab to see the full list of bundles available in the Kubernetes cluster. Select the `Installed` tab to see the list of currently installed bundles in the Local Hub of the App Builder. ## Filtering Bundles by Textual Search -Use the textual search to return bundles that contain certain keywords in their name, description or version. When creating a new bundle, bear in mind that a textual search is performed against data extracted from the bundle CRD file. +Use the textual search to return bundles that contain certain keywords in their name, description or version. When creating a new bundle, bear in mind that a textual search is performed against data extracted from the bundle custom resource definition. ## Mixing Search Criteria -Filtering can be refined by combining component, status and textual search criteria. For example, you could search for all available bundles (filter by status) that contain `Page Templates` (filter by component) and the word `Login` in their name (filter by textual search). +Filtering can be refined by combining component, status and textual search criterias. For example, you could search for all available bundles (filter by status), that contain `Page Templates` (filter by component), with the word `Login` in the name (filter by textual search). diff --git a/vuepress/docs/v7.3/docs/curate/bundle-presentation-config.md b/vuepress/docs/v7.3/docs/curate/bundle-presentation-config.md index d41be3070b..db6b2df82c 100644 --- a/vuepress/docs/v7.3/docs/curate/bundle-presentation-config.md +++ b/vuepress/docs/v7.3/docs/curate/bundle-presentation-config.md @@ -1,11 +1,16 @@ +--- +sidebarDepth: 2 +--- # Customize Bundle Info Shown in App Builder -An example of how bundles are displayed in the Local Hub of the App Builder is shown below: +To modify what is displayed for your bundles in the Local Hub, there are a few specifications that can be customized. This is helpful when there are many bundles or they are shared across teams and organizations. + +Bundles are typically displayed in the Local Hub of the App Builder like this: ![Hub user interface in Entando App Builder](./img/local-hub-page.png) -The corresponding custom resource file on Kubernetes contains content similar to the following: +The corresponding Kubernetes custom resource file looks similar to this: ``` apiVersion: entando.org/v1 @@ -32,10 +37,10 @@ spec: version: 0.0.1 ``` -Spec Definitions: +These are the specifications that can be customized: | Field | UI Element | -|---------------------------------|---------------------------------------------------------------------------| -| `spec.details.name` | Set the bundle title | -| `spec.details.description` | Set the bundle description (only visible in list format) | -| `spec.details.dist-tags.latest` | Set the latest version of the bundle | \ No newline at end of file +|-------------------------|---------------------------------------------------------------------------| +| `spec.details.name` | The bundle title | +| `spec.details.description` | The bundle description (only visible in list format) | +| `spec.details.dist-tags.latest` | The latest version of the bundle | \ No newline at end of file diff --git a/vuepress/docs/v7.3/docs/curate/bundle-versions-faq.md b/vuepress/docs/v7.3/docs/curate/bundle-versions-faq.md index 0d2596292e..aac51221a5 100644 --- a/vuepress/docs/v7.3/docs/curate/bundle-versions-faq.md +++ b/vuepress/docs/v7.3/docs/curate/bundle-versions-faq.md @@ -2,23 +2,22 @@ sidebarDepth: 1 --- -# Bundle Versions and Updates - FAQ +# Bundle Versions - FAQ ## Support ### 1. Does the Entando Platform support bundle versioning? -A bundle is an independent package containing one or more components. -As in other packaging systems, the [Entando Component Registry](../compose/local-hub-overview.md)(ECR) supports bundle versioning, allowing developers to create and release updates of their package over time. +A bundle is a self-contained package containing one or more components such as microservices and micro frontends. As in other packaging systems, the [Entando Component Registry](../compose/local-hub-overview.md) (ECR) supports bundle versioning, allowing developers to create and release updates of their package over time. ## How-Tos ### 1. How do I create a new version of a bundle? -To release new versions of your bundle after changes have been made, edit the `entando.json` with the new version number for the bundle, then pack and publish your images to Docker. Docker will provide tags to update the bundle version. Once you deploy and install the bundle, the new version number will appear in the App Builder. +To release new versions of your bundle after changes have been made, edit the `entando.json` with the new version number, then pack and publish your images to Docker. Docker will provide tags to update the bundle version. Once you deploy and install the bundle, the new version number will appear in the App Builder. Micro frontends and microservices can have their own version numbers, independent of the bundle version, and can be updated in the same way. ### 2. My bundle contains a microservice generated with the Entando Component Generator; does the version of the microservice have to be the same as the bundle version? -The version of the microservice - or the Docker image associated with the microservice - isn't bound to the version of the bundle containing the microservice itself. +The version of the microservice - or the Docker image associated with the microservice - isn't bound to the version number of the bundle it is a part of. Thus, the same microservice can be used in different bundles. This gives the developer control over the bundle release process, especially in situations where the bundle may contain many components. @@ -27,7 +26,7 @@ This gives the developer control over the bundle release process, especially in ### 1. How is a bundle version defined? -Bundle versions are defined by the creator and set in the bundle descriptor `entando.json`. You can have multiple versions of a bundle as long as they are defined and tagged as such. +Bundle versions are defined by the creator and set in the `entando.json` bundle descriptor. You can have multiple versions of a bundle as long as they are defined and tagged as such. ```json { @@ -49,9 +48,9 @@ Follow the recommended [semantic versioning 2.0.0](https://semver.org/#semantic- ### 3. Can I publish all versions of any bundle to my Local Hub for development? -To make all versions for all bundles available in the Local Hub, edit the environment variable `ENTANDO_BUNDLE_TAGS_TYPES` in the component manager (CM) deployment to have the value, `dev,prod`. Tag types can also be set to `dev` or `prod`. +To make all versions for all bundles available in the Local Hub, edit the environment variable `ENTANDO_BUNDLE_TAGS_TYPES` of the Entando Component Manager (ECM) deployment to have the value, `dev,prod`. Tag types can also be set to only `dev` or `prod`. -For individual bundles, see the [Bundle Management page](../getting-started/ent-bundle.md#generate-cr) for details about how to utilize the ent CLI's bundle commands to select development, production, or both types of bundles. +For individual bundles, see the [Bundle Management page](../getting-started/ent-bundle.md#generate-cr) for details about how to utilize the ent CLI's bundle commands to select for development, production, or both types of bundles. diff --git a/vuepress/docs/v7.3/docs/curate/hub-details.md b/vuepress/docs/v7.3/docs/curate/hub-details.md index 2a8c231f6f..b46e805043 100644 --- a/vuepress/docs/v7.3/docs/curate/hub-details.md +++ b/vuepress/docs/v7.3/docs/curate/hub-details.md @@ -4,54 +4,54 @@ sidebarDepth: 2 # Entando Hub Features and Definitions ## Overview -The Entando Hub is the central catalog where components are published, organized and shared. The reusable components called Bundle Groups come with versioning and publishing management capabilites in the Hub UI. The following describes the details of how this process is defined and accomplished. +The Entando Hub is the central catalog where components are published, organized and shared. When building composable applications, building blocks called bundles or bundle groups are chosen from this catalog and placed onto a page. The Hub UI provides publishing and versioning capabilites for these reusable components and the following describes the details of how this process works. -Entando Hub Features: +**Entando Hub Features:** -- Centralize components and business capabilities for use across teams, groups, or clients +- Centralize components and packaged business capabilities (PBCs) for use across teams, projects, or clients - Publish and manage components, and communicate component features, versions and metadata -- Perform business-level assessment of component readiness +- Perform business-level assessments of component readiness -The Hub can be utilized in several ways in any Entando Application: -* The **Local Hub**, included in the Entando App Builder, displays a collection of ready-to-use components. They can be used to compose an application or as a starting point to create new components. +The Entando Platform provides three variations of the catalog. They are all directly accessible from the App Builder to make it easy to find and select the components to build your applications. -* **Entando Cloud Hub** is the public catalog containing packaged business capabilities and components provided by Entando and its partners throughout the world. +* The **Local Hub**, included in the Entando App Builder, displays a collection of ready-to-use components. They can be used to compose an application or as a starting point to create your own. -* **Enterprise Entando Hub**, applied and curated by Entando clients and partners, it can be used to share components within their respective organizations or made available for public use. +* **Entando Marketplace** is the public catalog presenting the packaged business capabilities and components developed by Entando and its partners throughout the world. -[Installation and User Guide](../../tutorials/solution/entando-hub.md) +* The **Enterprise Entando Hub** can be added to your Entando instance for your organization to share components, privately within teams, with clients, or with the public. + +The remainder of this document explores the parameters of the Enterprise Hub, and to see how it is installed, here is the [Installation and User Guide](../../tutorials/solution/entando-hub.md). ## Bundle Group Definitions -The key entities in an enterprise Hub are: +The key entities in a Hub are as follows: -- `Bundle Group`: A Bundle Group is a Hub entry, a single unit containing one or more Entando Bundles. -- `Bundle`: An Entando Bundle is the deployment unit within an Entando Application. A bundle can contain one or more components such as micro frontends, microservices, or any of the [component types](../../docs/curate/bundle-component-details.md) allowed in Entando. -- `Bundle Group Version`: A Bundle Group can have one or more versions, each with a particular status. -- `Category`: Each Bundle Group belongs to a specific category. The default categories are solution template, packaged business capability (PBC), and component collection. An admin of an enterprise Hub can create and refine the categories as desired. -- `Organization`: Bundle Groups belong to a single organization. Authors and managers can only update entries within their own organization. A single instance of the Hub can have multiple organizations. +- `Bundle`: An Entando Bundle is the basic deployment unit within an Entando Application. A bundle can contain one or more component such as micro frontends, microservices, or any of the [component types](../../docs/curate/bundle-component-details.md) allowed on Entando. +- `Bundle Group`: A bundle group is a Hub entry, a single unit containing one or more Entando Bundle. +- `Bundle Group Version`: A bundle group can have one or more versions, each with a particular status. +- `Category`: Each bundle group belongs to a specific category. The default categories are solution template, packaged business capability (PBC), and component collection. Additional categories can be customized for any Enterprise Hub. +- `Organization`: Bundle groups belong to a single organization. Authors and managers can only update entries within their own organization. A single instance of the Hub can have multiple organizations. - `User`: User identity is managed within Keycloak, where users are granted roles within a Hub instance. Users must be created in Keycloak, then added in the Hub and assigned to a specific organization. - -> A private repository can be used for a bundle, but this requires [an additional Kubernetes Secret](../../tutorials/curate/private-git-repo.md) before deployment via the App Builder. +> A private repository can be the source of a bundle, but this requires [an additional Kubernetes Secret](../../tutorials/curate/private-git-repo.md) before deployment in the App Builder. ## Roles -Three roles are defined to provide access to the enterprise Hub features: +Three roles are available for the Enterprise Hub UI to manage its catalog. All roles are tied to an organization and are defined as follows: -- `eh-author`: An author can create and edit Bundle Groups for their organization and submit them for publication. They can generate an API key. -- `eh-manager`: A manager has the capabilities of an author, but can also approve a publication request for their organization. -- `eh-admin`: An admin has full access to create, update, and delete Bundle Groups and manage users for the entire Hub instance. An admin can also create categories, organizations and private catalogs, assign users to organizations, and generate API keys. -- `guest`: Any user without one of the preceding roles is considered a guest in the enterprise Hub and is given a read-only view of the public catalog. This is also true for unauthenticated users. +- `eh-author`: An author can create and edit bundle groups and submit them for publication. They can also generate an API key for private Hubs. +- `eh-manager`: A manager has all the capabilities of an author, but also has the job of approving bundle groups for publication. +- `eh-admin`: An admin has full access to create, update, approve, and delete bundle groups, and manage users for the entire Hub instance. An admin can create categories, organizations and private catalogs, assign users to organizations, and generate API keys for private catalogs. +- `guest`: Any user without one of the preceding roles is considered a guest in the Enterprise Hub and is given a read-only view of a public catalog. This is also true for unauthenticated users. To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#user-management) ## Bundle Group Versions -The list of Bundle Group versions can be seen by clicking `View Versions` for any entry in the catalog: +Available bundle group versions can be viewed or edited from the kebab-dropdown menu of an entry as seen here: ![hub-actions.png](./img/hub-actions.png) -The following rules apply to Bundle Group versions: +The following versioning rules apply to bundle groups: - Once the first version of a group is published, the organization, name, and category can no longer be changed. -- A new version of a Bundle Group can be created (via the `New Version` option) after the first version has been published. +- A new version of a bundle group can be created only after the first version has been published. - There can be at most two active versions: one draft or publication requested version, and one published version. - When a new version is published, the previous version is set to `Archived`. - Archived versions are only visible in the versions view and are not shown elsewhere in the user interface. @@ -60,24 +60,24 @@ The following rules apply to Bundle Group versions: ## Bundle Group Status -The possible statuses for each version of a Bundle Group are as follows: +The possible statuses for each version of a bundle group are as follows: -- `Draft`: This is the default status for the first version of a Bundle Group. -- `Publication Request`: An `eh-author` sets a version to this status to request the `eh-manager` or `eh-admin` to review the version and approve it for publication. The manager or admin may also edit versions with this status. -- `Published`: Versions with this status are visible in the home page catalog of available Bundle Groups, and are also available in the App Builder-facing API. An `eh-manager` or `eh-admin` may edit published versions. +- `Draft`: This is the default status for a newly created bundle group. +- `Publication Request`: An `eh-author` sets a version to this status to request the `eh-manager` or `eh-admin` to review and approve it for publication. The manager or admin may edit versions with this status. +- `Published`: Versions with this status are visible in the Hub's catalog of available bundle groups, and are also available in the App Builder-facing API. An `eh-manager` or `eh-admin` may edit published versions. - `Archived`: Previously published versions are assigned this status. No edits can be made to an archived version. -- `Deletion Request`: An `eh-manager` or `eh-admin` can delete versions once this status has been set. +- `Deletion Request`: An `eh-manager` or `eh-admin` can delete versions once a group has been assigned this status. Notes: - An `eh-author` can change any field except organization while a version is in `Draft` status. -- There is no automated notification process when a publication request is made for a Bundle Group version. +- There is no automated notification process when a publication request is made for a bundle group version. -## Application Details +## Entando Hub Application Details -An Entando Hub includes the following key components: +An Enterprise Entando Hub includes the following key components: #### Micro Frontends / Widgets -- `Entando Hub App`: This is the main micro frontend which contains the management UI for the Hub entities noted above. +- `Entando Hub App`: This is the main micro frontend which contains the management UI for the catalog noted above. - `Entando Hub Login`: This is an optional login component which can be used in a page’s top navigation. #### Microservices diff --git a/vuepress/docs/v7.3/docs/curate/img/publishing-process.jpg b/vuepress/docs/v7.3/docs/curate/img/publishing-process.jpg index 971adc1d50f66bba92cae7879c9d40e406c338ce..e19e3b37fdfc992847b01e802103449383336cde 100644 GIT binary patch literal 34106 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 C8ozx2 literal 77994 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 diff --git a/vuepress/docs/v7.3/docs/curate/troubleshooting-guide.md b/vuepress/docs/v7.3/docs/curate/troubleshooting-guide.md index 4a701ae078..0f85003d9f 100644 --- a/vuepress/docs/v7.3/docs/curate/troubleshooting-guide.md +++ b/vuepress/docs/v7.3/docs/curate/troubleshooting-guide.md @@ -1,30 +1,33 @@ -# Troubleshooting ECR +--- +sidebarDepth: 2 +--- +# Troubleshooting the Entando Local Hub -## How do I access the logs? +## 1. How do I access the logs? **A bundle installation or removal has failed. How do I access the logs?** -The Entando Component Manager (CM) logs can be viewed using CLI tools like kubectl or oc, or visualization dashboards like OpenShift or K9s. +The Entando Component Manager (ECM) logs can be viewed using CLI tools like kubectl or oc, or visualization dashboards like OpenShift or K9s. ### Solution -1. To view the Component Manager logs, find the CM pod name in your instance: +1. To view the Component Manager logs, find the ECM pod name in your instance: ``` ent kubectl get pods ``` -It will be something like this: `quickstart-cm-deployment-7f74757f97-xnlbn` +It should be something like this: `quickstart-cm-deployment-7f74757f97-xnlbn` -2. Using your CM pod name and namespace, use this command to view the logs: +2. Using the ECM pod name and your namespace, use this command to view the logs: ``` -ent kubectl logs -f YOUR-PODNAME-7f74757f97-xnlbn -n YOUR-NAMESPACE +ent kubectl logs -f YOUR-ECM-PODNAME -n YOUR-NAMESPACE ``` >Notes: >1. Use the [ent CLI](../getting-started/entando-cli.md) to send commands directly to Kubernetes from the host machine. >2. The `-f` flag is optional and used to follow the logs for debugging purposes. The namespace (-n) is also optional if ent has a profile configured. -## ERROR - File not found in bundle +## 2. ERROR - File not found in bundle **Installation fails because a file has not been found in the bundle** -When a component referenced in the entando.json is missing or not properly called, the bundle installation fails and the error is reported in the logs. +When a component referenced in the `entando.json` is missing or not properly called, the bundle installation fails and the error is reported in the logs. ``` ERROR - File with name {filename} not found in the bundle @@ -34,19 +37,19 @@ ERROR - File with name {filename} not found in the bundle Verify that the component named in the descriptor file is actually at the specified location and the reference is properly formatted. Then, publish the updated bundle with `ent bundle publish`. -## My plugin Docker image is unreachable +## 3. My microservice's Docker image is unreachable **Bundle installation fails due to plugin images that are not reachable** -A bundle installation does not complete successfully because a plugin in a bundle, defined by a Docker image, is not available. +A bundle installation does not complete successfully because a microservice in a bundle, defined by a Docker image, is not available. ### Solution -This may happen if the Docker image for the plugin is located in a private registry or not yet published. Verify that the Docker image you are referencing is published, correctly formatted, and publicly available. Then, publish the updated bundle with `ent bundle publish`. +This may happen if the Docker image for the microservice is located in a private registry or not yet published. Verify that the Docker image you are referencing is published, correctly formatted, and publicly available. -## How do I uninstall a bundle +## 4. How do I uninstall a bundle **I can't uninstall a bundle because some components are in use** -When uninstalling an installed bundle, the Entando Component Manager verfies that the bundle components are not in use by any other component. An error message informs you and does not allow the removal. +When uninstalling a previously installed bundle, the Entando Component Manager verifies that the bundle components are not in use elsewhere. If any part of the bundle is in use, an error message informs you and does not allow the removal. ### Solution -A bundle cannot be uninstalled if any of its components are in use. To uninstall the bundle, the user must manually remove all references to it and all its component. \ No newline at end of file +A bundle cannot be uninstalled if any of its components are in use. To uninstall the bundle, the user must manually remove all references to it and its component parts. \ No newline at end of file diff --git a/vuepress/docs/v7.3/docs/curate/uninstall-flow.md b/vuepress/docs/v7.3/docs/curate/uninstall-flow.md index b0a4fdbe22..1380c6b078 100644 --- a/vuepress/docs/v7.3/docs/curate/uninstall-flow.md +++ b/vuepress/docs/v7.3/docs/curate/uninstall-flow.md @@ -1,26 +1,31 @@ +--- +sidebarDepth: 2 +--- # Bundle Upgrade, Downgrade, and Uninstall -An application bundle that has been installed in the Entando App Builder can be upgraded to a new version, reverted to a previous version or uninstalled at any time. You can update the bundle or just a component within that bundle, all within the App Builder. +An application bundle that has been installed in the Entando App Builder can be removed, upgraded to a new version, or downgraded to a previous version at any time. You can update the bundle group or just a component within that bundle. ## Upgrade or Downgrade Bundle Version -1. Log in to your App Builder instance and select `Hub` from the navigation on the left to enter your Local Hub. +1. Log in to your App Builder instance and select `Hub` from the left navigation bar to go to your Local Hub. 2. Click the `Installed` button to open a pop-up window with the options to update or uninstall the bundle. -3. Click the `Update` button to see a list of versions available. Choose a version. A warning will appear regarding the possible loss of features or data with the update. You may wish to review the bundle's release notes before confirming the upgrade or rollback. +3. Click the `Update` button to see the list of available versions. Choose one and a warning will appear regarding the possible loss of features or data with the update. You may wish to review the bundle's release notes before confirming the upgrade or rollback. 4. Once you confirm, a page listing all the components in the bundle appears. You can `Update All` or select each component to be updated or skipped. 5. Click `Ok` to finish. ## Uninstall a Bundle -1. Log in to your App Builder instance and select `Hub` from the navigation on the left to enter your Local Hub. -2. Click the `Installed` button to open a pop-up window with the options to update or uninstall the bundle. -3. Click the `Uninstall` button. -4. An initial check is made to verify that components are not in use outside of the bundle. A pop-up window will list the components with external references that must be removed manually and then the uninstall process may be resumed^. +1. Log in to your App Builder instance and select `Hub` from the left navigation menu to enter your Local Hub. +2. Click the `Installed` button to open a pop-up window with the available options. +3. Click `Uninstall`. +4. An initial check is done to verify that components are not in use outside of the bundle. A pop-up window will list the components with external references that must be cleared manually, and then the uninstall process may resume. 5. When the `Uninstall` is confirmed, a progress bar shows the following removal process: - Bundle resources are deleted from the Entando App Engine - Components included in the bundle are removed from the Entando App Engine - - Plugins are unlinked + - Microservices are unlinked 6. To remove the bundle from the Local Hub catalog, click the `Undeploy` button. -^ When unistalling a PBC or any component with **multiple bundles**, it is important to remove the bundles in the reverse order of installation because of dependencies. +::: tip Uninstall Order +When unistalling a PBC or a Bundle Group with multiple bundles, it is important to remove the bundles in the reverse order of installation due to dependencies. +::: ## Troubleshooting If an error occurs during the uninstall process, check out the [Troubleshooting guide](./troubleshooting-guide.md) or the [Entando Forum](https://forum.entando.com).