Skip to content

Commit 0852468

Browse files
authored
Merge branch 'main' into RHDHBUGS-2557
2 parents 9e0108d + 784248c commit 0852468

16 files changed

Lines changed: 571 additions & 53 deletions

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ catalog-info.yaml
1414
.claude/settings.json.backup
1515
build-report.json
1616
.lycheecache
17-
build/.cache/
17+
build/.cache/

artifacts/attributes.adoc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
:product-cli: rhdh-cli
1616
:product-local: Red Hat Developer Hub Local
1717
:product-local-very-short: RHDH Local
18-
:product-version: 1.9
19-
// TODO change to 1.10 after creating the release-1.10 branch
20-
// :product-version: 1.10
18+
:product-version: 1.10
2119
:product-bundle-version: 1.10.0
2220
:product-chart-version: 1.10.0
2321
:product-backstage-version: 1.45.3

assemblies/configure_customizing-rhdh/assembly-customize-the-home-page.adoc

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
:_mod-docs-content-type: ASSEMBLY
2+
ifdef::context[:parent-context: {context}]
3+
4+
[id="deploy-persona-specific-homepages-to-provide-targeted-content-to-distinct-teams_{context}"]
5+
= Deploy persona-specific homepages to provide targeted content to distinct teams
6+
7+
:previouscontext: {context}
8+
:context: deploy-persona-specific-homepages-to-provide-targeted-content-to-distinct-teams
9+
10+
[role="_abstract"]
11+
Persona-specific homepage layouts allow you to deliver targeted content, such as role-appropriate templates and links, to distinct user groups in {product}.
12+
13+
// Configuring persona-based homepages
14+
15+
include::../modules/shared/proc-author-default-persona-based-layouts-to-curate-distinct-starting-experiences.adoc[leveloffset=+1]
16+
17+
include::../modules/shared/proc-attach-homepages-to-groups-to-control-access-and-automate-layout-assignment.adoc[leveloffset=+1]
18+
19+
include::../modules/shared/ref-homepage-backend-configuration-reference.adoc[leveloffset=+1]
20+
21+
include::../modules/shared/ref-homepage-visibility-rule-syntax.adoc[leveloffset=+1]
22+
23+
// Customizing homepage cards
24+
25+
include::../modules/shared/ref-available-homepage-cards.adoc[leveloffset=+1]
26+
27+
include::../modules/shared/proc-arrange-homepage-card-layouts-to-optimize-visual-organization.adoc[leveloffset=+1]
28+
29+
include::../modules/shared/proc-define-the-layout-of-the-rhdh-home-page.adoc[leveloffset=+1]
30+
31+
include::../modules/shared/proc-customize-your-dynamic-homepage.adoc[leveloffset=+1]
32+
33+
include::../modules/shared/proc-customize-quickaccesscard-card-icons-on-the-rhdh-homepage.adoc[leveloffset=+1]
34+
35+
:context: {previouscontext}
36+
:!previouscontext:
37+
38+
ifdef::parent-context[:context: {parent-context}]
39+
ifndef::parent-context[:!context:]

assemblies/shared/assembly-delegate-role-based-access-controls-rbac-access-in-rhdh.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ By delegating RBAC access through either method, you can expect the following ou
2727
* Visibility of other users' or teams' permissions is restricted.
2828
* Administrators retain overarching control while delegating team-specific access.
2929

30+
Use groups to configure persona-specific homepage layouts, ensuring users see homepage content appropriate to their role.
31+
3032
include::../modules/shared/proc-delegate-rbac-access-in-rhdh-by-using-the-web-ui.adoc[leveloffset=+1]
3133

3234

modules/extend_dynamic-plugins-reference/ref-supported-plugins.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
`GITLAB_HOST`
7474

7575

76-
|Global Floating Action Button |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-global-floating-action-button/v/1.9.1[@red-hat-developer-hub/backstage-plugin-global-floating-action-button]` |1.9.1
76+
|Global Floating Action Button |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-global-floating-action-button/v/1.9.2[@red-hat-developer-hub/backstage-plugin-global-floating-action-button]` |1.9.2
7777
|`./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button`
7878

7979

@@ -161,7 +161,7 @@
161161
|`oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator@sha256:5b52adc153afcf79fb134262aa01b1e117085bf59c1a1997ff2e3a6f31c7647a`
162162

163163

164-
|Quickstart |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-quickstart/v/1.9.3[@red-hat-developer-hub/backstage-plugin-quickstart]` |1.9.3
164+
|Quickstart |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-quickstart/v/1.9.4[@red-hat-developer-hub/backstage-plugin-quickstart]` |1.9.4
165165
|`./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-quickstart`
166166

