From dfd925bf191d3dd7ca2d11960876f4668ea935bc Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Thu, 24 Jul 2025 14:26:18 +0300 Subject: [PATCH] add profile --- profile/README.md | 52 +++++++++++ profile/compose.yaml | 51 +++++++++++ profile/rhdho/app-config/app-config.yaml | 90 +++++++++++++++++++ .../rhdho/catalog-entities/components.yaml | 15 ++++ profile/rhdho/catalog-entities/mkdocs.yml | 4 + profile/rhdho/catalog-entities/users.yaml | 14 +++ profile/rhdho/default.env | 1 + .../dynamic-plugins/dynamic-plugins.yaml | 42 +++++++++ profile/rhdho/services.yaml | 16 ++++ 9 files changed, 285 insertions(+) create mode 100644 profile/README.md create mode 100644 profile/compose.yaml create mode 100644 profile/rhdho/app-config/app-config.yaml create mode 100644 profile/rhdho/catalog-entities/components.yaml create mode 100644 profile/rhdho/catalog-entities/mkdocs.yml create mode 100644 profile/rhdho/catalog-entities/users.yaml create mode 100644 profile/rhdho/default.env create mode 100644 profile/rhdho/dynamic-plugins/dynamic-plugins.yaml create mode 100644 profile/rhdho/services.yaml diff --git a/profile/README.md b/profile/README.md new file mode 100644 index 0000000..39dc84e --- /dev/null +++ b/profile/README.md @@ -0,0 +1,52 @@ +## Preconfigured Profiles + +The `profile/` directory provides an alternative way to set up RHDH using preconfigured profiles. This approach allows you to quickly deploy RHDH with a set of predefined configurations and plugins tailored for specific use cases or environments. + +### Benefits of Using Profiles + +- **Simplified Setup**: Profiles come with preconfigured settings, reducing the need for manual configuration. +- **Consistency**: Ensures a unified and structured approach to managing and maintaining configurations. +- **Customizability**: Each profile can be tailored to specific requirements while maintaining a consistent structure. + +### Trade-offs + +While profiles offer a structured approach, they may introduce some duplication of configuration files, as each profile contains its own set of configurations and plugins. + +### Example: RHDH Profile + +The `rhdh` profile contains configurations and plugins commonly used in Red Hat Developer Hub deployments, including the Orchestrator plugin. This profile is ideal for environments where the Orchestrator plugin is required for workflow management. + +### Directory Structure + +Each profile in the `profile/` directory follows a consistent structure like this (not exhaustive): + +``` +profile/ +├── / +│ ├── app-config/ +│ ├── dynamic-plugins/ +│ ├── catalog-entities/ +│ ├── services.yaml +``` + +### How to Use Profiles + +1. **Select a Profile**: Choose the profile that best matches your use case from the `profile/` directory. + +2. **Create a Profile** *(Optional)*: If you want to create a new profile, you can copy an existing profile as a template and modify it as needed. + +3. **Customize the Profile** *(Optional)*: + - Modify the `app-config.yaml` file to override default application configurations. + - Update the `dynamic-plugins.yaml` file to include or exclude specific plugins. + - Adjust the `users.yaml` and `components.yaml` files to customize catalog entities. + - etc. + +3. **Run the Profile**: Use the `PROFILE` environment variable to point to the selected profile. For example: + + ```sh + PROFILE=profile/rhdho podman compose -f profile/compose.yaml up -d + ``` + or + ```sh + PROFILE=profile/rhdho docker compose -f profile/compose.yaml up -d + ``` diff --git a/profile/compose.yaml b/profile/compose.yaml new file mode 100644 index 0000000..e546df6 --- /dev/null +++ b/profile/compose.yaml @@ -0,0 +1,51 @@ +include: + - ${PROFILE}/services.yaml +services: + rhdh: + container_name: rhdh + image: ${RHDH_IMAGE:-quay.io/rhdh-community/rhdh:1.6} + env_file: + - path: "../default.env" + required: true + - path: "../profile/${PROFILE}/default.env" + required: false + - path: "../profile/${PROFILE}/.env" + required: false + user: "1001" + entrypoint: + - "/opt/app-root/src/wait-for-plugins-and-start.sh" + ports: # dclint disable-line no-unbound-port-interfaces + - "7007:7007" + - "127.0.0.1:9229:9229" + environment: + NODE_OPTIONS: "--inspect=0.0.0.0:9229 --no-node-snapshot" + volumes: + - ../wait-for-plugins-and-start.sh:/opt/app-root/src/wait-for-plugins-and-start.sh:Z + - ../profile/${PROFILE}:/opt/app-root/src/configs:Z + - dynamic-plugins-root:/opt/app-root/src/dynamic-plugins-root + depends_on: + install-dynamic-plugins: + condition: service_completed_successfully + # db: + # condition: service_healthy + + install-dynamic-plugins: + container_name: rhdh-plugins-installer + image: ${RHDH_IMAGE:-quay.io/rhdh-community/rhdh:1.6} + # docker compose volumes are owned by root, so we need to run as root to write to them + # the main rhdh container will be able to read from this as files are world readable + user: "root" + entrypoint: + - "/opt/app-root/src/prepare-and-install-dynamic-plugins.sh" + env_file: + - path: "../default.env" + required: true + - path: "../profile/${PROFILE}/.env" + required: false + volumes: + - ../prepare-and-install-dynamic-plugins.sh:/opt/app-root/src/prepare-and-install-dynamic-plugins.sh:Z + - ../profile/${PROFILE}:/opt/app-root/src/configs:Z + - dynamic-plugins-root:/dynamic-plugins-root + +volumes: + dynamic-plugins-root: \ No newline at end of file diff --git a/profile/rhdho/app-config/app-config.yaml b/profile/rhdho/app-config/app-config.yaml new file mode 100644 index 0000000..1d071d6 --- /dev/null +++ b/profile/rhdho/app-config/app-config.yaml @@ -0,0 +1,90 @@ +# This is the default rhdh-local config, and any user configuration should be added app-config.local.yaml instead +auth: + environment: development + providers: + guest: + dangerouslyAllowOutsideDevelopment: true + # github: + # development: + # clientId: ${AUTH_GITHUB_CLIENT_ID} + # clientSecret: ${AUTH_GITHUB_CLIENT_SECRET} + +# integrations: +# github: +# - host: github.com +# apps: +# - $include: github-app-credentials.yaml + +app: + title: Red Hat Developer Hub + baseUrl: ${BASE_URL} + branding: + # These logo overrides are required for quay.io/rhdh-community/rhdh:1.6 + # if using a different logo, replace this line with your own image + # it is expected that as of 1.7 they will not be required + fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== + iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= + fullLogoWidth: ${FULL_LOGO_WIDTH} + theme: + light: + primaryColor: ${PRIMARY_LIGHT_COLOR} + headerColor1: ${HEADER_LIGHT_COLOR_1} + headerColor2: ${HEADER_LIGHT_COLOR_2} + navigationIndicatorColor: ${NAV_INDICATOR_LIGHT_COLOR} + dark: + primaryColor: ${PRIMARY_DARK_COLOR} + headerColor1: ${HEADER_DARK_COLOR_1} + headerColor2: ${HEADER_DARK_COLOR_2} + navigationIndicatorColor: ${NAV_INDICATOR_DARK_COLOR} +backend: + listen: + port: 7007 + baseUrl: ${BASE_URL} + # uncomment this if backend.baseUrl is exposed over HTTPS + # and you want RHDH to auto-generate and serve a self-signed certificate. + # https: true + cors: + origin: ${BASE_URL} + methods: [GET, HEAD, PATCH, POST, PUT, DELETE] + credentials: true + csp: + upgrade-insecure-requests: false + +# comment out the following 'database' section to use the PostgreSQL database + database: + client: better-sqlite3 + connection: ':memory:' + + auth: + keys: + - secret: "development" + +# You can use local files from catalog-entities directory to load entities into the catalog +catalog: + + rules: + - allow: [Component, API, Location, Template, Domain, User, Group, System, Resource] + + locations: + - type: file + target: /opt/app-root/src/configs/catalog-entities/users.yaml + rules: + - allow: [User, Group] + - type: file + target: /opt/app-root/src/configs/catalog-entities/components.yaml + rules: + - allow: [Component, System] + # - type: url + # target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all.yaml + # rules: + # - allow: [Component, User, Group, Domain] + + +techdocs: + generator: + runIn: local + builder: local + publisher: + type: local + local: + publishDirectory: /tmp/techdocs diff --git a/profile/rhdho/catalog-entities/components.yaml b/profile/rhdho/catalog-entities/components.yaml new file mode 100644 index 0000000..7231eac --- /dev/null +++ b/profile/rhdho/catalog-entities/components.yaml @@ -0,0 +1,15 @@ +# This is an example override file for catalog components. +# If present, this file will be used instead of components.yaml. +# Uncomment and edit the entries below to override catalog components. + +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: example-service + description: A simple demo component to appear in the Software Catalog. + annotations: + backstage.io/techdocs-ref: dir:. +spec: + type: service + lifecycle: experimental + owner: user:default/user \ No newline at end of file diff --git a/profile/rhdho/catalog-entities/mkdocs.yml b/profile/rhdho/catalog-entities/mkdocs.yml new file mode 100644 index 0000000..62fa0cc --- /dev/null +++ b/profile/rhdho/catalog-entities/mkdocs.yml @@ -0,0 +1,4 @@ +site_name: example-service +docs_dir: docs +plugins: + - techdocs-core diff --git a/profile/rhdho/catalog-entities/users.yaml b/profile/rhdho/catalog-entities/users.yaml new file mode 100644 index 0000000..c99df6b --- /dev/null +++ b/profile/rhdho/catalog-entities/users.yaml @@ -0,0 +1,14 @@ +# This is an example override file for catalog users. +# If present, this file will be used instead of users.yaml. +# Uncomment and edit the entries below to override catalog users. + +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: my-user +spec: + profile: + displayName: My User + memberOf: + - my-group1 + - my-group2 diff --git a/profile/rhdho/default.env b/profile/rhdho/default.env new file mode 100644 index 0000000..a6743ff --- /dev/null +++ b/profile/rhdho/default.env @@ -0,0 +1 @@ +MAX_ENTRY_SIZE: "30000000" \ No newline at end of file diff --git a/profile/rhdho/dynamic-plugins/dynamic-plugins.yaml b/profile/rhdho/dynamic-plugins/dynamic-plugins.yaml new file mode 100644 index 0000000..9d831cf --- /dev/null +++ b/profile/rhdho/dynamic-plugins/dynamic-plugins.yaml @@ -0,0 +1,42 @@ + +includes: + - dynamic-plugins.default.yaml + +plugins: + - package: https://github.com/rhdhorchestrator/orchestrator-plugins-internal-release/releases/download/v1.6.0/backstage-plugin-orchestrator-1.6.0.tgz + integrity: sha512-fOSJv2PgtD2urKwBM7p9W6gV/0UIHSf4pkZ9V/wQO0eg0Zi5Mys/CL1ba3nO9x9l84MX11UBZ2r7PPVJPrmOtw== + disabled: false + pluginConfig: + dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-orchestrator: + appIcons: + - importName: OrchestratorIcon + name: orchestratorIcon + dynamicRoutes: + - importName: OrchestratorPage + menuItem: + icon: orchestratorIcon + text: Orchestrator + path: /orchestrator + - disabled: false + package: https://github.com/rhdhorchestrator/orchestrator-plugins-internal-release/releases/download/v1.6.0/backstage-plugin-orchestrator-backend-dynamic-1.6.0.tgz + integrity: sha512-Kr55YbuVwEADwGef9o9wyimcgHmiwehPeAtVHa9g2RQYoSPEa6BeOlaPzB6W5Ke3M2bN/0j0XXtpLuvrlXQogA== + pluginConfig: + orchestrator: + dataIndexService: + url: http://sonataflow:8899 + - disabled: false + package: https://github.com/rhdhorchestrator/orchestrator-plugins-internal-release/releases/download/v1.6.0/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic-1.6.0.tgz + integrity: sha512-Bueeix4661fXEnfJ9y31Yw91LXJgw6hJUG7lPVdESCi9VwBCjDB9Rm8u2yPqP8sriwr0OMtKtqD+Odn3LOPyVw== + pluginConfig: + orchestrator: + dataIndexService: + url: http://sonataflow:8899 + - disabled: false + package: https://github.com/rhdhorchestrator/orchestrator-plugins-internal-release/releases/download/v1.6.0/backstage-plugin-orchestrator-form-widgets-1.6.0.tgz + integrity: sha512-Tqn6HO21Q1TQ7TFUoRhwBVCtSBzbQYz+OaanzzIB0R24O6YtVx3wR7Chtr5TzC05Vz5GkBO1+FZid8BKpqljgA== + pluginConfig: + dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-orchestrator-form-widgets: {} \ No newline at end of file diff --git a/profile/rhdho/services.yaml b/profile/rhdho/services.yaml new file mode 100644 index 0000000..3e2dda0 --- /dev/null +++ b/profile/rhdho/services.yaml @@ -0,0 +1,16 @@ + +services: + sonataflow: + container_name: sonataflow + image: "${SONATAFLOW_IMAGE:-registry.redhat.io/openshift-serverless-1/logic-swf-devmode-rhel8:1.36.0}" + environment: + QUARKUS_HTTP_PORT: "8899" + KOGITO_SERVICE_URL: http://sonataflow:8899 + KOGITO.CODEGEN.PROCESS.FAILONERROR: "false" + QUARKUS_EMBEDDED_POSTGRESQL_DATA_DIR: /home/kogito/persistence + NOTIFICATIONS_BEARER_TOKEN: "***" + BACKSTAGE_NOTIFICATIONS_URL: http://host.docker.internal:7008 + ports: + - "127.0.0.1:8899:8899" + volumes: + - ${RHDH_ORCHESTRATOR_WORKFLOWS:-../../rhdho-workflow-examples}:/home/kogito/serverless-workflow-project/src/main/resources:Z \ No newline at end of file