167167

modules/extend_dynamic-plugins-reference/ref-technology-preview-plugins.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ include::../../artifacts/snip-technology-preview.adoc[]
1717
|`./dynamic-plugins/dist/backstage-community-plugin-acr`
1818

1919

20-
|Bulk Import |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-bulk-import/v/7.3.2[@red-hat-developer-hub/backstage-plugin-bulk-import]` |7.3.2
20+
|Bulk Import |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-bulk-import/v/7.3.4[@red-hat-developer-hub/backstage-plugin-bulk-import]` |7.3.4
2121
|`./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import`
2222

2323

24-
|Bulk Import |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-bulk-import-backend/v/7.3.2[@red-hat-developer-hub/backstage-plugin-bulk-import-backend]` |7.3.2
24+
|Bulk Import |`https://npmjs.com/package/@red-hat-developer-hub/backstage-plugin-bulk-import-backend/v/7.3.4[@red-hat-developer-hub/backstage-plugin-bulk-import-backend]` |7.3.4
2525
|`./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic`
2626

2727

modules/extend_dynamic-plugins-reference/rhdh-supported-plugins.csv

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"GitHub","@backstage/plugin-scaffolder-backend-module-github","Backend","0.9.7","Production","active","./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic",";","Disabled"
1010
"GitLab Org","@backstage/plugin-catalog-backend-module-gitlab-org","Backend","0.2.19","Production","active","./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-org-dynamic","`GITLAB_HOST`;`GITLAB_ORG_GROUP`;","Disabled"
1111
"GitLab","@backstage/plugin-catalog-backend-module-gitlab","Backend","0.8.1","Production","active","./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic","`GITLAB_DISCOVERY_GROUP`;`GITLAB_HOST`;","Disabled"
12-
"Global Floating Action Button","@red-hat-developer-hub/backstage-plugin-global-floating-action-button","Frontend","1.9.1","Production","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button",";","Enabled"
12+
"Global Floating Action Button","@red-hat-developer-hub/backstage-plugin-global-floating-action-button","Frontend","1.9.2","Production","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button",";","Enabled"
1313
"Global Header","@red-hat-developer-hub/backstage-plugin-global-header","Frontend","1.21.4","Production","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-header",";","Enabled"
1414
"Http Request","@roadiehq/scaffolder-backend-module-http-request","Backend","5.6.0","Production","active","oci://registry.access.redhat.com/rhdh/roadiehq-scaffolder-backend-module-http-request@sha256:2e498033306df2711ec2a548db0a9db921f911eb9b99af2b9e44162b4851bbe8",";","Disabled"
1515
"Keycloak","@backstage-community/plugin-catalog-backend-module-keycloak","Backend","3.19.2","Production","active","./dynamic-plugins/dist/backstage-community-plugin-catalog-backend-module-keycloak-dynamic","`KEYCLOAK_BASE_URL`;`KEYCLOAK_CLIENT_ID`;`KEYCLOAK_CLIENT_SECRET`;`KEYCLOAK_LOGIN_REALM`;`KEYCLOAK_REALM`;","Disabled"
@@ -22,16 +22,16 @@
2222
"Orchestrator","@red-hat-developer-hub/backstage-plugin-orchestrator","Frontend","5.7.10","Production","active","oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator@sha256:062a536d266bcd76d454fc9fdc0157b99e62074f6d3304578a68f515ced83e64",";","Disabled"
2323
"Orchestrator","@red-hat-developer-hub/backstage-plugin-orchestrator-backend","Backend","8.9.4","Production","active","oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend@sha256:365d67fddeeaa2cf0b0266b012eb3e74fb5d5071b848059662353e62e7f9ceab",";","Disabled"
2424
"Orchestrator","@red-hat-developer-hub/backstage-plugin-scaffolder-backend-module-orchestrator","Backend","1.5.4","Production","active","oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator@sha256:5b52adc153afcf79fb134262aa01b1e117085bf59c1a1997ff2e3a6f31c7647a",";","Disabled"
25-
"Quickstart","@red-hat-developer-hub/backstage-plugin-quickstart","Frontend","1.9.3","Production","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-quickstart",";","Enabled"
25+
"Quickstart","@red-hat-developer-hub/backstage-plugin-quickstart","Frontend","1.9.4","Production","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-quickstart",";","Enabled"
2626
"RBAC","@backstage-community/plugin-rbac","Frontend","1.52.4","Production","active","./dynamic-plugins/dist/backstage-community-plugin-rbac",";","Disabled"
2727
"Regex","@backstage-community/plugin-scaffolder-backend-module-regex","Backend","2.15.1","Production","active","./dynamic-plugins/dist/backstage-community-plugin-scaffolder-backend-module-regex-dynamic",";","Enabled"
2828
"Signals","@backstage/plugin-signals-backend","Backend","0.3.13","Production","active","./dynamic-plugins/dist/backstage-plugin-signals-backend-dynamic",";","Disabled"
2929
"Tech Radar","@backstage-community/plugin-tech-radar","Frontend","1.17.0","Production","active","./dynamic-plugins/dist/backstage-community-plugin-tech-radar",";","Disabled"
3030
"Tech Radar","@backstage-community/plugin-tech-radar-backend","Backend","1.16.0","Production","active","./dynamic-plugins/dist/backstage-community-plugin-tech-radar-backend-dynamic","`TECH_RADAR_DATA_URL`;","Disabled"
3131
"Topology","@backstage-community/plugin-topology","Frontend","2.12.2","Production","active","./dynamic-plugins/dist/backstage-community-plugin-topology",";","Disabled"
3232
"ACR","@backstage-community/plugin-acr","Frontend","1.24.1","Red Hat Tech Preview","active","./dynamic-plugins/dist/backstage-community-plugin-acr",";","Disabled"
33-
"Bulk Import","@red-hat-developer-hub/backstage-plugin-bulk-import","Frontend","7.3.2","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import",";","Disabled"
34-
"Bulk Import","@red-hat-developer-hub/backstage-plugin-bulk-import-backend","Backend","7.3.2","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic",";","Disabled"
33+
"Bulk Import","@red-hat-developer-hub/backstage-plugin-bulk-import","Frontend","7.3.4","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import",";","Disabled"
34+
"Bulk Import","@red-hat-developer-hub/backstage-plugin-bulk-import-backend","Backend","7.3.4","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic",";","Disabled"
3535
"Events Backend Module GitHub","@backstage/plugin-events-backend-module-github","Backend","0.4.10","Red Hat Tech Preview","active","oci://registry.access.redhat.com/rhdh/backstage-plugin-events-backend-module-github@sha256:c1d17d47aaac41eaeb3ad15c64d904cbad7d93f351cdd69d7aee13b2097329ed","`GITHUB_WEBHOOK_SECRET`;","Disabled"
3636
"Extensions","@red-hat-developer-hub/backstage-plugin-extensions","Frontend","0.17.1","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-extensions",";","Enabled"
3737
"Extensions","@red-hat-developer-hub/backstage-plugin-catalog-backend-module-extensions","Backend","0.17.1","Red Hat Tech Preview","active","./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-catalog-backend-module-extensions-dynamic","`RHDH_EXTENSIONS_DIRECTORY`;","Enabled"

modules/shared/proc-customize-the-home-page-cards.adoc renamed to modules/shared/proc-arrange-homepage-card-layouts-to-optimize-visual-organization.adoc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
:_mod-docs-content-type: PROCEDURE
22

3-
[id="customize-the-home-page-cards_{context}"]
4-
= Customize the Home page cards
3+
[id="arrange-homepage-card-layouts-to-optimize-visual-organization_{context}"]
4+
= Arrange homepage card layouts to optimize visual organization
55

66
[role="_abstract"]
7-
As an administrator, you can customize the layout and content of the Home page to create a tailored user experience. This includes integrating various specialized cards into the primary view.
7+
Arrange and customize homepage card layouts to ensure your content scales correctly across different screen sizes.
88

9-
The Home page layout uses a 12-column grid system. You can precisely define the position (x), width (w), and height (h) for each card across multiple screen breakpoints:
9+
The Home page layout uses a 12-column grid system.
10+
The grid uses the following layout properties:
11+
12+
* `w` (width): Number of columns (1-12)
13+
* `h` (height): Number of grid rows (arbitrary units)
14+
* `x` (x-position): Column offset (0-11)
15+
* `y` (y-position): Row offset (optional, defaults to auto-placement)
16+
17+
You can define these layout properties for each card across multiple screen breakpoints:
1018

1119
* Extra-large (xl)
1220
* Large (lg)
@@ -59,7 +67,9 @@ dynamicPlugins:
5967
----
6068

6169
.Prerequisites
70+
6271
* You have administrative access and can modify the `{my-app-config-file}` file for dynamic plugin configurations.
72+
* Optional: For persona-based homepage configuration, you have installed and configured the homepage backend plugin.
6373

6474
.Procedure
6575
* Configure different cards for your Home page in {product} as shown in the following code:
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
3+
[id="attach-homepages-to-groups-to-control-access-and-automate-layout-assignment_{context}"]
4+
= Attach homepages to groups to control access and automate layout assignment
5+
6+
[role="_abstract"]
7+
Assign persona-specific homepage layouts to user groups to automate role-based content access.
8+
9+
.Prerequisites
10+
11+
* You have {product} {product-version} or later running with the homepage backend plugin enabled.
12+
* You defined groups for each user persona (for example, `group:default/developers`, `group:default/data-scientists`, `group:default/managers`).
13+
* You authored persona-based homepage layouts in your `{my-app-config-file}` configuration file.
14+
* You have administrative access to modify the `{my-app-config-file}` configuration file.
15+
16+
.Procedure
17+
18+
. Identify your user personas and their corresponding groups.
19+
+
20+
--
21+
[IMPORTANT]
22+
====
23+
Replace the example group names below with your organization's actual group names.
24+
====
25+
26+
[options="header"]
27+
|===
28+
|Persona |Group
29+
|Developer |`group:default/developers`
30+
|Manager |`group:default/managers`
31+
|Data Scientist |`group:default/data-scientists`
32+
|===
33+
--
34+
35+
. Verify that you created the groups in your {product-very-short} configuration.
36+
+
37+
Check that the groups exist by using the RBAC web UI or by reviewing your RBAC configuration file.
38+
You must create all groups referenced in your persona mapping before configuring homepage visibility.
39+
40+
. Open your `{my-app-config-file}` configuration file.
41+
42+
. Attach persona-specific layouts to groups by adding the `if.groups` field to group cards under a shared visibility condition.
43+
+
44+
For example, attach the developer persona layout to the developers group:
45+
+
46+
[source,yaml]
47+
----
48+
homepage:
49+
defaultWidgets:
50+
# Attach developer layout to developers group
51+
- if:
52+
groups: [group:default/developers]
53+
children:
54+
- id: developer-onboarding
55+
ref: 'rhdh-onboarding-section'
56+
layout:
57+
xl: { w: 12, h: 6 }
58+
lg: { w: 12, h: 6 }
59+
60+
- id: developer-quickaccess
61+
ref: quickaccess-card
62+
props:
63+
title: Developer Quick Access
64+
layout:
65+
xl: { w: 7, h: 8 }
66+
lg: { w: 7, h: 8 }
67+
68+
- id: templates
69+
ref: TemplateSection
70+
layout:
71+
xl: { w: 12, h: 5 }
72+
lg: { w: 12, h: 5 }
73+
74+
- id: starred-entities
75+
ref: CatalogStarredEntitiesCard
76+
layout:
77+
xl: { w: 5, h: 4, x: 7 }
78+
lg: { w: 5, h: 4, x: 7 }
79+
----
80+
+
81+
The `groups` field accepts an array of group entity references.
82+
Users who belong to any of the listed groups see all child cards.
83+
84+
. Control visibility for multiple groups by adding additional `if.groups` configurations.
85+
+
86+
Individual child cards can include their own `if` conditions to further restrict visibility beyond the parent group's rules.
87+
+
88+
[NOTE]
89+
====
90+
The front-end positions cards according to layout coordinates (`x`, `y`, `w`, `h`), not array order.
91+
The configuration array order does not affect rendering position.
92+
====
93+
94+
. Save the configuration file and restart {product}:
95+
+
96+
[source,terminal,subs="+quotes"]
97+
----
98+
$ kubectl rollout restart deployment/_<rhdh-deployment-name>_
99+
----
100+
+
101+
Replace _<rhdh-deployment-name>_ with the name of your {product-very-short} deployment.
102+
+
103+
[IMPORTANT]
104+
====
105+
{product-very-short} validates the homepage configuration at startup.
106+
If the configuration contains errors, {product-very-short} will fail to start.
107+
Check the pod logs for configuration validation errors if the deployment does not become ready.
108+
====
109+
110+
.Verification
111+
112+
. Log in to {product} as a test user who belongs to one of the configured groups.
113+
+
114+
The homepage displays only the cards configured for that user's persona.
115+
116+
. Log in as a test user from a different group.
117+
+
118+
The homepage displays a different set of cards based on the second user's group membership.
119+
120+
. Log in as a test user who does not belong to any persona-specific group.
121+
+
122+
The homepage displays only the default cards that have no `if` conditions.

0 commit comments

Comments
 (0)