From a5cf3844635a35e6ca7baf9f3a7bf3569de83022 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 05:22:03 -0700 Subject: [PATCH 01/24] chore(helm): udpated install instructions to use the repo and outsourced rest to DEV docs --- INSTALL.md | 91 +++------ charts/puris/README.md | 375 ++++++++++++++++++---------------- charts/puris/README.md.gotmpl | 29 ++- docs/DEVELOPMENT.md | 72 ++++++- 4 files changed, 324 insertions(+), 243 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index efe6dfe4..712fe59a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,71 +1,40 @@ -## Project Installation -### Running for development using mvn/npm or using docker -See the `INSTALL.md` files in the [backend](./backend/INSTALL.md) and [frontend](./frontend/INSTALL.md) folder. -### Running local integration testing user docker compose -See `Install.md` file in folder [local](./local/docker-compose.yaml) for integration testing environment with two deployed applications and EDCs. -### Running using helm (deployment) -1. Configure the application: - 1. Open the `values.yaml` file in [charts/puris](./charts/puris/values.yaml). - 2. Edit the following properties to your requirements: - - **Ingress**(if you want to enable ingress) for frontend/backend, under *frontend.ingress.* and *backend.ingress.* - - **EDC**, under *backend.puris.edc* - - **Own data**, under *backend.puris.own* - - **Current role for demonstrator**, under *backend.puris.demonstrator.role* - - **Postgresql settings**, under `backend.puris.datasource` (only necessary, if `postgres.enabled` is false - else autoconfigured). - - **Keycloak** is disabled by default but can be configured under `frontend.puris.keycloak`. - > **NOTE** - Further information on the individual properties can be found in the following [README.md](./charts/puris/README.md). -2. Install dependencies -```shell -helm repo add bitnami https://charts.bitnami.com/bitnami -helm dependency update -``` +# Project Installation -**Attention**: When using `postgres.enabled` = false and bringing your own database, ensure to set -`backend.puris.jpa.hibernate.ddl-auto` = `validate` to prevent **DATA LOSS**. +Please refer to the following instructions and tips to run the puris application. Per TRG we recommend the installation +via helm. + +## Running using Helm (deployment) + +First configure the application to your needs. you can use the [default values.yaml](./charts/puris/values.yaml) as a +basis. Please find below the most relevant configurations: -#### Run without Ingress +- **Ingress** (if you want to enable ingress) for frontend/backend, under `frontend.ingress.` and `backend.ingress.` +- **EDC**, under `backend.puris.edc` +- **DTR** incl. keycloak under `backend.puris.dtr` +- **Own master data**, under `backend.puris.own` +- **Role demonstration setup**, under `backend.puris.demonstrator.role` +- **Postgresql settings**, under `backend.puris.datasource` (only necessary, if `postgres.enabled` is false - + else autoconfigured). +- **Frontend Keycloak** is disabled by default but can be configured under `frontend.puris.keycloak`. -3. Run the application: -```shell -helm install puris charts/puris \ - --namespace puris \ - --create-namespace -``` -4. Forward ports for services: -```shell -kubectl -n puris port-forward svc/frontend 8080:8080 -kubectl -n puris port-forward svc/backend 8081:8081 -``` -5. Done! The applications should be available at `http://localhost:`. +> **NOTE** +> +> Further information on the individual properties and the installation commands can be found in the following +> [README.md](./charts/puris/README.md). -#### Run with Ingress +**Attention**: When using `postgres.enabled` = false and bringing your own database, ensure to set +`backend.puris.jpa.hibernate.ddl-auto` = `validate` to prevent **DATA LOSS**. + +## Running for development using mvn/npm or using docker + +See the `INSTALL.md` files in the [backend](./backend/INSTALL.md) and [frontend](./frontend/INSTALL.md) folder. -Precondition: please refer to your runtime environment's official documentation on how to enable ingress. -- [minikube](https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/) -- [kind](https://kind.sigs.k8s.io/docs/user/ingress/) +## Running local integration testing user docker compose -3. Run the application: -```shell -helm install puris charts/puris \ - --namespace puris \ - --create-namespace \ - --set frontend.ingress.enabled=true \ - --set backend.ingress.enabled=true -``` -4. Edit /etc/hosts: -```shell -# If you are using minikube use minikube ip to get you clusterIp, for kind this is localhost (127.0.0.1) -sudo vim /etc/hosts ->> add entry for frontend " " ->> add entry for backend " " ->> :wq! (save changes) -``` -5. Done! The applications should be available at: - - (frontend) `http://your-frontend-host-address.com` - - (backend) `http://your-backend-host-address.com` +See `Install.md` file in folder [local](./local/docker-compose.yaml) for integration testing environment with two +deployed applications and EDCs. -## NOTICE +# NOTICE This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/charts/puris/README.md b/charts/puris/README.md index e36d3220..1ffd6768 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -7,14 +7,30 @@ A helm chart for Kubernetes deployment of PURIS **Homepage:** ## Prerequisites - - Kubernetes 1.19+ - Helm 3.2.0+ -## TL;DR +## Install + +To install the chart with the release name `puris`: + +```shell +$ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev +$ helm install puris tractusx-dev/policy-hub +``` +To install the helm chart into your cluster with your values: ```shell -$ helm install puris --namespace puris --create-namespace . +$ helm install -f your-values.yaml puris tractusx-dev/policy-hub +``` + +To use the helm chart as a dependency: + +```yaml +dependencies: + - name: puris + repository: https://eclipse-tractusx.github.io/charts/dev + version: YOUR_VERSION ``` ## Source Code @@ -23,185 +39,188 @@ $ helm install puris --namespace puris --create-namespace . ## Requirements -| Repository | Name | Version | -|------------------------------------|------------|---------| +| Repository | Name | Version | +|------------|------|---------| | https://charts.bitnami.com/bitnami | postgresql | 12.12.x | ## Values -| Key | Type | Default | Description | -|-------------------------------------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution | list | `[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]` | Rules for the scheduler to find a pod | -| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.labelSelector.matchExpressions | list | `[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]` | Matching Expressions as key and operators for the pod affinity | -| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey | string | `"kubernetes.io/hostname"` | Topology key of the Kubernetes cluster | -| backend.autoscaling.enabled | bool | `false` | Enable or disable the autoscaling of pods | -| backend.env | object | `{}` | Extra environment variables that will be passed onto the backend deployment pods | -| backend.fullnameOverride | string | `"backend"` | Possibility to override the fullname | -| backend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | -| backend.image.repository | string | `"tractusx/app-puris-backend"` | Repository of the docker image | -| backend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | -| backend.imagePullSecrets | list | `[]` | List of used secrets | -| backend.ingress.annotations | object | `{"kubernetes.io/ingress.class":"nginx","nginx.ingress.kubernetes.io/backend-protocol":"HTTP","nginx.ingress.kubernetes.io/force-ssl-redirect":"true","nginx.ingress.kubernetes.io/ssl-passthrough":"true"}` | Annotations for the Ingress controller | -| backend.ingress.annotations."kubernetes.io/ingress.class" | string | `"nginx"` | Kubernetes Ingress class annotation for direct bindings | -| backend.ingress.annotations."nginx.ingress.kubernetes.io/backend-protocol" | string | `"HTTP"` | The backend protocol type (e.g. HTTP) | -| backend.ingress.annotations."nginx.ingress.kubernetes.io/force-ssl-redirect" | string | `"true"` | Force redirects from HTTP to HTTPS | -| backend.ingress.annotations."nginx.ingress.kubernetes.io/ssl-passthrough" | string | `"true"` | Pass SSL traffic to the backend ports | -| backend.ingress.enabled | bool | `false` | Enable the Ingress | -| backend.ingress.hosts | list | `[{"host":"your-backend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | -| backend.ingress.tls | list | `[{"hosts":["your-backend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | -| backend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":120,"periodSeconds":25,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | -| backend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | -| backend.livenessProbe.initialDelaySeconds | int | `120` | Delay in seconds after which an initial liveness probe is checked | -| backend.livenessProbe.periodSeconds | int | `25` | Wait time in seconds between liveness probes | -| backend.livenessProbe.successThreshold | int | `1` | Number of trys until a pod is marked alive | -| backend.livenessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the liveness probe | -| backend.nameOverride | string | `""` | Possibility to override the name | -| backend.nodeSelector | object | `{}` | Constrains for the node selector | -| backend.podAnnotations | object | `{}` | Annotations added to a running pod | -| backend.podSecurityContext | object | `{}` | Added security contexts for a pod | -| backend.puris.api.key | string | `"test"` | The API key of the PURIS application | -| backend.puris.api.rootDir | string | `"/catena"` | The root directory of the API | -| backend.puris.baseurl | string | `"your-backend-host-address.com"` | Base url of the PURIS backend | -| backend.puris.datasource.driverClassName | string | `"org.postgresql.Driver"` | Driver class name of the database | -| backend.puris.datasource.password | string | `nil` | Password for the database user. Ignored if postgres.enabled is true. | -| backend.puris.datasource.url | string | `"jdbc:postgresql://postgresql-name:5432/puris-database"` | URL of the database. Ignored if postgres.enabled is true. | -| backend.puris.datasource.username | string | `"db-user"` | Username of the database. Ignored if postgres.enabled is true. | -| backend.puris.deliverysubmodel.apiassetid | string | `"deliverysubmodel-api-asset"` | Asset ID for DeliverySubmodel API | -| backend.puris.demandsubmodel.apiassetid | string | `"demandsubmodel-api-asset"` | Asset ID for DemandSubmodel API | -| backend.puris.demonstrator.role | string | `nil` | Current role of the PURIS demonstrator. Default value should be empty. Can be set to "customer" or "supplier" to enable demonstration setup | -| backend.puris.dtr.idp.clients.edc.id | string | `"FOSS-EDC-CLIENT"` | id of the client that has a service account with roles to view the DTR. Used by the application to create DTR asset in the edc with read only access. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.idp.clients.edc.secret.alias | string | `"path/secret-name"` | alias for the vault used by the EDC in which the secret is stored. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.idp.clients.puris.id | string | `"FOSS-PURIS-CLIENT"` | id of the client that has a service account with roles to manage the DTR. Used by the application to create and update digital twins. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.idp.clients.puris.secret | string | `nil` | secret of the client with write access (no vault alias). No default value will be created if empty. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.idp.enabled | bool | `true` | enables the usage of the IDP for the DTR. | -| backend.puris.dtr.idp.tokenurl | string | `"https://keycloak-service.com/realms/your-realm/openid-connect/token"` | token url of the idp for your specific realm. May be different to other idp token url in this config. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.url | string | `"http://localhost:4243"` | Endpoint for DTR | -| backend.puris.edc.controlplane.host | string | `"172.17.0.2"` | | -| backend.puris.edc.controlplane.key | string | `"password"` | Key for the EDC control plane | -| backend.puris.edc.controlplane.management.url | string | `"https:/your-edc-address:8181/management"` | Url to the EDC controlplane management of the edc | -| backend.puris.edc.controlplane.protocol.url | string | `"https://your-edc-address:8184/api/v1/dsp"` | Url to the EDC controlplane protocol API of the edc | -| backend.puris.edc.dataplane.public.url | string | `"https://your-data-plane:8285/api/public/"` | Url of one of your data plane's public api | -| backend.puris.edr.deletiontimer | int | `2` | Number of minutes before received authentication data of a consumer pull is removed from memory | -| backend.puris.existingSecret | string | `"secret-backend-puris"` | Secret for backend passwords. For more information look into 'backend-secrets.yaml' file. | -| backend.puris.frameworkagreement.credential | string | `"Puris"` | The name of the framework agreement. Starting with Uppercase and using CamelCase. | -| backend.puris.frameworkagreement.version | string | `"1.0"` | The version of the framework agreement, NEEDS TO BE PUT AS "STRING"! | -| backend.puris.generatematerialcatenaxid | bool | `true` | Flag that decides whether the auto-generation feature of the puris backend is enabled. Since all Material entities are required to have a CatenaX-Id, you must enter any pre-existing CatenaX-Id via the materials-API of the backend, when you are inserting a new Material entity to the backend's database. If a CatenaX-Id was not assigned to your Material so far, then this feature can auto-generate one randomly. In a real-world-scenario, you must then use this randomly generated CatenaX-Id for the lifetime of that Material entity. | -| backend.puris.itemstocksubmodel.apiassetid | string | `"itemstocksubmodel-api-asset"` | Asset ID for ItemStockSubmodel API | -| backend.puris.jpa.hibernate.ddl-auto | string | `"create"` | Initialises SQL database with Hibernate property "create" to allow Hibernate to first drop all tables and then create new ones | -| backend.puris.jpa.properties.hibernate.enable_lazy_load_no_trans | bool | `true` | Enables "Lazy load no trans" property to fetch of each lazy entity to open a temporary session and run inside a separate transaction | -| backend.puris.own.bpna | string | `"BPNA4444444444ZZ"` | Own BPNA of the EDC | -| backend.puris.own.bpnl | string | `"BPNL4444444444XX"` | Own BPNL of the EDC | -| backend.puris.own.bpns | string | `"BPNS4444444444XX"` | Own BPNS of the EDC | -| backend.puris.own.country | string | `"Germany"` | Own country | -| backend.puris.own.name | string | `"YOUR-COMPANY-NAME"` | Own name (self-description) | -| backend.puris.own.site.name | string | `"YOUR-SITE-NAME"` | Own site name | -| backend.puris.own.streetnumber | string | `"Musterstraße 110A"` | Own street and number | -| backend.puris.own.zipcodeandcity | string | `"12345 Musterhausen"` | Own zipcode and city | -| backend.puris.productionsubmodel.apiassetid | string | `"productionsubmodel-api-asset"` | Asset ID for ProductionSubmodel API | -| backend.puris.purpose.name | string | `"cx.puris.base"` | The name of the purpose to use for submodel contracts | -| backend.puris.purpose.version | string | `"1"` | The version of the purpose to use for submodel contracts. NEEDS TO BE PUT AS "STRING"! | -| backend.readinessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":120,"periodSeconds":25,"successThreshold":1,"timeoutSeconds":1}` | Checks if the pod is fully ready to operate | -| backend.readinessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a readiness probe | -| backend.readinessProbe.initialDelaySeconds | int | `120` | Delay in seconds after which an initial readiness probe is checked | -| backend.readinessProbe.periodSeconds | int | `25` | Wait time in seconds between readiness probes | -| backend.readinessProbe.successThreshold | int | `1` | Number of trys until a pod is marked ready | -| backend.readinessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the readiness probe | -| backend.replicaCount | int | `1` | Number of replicas of the Kubernetes deployment | -| backend.resources.limits | object | `{"cpu":"3000m","memory":"2048Mi"}` | Maximum resource limits of CPU und memory | -| backend.resources.requests | object | `{"cpu":"1000m","memory":"2048Mi"}` | Minimum requested resources for CPU und memory | -| backend.securityContext | object | `{"allowPrivilegeEscalation":false,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":8877}` | Security configurations | -| backend.securityContext.allowPrivilegeEscalation | bool | `false` | Get more privileges than the parent process | -| backend.securityContext.runAsGroup | int | `3000` | Configures the group id of a user for a run | -| backend.securityContext.runAsNonRoot | bool | `true` | Configures the non-root privileges for a run | -| backend.securityContext.runAsUser | int | `8877` | Configures the user id for a run | -| backend.service.port | int | `8081` | The port of the service | -| backend.service.type | string | `"ClusterIP"` | Type of the service | -| backend.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | -| backend.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | -| backend.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | -| backend.tolerations | list | `[]` | Constrains for tolerations | -| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution | list | `[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]` | Rules for the scheduler to find a pod | -| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.labelSelector.matchExpressions | list | `[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]` | Matching Expressions as key and operators for the pod affinity | -| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey | string | `"kubernetes.io/hostname"` | Topology key of the Kubernetes cluster | -| frontend.autoscaling.enabled | bool | `false` | Enable or disable the autoscaling of pods | -| frontend.autoscaling.maxReplicas | int | `100` | Number of maximum replica pods for autoscaling | -| frontend.autoscaling.minReplicas | int | `1` | Number of minimum replica pods for autoscaling | -| frontend.autoscaling.targetCPUUtilizationPercentage | int | `80` | Value of CPU usage in percentage for autoscaling decisions | -| frontend.env | object | `{}` | Extra environment variables that will be passed onto the frontend deployment pods | -| frontend.fullnameOverride | string | `"frontend"` | Possibility to override the fullname | -| frontend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | -| frontend.image.repository | string | `"tractusx/app-puris-frontend"` | Repository of the docker image | -| frontend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | -| frontend.imagePullSecrets | list | `[]` | List of used secrets | -| frontend.ingress.annotations | object | `{}` | Annotations for the Ingress controller | -| frontend.ingress.className | string | `"nginx"` | Class name for the Ingress controller | -| frontend.ingress.enabled | bool | `false` | Enable the Ingress | -| frontend.ingress.hosts | list | `[{"host":"your-frontend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | -| frontend.ingress.tls | list | `[{"hosts":["your-frontend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | -| frontend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | -| frontend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | -| frontend.livenessProbe.initialDelaySeconds | int | `10` | Delay in seconds after which an initial liveness probe is checked | -| frontend.livenessProbe.periodSeconds | int | `10` | Wait time in seconds between liveness probes | -| frontend.livenessProbe.successThreshold | int | `1` | Number of trys until a pod is marked alive | -| frontend.livenessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the liveness probe | -| frontend.nameOverride | string | `""` | Possibility to override the name | -| frontend.nodeSelector | object | `{}` | Constrains for the node selector | -| frontend.podAnnotations | object | `{}` | Annotations added to a running pod | -| frontend.podSecurityContext | object | `{}` | Added security contexts for a pod | -| frontend.puris.appName | string | `"PURIS"` | The name of the app displayed in the frontend | -| frontend.puris.baseUrl | string | `"your-backend-host-address.com"` | The base URL for the backend base URL without further endpoints | -| frontend.puris.endpointCustomer | string | `"stockView/customer?ownMaterialNumber="` | The endpoint for the customers who buy a material identified via the own material number for the stock view | -| frontend.puris.endpointDelivery | string | `"delivery"` | The endpoint for the delivery submodel | -| frontend.puris.endpointDemand | string | `"demand"` | The endpoint for the demand submodel | -| frontend.puris.endpointMaterialStocks | string | `"stockView/material-stocks"` | The endpoint for material stocks for the stock view | -| frontend.puris.endpointMaterials | string | `"stockView/materials"` | The endpoint for materials for the stock view | -| frontend.puris.endpointPartner | string | `"partner"` | The endpoint for the partners BPNS | -| frontend.puris.endpointProductStocks | string | `"stockView/product-stocks"` | The endpoint for product stocks for the stock view | -| frontend.puris.endpointProduction | string | `"production"` | The endpoint for the production submodel | -| frontend.puris.endpointProductionRange | string | `"production/range"` | The endpoint for the production range of the production submodel | -| frontend.puris.endpointProducts | string | `"stockView/products"` | The endpoint for products for the stock view | -| frontend.puris.endpointReportedMaterialStocks | string | `"stockView/reported-material-stocks?ownMaterialNumber="` | The endpoint for the partners' (supplier) material stocks that they potentially will deliver to me | -| frontend.puris.endpointReportedProductStocks | string | `"stockView/reported-product-stocks?ownMaterialNumber="` | The endpoint for the partners' (customer) product stocks that they received from me | -| frontend.puris.endpointSupplier | string | `"stockView/supplier?ownMaterialNumber="` | The endpoint for the suppliers who buy a material identified via the own material number for the stock view | -| frontend.puris.endpointUpdateReportedMaterialStocks | string | `"stockView/update-reported-material-stocks?ownMaterialNumber="` | The endpoint for triggering an update of your material stocks on your partners side | -| frontend.puris.endpointUpdateReportedProductStocks | string | `"stockView/update-reported-product-stocks?ownMaterialNumber="` | The endpoint for triggering an update of your product stocks on your partners side | -| frontend.puris.keycloak.clientId | string | `"appXYZ"` | Name of the client which is used for the application. | -| frontend.puris.keycloak.disabled | bool | `true` | Disable the Keycloak integration. | -| frontend.puris.keycloak.realm | string | `"Catena-X"` | Name of the Realm of the keycloak instance. | -| frontend.puris.keycloak.redirectUrlFrontend | string | `"https://your-frontend-url.com"` | URL to use as keycloak redirect url. | -| frontend.puris.keycloak.url | string | `"https://idp.com/auth"` | The URL to the IDP that should be used. | -| frontend.puris.rateLimiting.burst | int | `30` | Burst rate limiting for nginx. | -| frontend.puris.rateLimiting.limit | string | `"10m"` | Bucket zone limit for rate limiting in nginx. | -| frontend.puris.rateLimiting.rate | string | `"10r/s"` | Allowed rates per second for nginx rate limiting. | -| frontend.readinessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Checks if the pod is fully ready to operate | -| frontend.readinessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a readiness probe | -| frontend.readinessProbe.initialDelaySeconds | int | `10` | Delay in seconds after which an initial readiness probe is checked | -| frontend.readinessProbe.periodSeconds | int | `10` | Wait time in seconds between readiness probes | -| frontend.readinessProbe.successThreshold | int | `1` | Number of trys until a pod is marked ready | -| frontend.readinessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the readiness probe | -| frontend.replicaCount | int | `1` | | -| frontend.resources.limits | object | `{"cpu":"600m","memory":"128Mi"}` | Maximum resource limits of CPU und memory | -| frontend.resources.requests | object | `{"cpu":"200m","memory":"128Mi"}` | Minimum requested resources for CPU und memory | -| frontend.securityContext | object | `{"allowPrivilegeEscalation":false,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":101}` | Security configurations | -| frontend.securityContext.allowPrivilegeEscalation | bool | `false` | Get more privileges than the parent process | -| frontend.securityContext.runAsGroup | int | `3000` | Configures the group id of a user for a run | -| frontend.securityContext.runAsNonRoot | bool | `true` | Configures the non-root privileges for a run | -| frontend.securityContext.runAsUser | int | `101` | Configures the user id for a run | -| frontend.service.port | int | `8080` | The port of the service | -| frontend.service.type | string | `"ClusterIP"` | Type of the service | -| frontend.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | -| frontend.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | -| frontend.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | -| frontend.tolerations | list | `[]` | Constrains for tolerations | -| global.domain.backend.ingress | string | `"your-backend-host-address.com"` | | -| postgresql.auth.database | string | `"postgres"` | Name of the database. | -| postgresql.auth.existingSecret | string | `"secret-postgres-init"` | Secret containing the password. For more information look into 'backend-secrets-postgres.yaml' file. | -| postgresql.auth.password | string | `""` | Password for the custom database user. Secret-key 'password' | -| postgresql.auth.passwordPostgres | string | `""` | Password for the database. Secret-key 'postgres-password'. | -| postgresql.auth.username | string | `"puris"` | Username for the custom database user. | -| postgresql.enabled | bool | `true` | Enable postgres by default, set to false to use existing postgres. Make sure to set backend.puris.jpa.hibernate.ddl-auto accordingly (by default database is created using hibernate ddl from backend). | -| postgresql.fullnameOverride | string | `"backend-postgresql"` | Possibility to override the fullname | -| postgresql.service.ports.postgresql | int | `5432` | Port of postgres database. | +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution | list | `[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]` | Rules for the scheduler to find a pod | +| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.labelSelector.matchExpressions | list | `[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]` | Matching Expressions as key and operators for the pod affinity | +| backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey | string | `"kubernetes.io/hostname"` | Topology key of the Kubernetes cluster | +| backend.autoscaling.enabled | bool | `false` | Enable or disable the autoscaling of pods | +| backend.env | object | `{}` | Extra environment variables that will be passed onto the backend deployment pods | +| backend.fullnameOverride | string | `"backend"` | Possibility to override the fullname | +| backend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | +| backend.image.repository | string | `"tractusx/app-puris-backend"` | Repository of the docker image | +| backend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | +| backend.imagePullSecrets | list | `[]` | List of used secrets | +| backend.ingress.annotations | object | `{"kubernetes.io/ingress.class":"nginx","nginx.ingress.kubernetes.io/backend-protocol":"HTTP","nginx.ingress.kubernetes.io/force-ssl-redirect":"true","nginx.ingress.kubernetes.io/ssl-passthrough":"true"}` | Annotations for the Ingress controller | +| backend.ingress.annotations."kubernetes.io/ingress.class" | string | `"nginx"` | Kubernetes Ingress class annotation for direct bindings | +| backend.ingress.annotations."nginx.ingress.kubernetes.io/backend-protocol" | string | `"HTTP"` | The backend protocol type (e.g. HTTP) | +| backend.ingress.annotations."nginx.ingress.kubernetes.io/force-ssl-redirect" | string | `"true"` | Force redirects from HTTP to HTTPS | +| backend.ingress.annotations."nginx.ingress.kubernetes.io/ssl-passthrough" | string | `"true"` | Pass SSL traffic to the backend ports | +| backend.ingress.enabled | bool | `false` | Enable the Ingress | +| backend.ingress.hosts | list | `[{"host":"your-backend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | +| backend.ingress.tls | list | `[{"hosts":["your-backend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | +| backend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":120,"periodSeconds":25,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | +| backend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | +| backend.livenessProbe.initialDelaySeconds | int | `120` | Delay in seconds after which an initial liveness probe is checked | +| backend.livenessProbe.periodSeconds | int | `25` | Wait time in seconds between liveness probes | +| backend.livenessProbe.successThreshold | int | `1` | Number of trys until a pod is marked alive | +| backend.livenessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the liveness probe | +| backend.nameOverride | string | `""` | Possibility to override the name | +| backend.nodeSelector | object | `{}` | Constrains for the node selector | +| backend.podAnnotations | object | `{}` | Annotations added to a running pod | +| backend.podSecurityContext | object | `{}` | Added security contexts for a pod | +| backend.puris.api.key | string | `"test"` | The API key of the PURIS application | +| backend.puris.api.rootDir | string | `"/catena"` | The root directory of the API | +| backend.puris.baseurl | string | `"your-backend-host-address.com"` | Base url of the PURIS backend | +| backend.puris.datasource.driverClassName | string | `"org.postgresql.Driver"` | Driver class name of the database | +| backend.puris.datasource.password | string | `nil` | Password for the database user. Ignored if postgres.enabled is true. | +| backend.puris.datasource.url | string | `"jdbc:postgresql://postgresql-name:5432/puris-database"` | URL of the database. Ignored if postgres.enabled is true. | +| backend.puris.datasource.username | string | `"db-user"` | Username of the database. Ignored if postgres.enabled is true. | +| backend.puris.deliverysubmodel.apiassetid | string | `"deliverysubmodel-api-asset"` | Asset ID for DeliverySubmodel API | +| backend.puris.demandsubmodel.apiassetid | string | `"demandsubmodel-api-asset"` | Asset ID for DemandSubmodel API | +| backend.puris.demonstrator.role | string | `nil` | Current role of the PURIS demonstrator. Default value should be empty. Can be set to "customer" or "supplier" to enable demonstration setup | +| backend.puris.dtr.idp.clients.edc.id | string | `"FOSS-EDC-CLIENT"` | id of the client that has a service account with roles to view the DTR. Used by the application to create DTR asset in the edc with read only access. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.idp.clients.edc.secret.alias | string | `"path/secret-name"` | alias for the vault used by the EDC in which the secret is stored. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.idp.clients.puris.id | string | `"FOSS-PURIS-CLIENT"` | id of the client that has a service account with roles to manage the DTR. Used by the application to create and update digital twins. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.idp.clients.puris.secret | string | `nil` | secret of the client with write access (no vault alias). No default value will be created if empty. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.idp.enabled | bool | `true` | enables the usage of the IDP for the DTR. | +| backend.puris.dtr.idp.tokenurl | string | `"https://keycloak-service.com/realms/your-realm/openid-connect/token"` | token url of the idp for your specific realm. May be different to other idp token url in this config. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.url | string | `"http://localhost:4243"` | Endpoint for DTR | +| backend.puris.edc.controlplane.host | string | `"172.17.0.2"` | | +| backend.puris.edc.controlplane.key | string | `"password"` | Key for the EDC control plane | +| backend.puris.edc.controlplane.management.url | string | `"https:/your-edc-address:8181/management"` | Url to the EDC controlplane management of the edc | +| backend.puris.edc.controlplane.protocol.url | string | `"https://your-edc-address:8184/api/v1/dsp"` | Url to the EDC controlplane protocol API of the edc | +| backend.puris.edc.dataplane.public.url | string | `"https://your-data-plane:8285/api/public/"` | Url of one of your data plane's public api | +| backend.puris.edr.deletiontimer | int | `2` | Number of minutes before received authentication data of a consumer pull is removed from memory | +| backend.puris.existingSecret | string | `"secret-backend-puris"` | Secret for backend passwords. For more information look into 'backend-secrets.yaml' file. | +| backend.puris.frameworkagreement.credential | string | `"Puris"` | The name of the framework agreement. Starting with Uppercase and using CamelCase. | +| backend.puris.frameworkagreement.version | string | `"1.0"` | The version of the framework agreement, NEEDS TO BE PUT AS "STRING"! | +| backend.puris.generatematerialcatenaxid | bool | `true` | Flag that decides whether the auto-generation feature of the puris backend is enabled. Since all Material entities are required to have a CatenaX-Id, you must enter any pre-existing CatenaX-Id via the materials-API of the backend, when you are inserting a new Material entity to the backend's database. If a CatenaX-Id was not assigned to your Material so far, then this feature can auto-generate one randomly. In a real-world-scenario, you must then use this randomly generated CatenaX-Id for the lifetime of that Material entity. | +| backend.puris.itemstocksubmodel.apiassetid | string | `"itemstocksubmodel-api-asset"` | Asset ID for ItemStockSubmodel API | +| backend.puris.jpa.hibernate.ddl-auto | string | `"create"` | Initialises SQL database with Hibernate property "create" to allow Hibernate to first drop all tables and then create new ones | +| backend.puris.jpa.properties.hibernate.enable_lazy_load_no_trans | bool | `true` | Enables "Lazy load no trans" property to fetch of each lazy entity to open a temporary session and run inside a separate transaction | +| backend.puris.own.bpna | string | `"BPNA4444444444ZZ"` | Own BPNA of the EDC | +| backend.puris.own.bpnl | string | `"BPNL4444444444XX"` | Own BPNL of the EDC | +| backend.puris.own.bpns | string | `"BPNS4444444444XX"` | Own BPNS of the EDC | +| backend.puris.own.country | string | `"Germany"` | Own country | +| backend.puris.own.name | string | `"YOUR-COMPANY-NAME"` | Own name (self-description) | +| backend.puris.own.site.name | string | `"YOUR-SITE-NAME"` | Own site name | +| backend.puris.own.streetnumber | string | `"Musterstraße 110A"` | Own street and number | +| backend.puris.own.zipcodeandcity | string | `"12345 Musterhausen"` | Own zipcode and city | +| backend.puris.productionsubmodel.apiassetid | string | `"productionsubmodel-api-asset"` | Asset ID for ProductionSubmodel API | +| backend.puris.purpose.name | string | `"cx.puris.base"` | The name of the purpose to use for submodel contracts | +| backend.puris.purpose.version | string | `"1"` | The version of the purpose to use for submodel contracts. NEEDS TO BE PUT AS "STRING"! | +| backend.readinessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":120,"periodSeconds":25,"successThreshold":1,"timeoutSeconds":1}` | Checks if the pod is fully ready to operate | +| backend.readinessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a readiness probe | +| backend.readinessProbe.initialDelaySeconds | int | `120` | Delay in seconds after which an initial readiness probe is checked | +| backend.readinessProbe.periodSeconds | int | `25` | Wait time in seconds between readiness probes | +| backend.readinessProbe.successThreshold | int | `1` | Number of trys until a pod is marked ready | +| backend.readinessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the readiness probe | +| backend.replicaCount | int | `1` | Number of replicas of the Kubernetes deployment | +| backend.resources.limits | object | `{"cpu":"3000m","memory":"2048Mi"}` | Maximum resource limits of CPU und memory | +| backend.resources.requests | object | `{"cpu":"1000m","memory":"2048Mi"}` | Minimum requested resources for CPU und memory | +| backend.securityContext | object | `{"allowPrivilegeEscalation":false,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":8877}` | Security configurations | +| backend.securityContext.allowPrivilegeEscalation | bool | `false` | Get more privileges than the parent process | +| backend.securityContext.runAsGroup | int | `3000` | Configures the group id of a user for a run | +| backend.securityContext.runAsNonRoot | bool | `true` | Configures the non-root privileges for a run | +| backend.securityContext.runAsUser | int | `8877` | Configures the user id for a run | +| backend.service.port | int | `8081` | The port of the service | +| backend.service.type | string | `"ClusterIP"` | Type of the service | +| backend.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| backend.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| backend.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| backend.tolerations | list | `[]` | Constrains for tolerations | +| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution | list | `[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]},"topologyKey":"kubernetes.io/hostname"},"weight":100}]` | Rules for the scheduler to find a pod | +| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.labelSelector.matchExpressions | list | `[{"key":"app.kubernetes.io/name","operator":"DoesNotExist"}]` | Matching Expressions as key and operators for the pod affinity | +| frontend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey | string | `"kubernetes.io/hostname"` | Topology key of the Kubernetes cluster | +| frontend.autoscaling.enabled | bool | `false` | Enable or disable the autoscaling of pods | +| frontend.autoscaling.maxReplicas | int | `100` | Number of maximum replica pods for autoscaling | +| frontend.autoscaling.minReplicas | int | `1` | Number of minimum replica pods for autoscaling | +| frontend.autoscaling.targetCPUUtilizationPercentage | int | `80` | Value of CPU usage in percentage for autoscaling decisions | +| frontend.env | object | `{}` | Extra environment variables that will be passed onto the frontend deployment pods | +| frontend.fullnameOverride | string | `"frontend"` | Possibility to override the fullname | +| frontend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | +| frontend.image.repository | string | `"tractusx/app-puris-frontend"` | Repository of the docker image | +| frontend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | +| frontend.imagePullSecrets | list | `[]` | List of used secrets | +| frontend.ingress.annotations | object | `{}` | Annotations for the Ingress controller | +| frontend.ingress.className | string | `"nginx"` | Class name for the Ingress controller | +| frontend.ingress.enabled | bool | `false` | Enable the Ingress | +| frontend.ingress.hosts | list | `[{"host":"your-frontend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | +| frontend.ingress.tls | list | `[{"hosts":["your-frontend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | +| frontend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | +| frontend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | +| frontend.livenessProbe.initialDelaySeconds | int | `10` | Delay in seconds after which an initial liveness probe is checked | +| frontend.livenessProbe.periodSeconds | int | `10` | Wait time in seconds between liveness probes | +| frontend.livenessProbe.successThreshold | int | `1` | Number of trys until a pod is marked alive | +| frontend.livenessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the liveness probe | +| frontend.nameOverride | string | `""` | Possibility to override the name | +| frontend.nodeSelector | object | `{}` | Constrains for the node selector | +| frontend.podAnnotations | object | `{}` | Annotations added to a running pod | +| frontend.podSecurityContext | object | `{}` | Added security contexts for a pod | +| frontend.puris.appName | string | `"PURIS"` | The name of the app displayed in the frontend | +| frontend.puris.baseUrl | string | `"your-backend-host-address.com"` | The base URL for the backend base URL without further endpoints | +| frontend.puris.endpointCustomer | string | `"stockView/customer?ownMaterialNumber="` | The endpoint for the customers who buy a material identified via the own material number for the stock view | +| frontend.puris.endpointDelivery | string | `"delivery"` | The endpoint for the delivery submodel | +| frontend.puris.endpointDemand | string | `"demand"` | The endpoint for the demand submodel | +| frontend.puris.endpointMaterialStocks | string | `"stockView/material-stocks"` | The endpoint for material stocks for the stock view | +| frontend.puris.endpointMaterials | string | `"stockView/materials"` | The endpoint for materials for the stock view | +| frontend.puris.endpointPartner | string | `"partner"` | The endpoint for partner information | +| frontend.puris.endpointProductStocks | string | `"stockView/product-stocks"` | The endpoint for product stocks for the stock view | +| frontend.puris.endpointProduction | string | `"production"` | The endpoint for the production submodel | +| frontend.puris.endpointProductionRange | string | `"production/range"` | The endpoint for the production range of the production submodel | +| frontend.puris.endpointProducts | string | `"stockView/products"` | The endpoint for products for the stock view | +| frontend.puris.endpointReportedMaterialStocks | string | `"stockView/reported-material-stocks?ownMaterialNumber="` | The endpoint for the partners' (supplier) material stocks that they potentially will deliver to me | +| frontend.puris.endpointReportedProductStocks | string | `"stockView/reported-product-stocks?ownMaterialNumber="` | The endpoint for the partners' (customer) product stocks that they received from me | +| frontend.puris.endpointSupplier | string | `"stockView/supplier?ownMaterialNumber="` | The endpoint for the suppliers who buy a material identified via the own material number for the stock view | +| frontend.puris.endpointUpdateReportedMaterialStocks | string | `"stockView/update-reported-material-stocks?ownMaterialNumber="` | The endpoint for triggering an update of your material stocks on your partners side | +| frontend.puris.endpointUpdateReportedProductStocks | string | `"stockView/update-reported-product-stocks?ownMaterialNumber="` | The endpoint for triggering an update of your product stocks on your partners side | +| frontend.puris.keycloak.clientId | string | `"appXYZ"` | Name of the client which is used for the application. | +| frontend.puris.keycloak.disabled | bool | `true` | Disable the Keycloak integration. | +| frontend.puris.keycloak.realm | string | `"Catena-X"` | Name of the Realm of the keycloak instance. | +| frontend.puris.keycloak.redirectUrlFrontend | string | `"https://your-frontend-url.com"` | URL to use as keycloak redirect url. | +| frontend.puris.keycloak.url | string | `"https://idp.com/auth"` | The URL to the IDP that should be used. | +| frontend.puris.rateLimiting.burst | int | `30` | Burst rate limiting for nginx. | +| frontend.puris.rateLimiting.limit | string | `"10m"` | Bucket zone limit for rate limiting in nginx. | +| frontend.puris.rateLimiting.rate | string | `"10r/s"` | Allowed rates per second for nginx rate limiting. | +| frontend.readinessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Checks if the pod is fully ready to operate | +| frontend.readinessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a readiness probe | +| frontend.readinessProbe.initialDelaySeconds | int | `10` | Delay in seconds after which an initial readiness probe is checked | +| frontend.readinessProbe.periodSeconds | int | `10` | Wait time in seconds between readiness probes | +| frontend.readinessProbe.successThreshold | int | `1` | Number of trys until a pod is marked ready | +| frontend.readinessProbe.timeoutSeconds | int | `1` | Timeout in seconds of the readiness probe | +| frontend.replicaCount | int | `1` | | +| frontend.resources.limits | object | `{"cpu":"600m","memory":"128Mi"}` | Maximum resource limits of CPU und memory | +| frontend.resources.requests | object | `{"cpu":"200m","memory":"128Mi"}` | Minimum requested resources for CPU und memory | +| frontend.securityContext | object | `{"allowPrivilegeEscalation":false,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":101}` | Security configurations | +| frontend.securityContext.allowPrivilegeEscalation | bool | `false` | Get more privileges than the parent process | +| frontend.securityContext.runAsGroup | int | `3000` | Configures the group id of a user for a run | +| frontend.securityContext.runAsNonRoot | bool | `true` | Configures the non-root privileges for a run | +| frontend.securityContext.runAsUser | int | `101` | Configures the user id for a run | +| frontend.service.port | int | `8080` | The port of the service | +| frontend.service.type | string | `"ClusterIP"` | Type of the service | +| frontend.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| frontend.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| frontend.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| frontend.tolerations | list | `[]` | Constrains for tolerations | +| global.domain.backend.ingress | string | `"your-backend-host-address.com"` | | +| postgresql.auth.database | string | `"postgres"` | Name of the database. | +| postgresql.auth.existingSecret | string | `"secret-postgres-init"` | Secret containing the password. For more information look into 'backend-secrets-postgres.yaml' file. | +| postgresql.auth.password | string | `""` | Password for the custom database user. Secret-key 'password' | +| postgresql.auth.passwordPostgres | string | `""` | Password for the database. Secret-key 'postgres-password'. | +| postgresql.auth.username | string | `"puris"` | Username for the custom database user. | +| postgresql.enabled | bool | `true` | Enable postgres by default, set to false to use existing postgres. Make sure to set backend.puris.jpa.hibernate.ddl-auto accordingly (by default database is created using hibernate ddl from backend). | +| postgresql.fullnameOverride | string | `"backend-postgresql"` | Possibility to override the fullname | +| postgresql.service.ports.postgresql | int | `5432` | Port of postgres database. | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.3](https://github.com/norwoodj/helm-docs/releases/v1.11.3) ## NOTICE diff --git a/charts/puris/README.md.gotmpl b/charts/puris/README.md.gotmpl index eba6b0f9..cfa302ec 100644 --- a/charts/puris/README.md.gotmpl +++ b/charts/puris/README.md.gotmpl @@ -12,11 +12,28 @@ - Kubernetes 1.19+ - Helm 3.2.0+ -## TL;DR +## Install + +To install the chart with the release name `puris`: + +```shell +$ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev +$ helm install puris tractusx-dev/policy-hub +``` +To install the helm chart into your cluster with your values: + ```shell -$ helm install puris --namespace puris --create-namespace . +$ helm install -f your-values.yaml puris tractusx-dev/policy-hub ``` +To use the helm chart as a dependency: + +```yaml +dependencies: + - name: puris + repository: https://eclipse-tractusx.github.io/charts/dev + version: YOUR_VERSION +``` {{ template "chart.maintainersSection" . }} @@ -27,3 +44,11 @@ $ helm install puris --namespace puris --create-namespace . {{ template "chart.valuesSection" . }} {{ template "helm-docs.versionFooter" . }} + +## NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +- SPDX-License-Identifier: Apache-2.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 8c4ab0e2..183f5782 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -60,7 +60,7 @@ cat requirements.txt | grep -v \# \ | eclipseDashTool -summary DEPENDENCIES - ``` -Note: Dash action provided by eclipse-tractusx/sig-infra does not provide to opportunity for python. +Note: Dash action provided by eclipse-tractusx/sig-infra does not provide to opportunity for python. ## Frontend container building workaround to use environment variables for vue @@ -87,7 +87,75 @@ Note: Dash action provided by eclipse-tractusx/sig-infra does not provide to opp 3. Does the replacement in the built files 4. Starts nginx -# Testing Helm Charts with local images +# Local installations with Helm + +## Local Installation + +Different to installations from the official repo (see e.g. [Helm README.md](../charts/puris/README.md)), you need to +first install dependencies. + +```shell +cd ../charts/puris +helm repo add bitnami https://charts.bitnami.com/bitnami +helm dependency update +``` + +Then install the application to your needs: + +### Run with Ingress (recommended) + +Precondition: please refer to your runtime environment's official documentation on how to enable ingress. + +- [minikube](https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/) +- [kind](https://kind.sigs.k8s.io/docs/user/ingress/) + +Run the application + +```shell +helm install puris . \ + --namespace puris \ + --create-namespace \ + --set frontend.ingress.enabled=true \ + --set backend.ingress.enabled=true +``` + +Edit /etc/hosts: + +```shell +# If you are using minikube use minikube ip to get you clusterIp, for kind this is localhost (127.0.0.1) +sudo vim /etc/hosts +>> add entry for frontend " " +>> add entry for backend " " +>> :wq! (save changes) +``` + +Done! The applications should be available at: + +- (frontend) `http://your-frontend-host-address.com` +- (backend) `http://your-backend-host-address.com` + +> **NOTE** +> +> Ingress must be enabled for your runtime once per cluster installation. /etc/hosts adoption once per system / url + +### Run without Ingress + +```shell +helm install puris . \ + --namespace puris \ + --create-namespace +``` + +Forward ports for services: + +```shell +kubectl -n puris port-forward svc/frontend 8080:8080 +kubectl -n puris port-forward svc/backend 8081:8081 +``` + +Done! The applications should be available at `http://localhost:`. + +## Testing Helm Charts with Local Images When changing the helm charts due to changes of e.g. environment variables, one should test locally whether the changes work. From 6785c10658e5e143ef749e3dece7c5d9859ae3a7 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 06:36:12 -0700 Subject: [PATCH 02/24] refactor(helm): use qualified names for services, labels and templates --- charts/puris/Chart.yaml | 2 +- charts/puris/README.md | 6 +-- charts/puris/templates/NOTES.txt | 16 +++---- charts/puris/templates/_helpers.tpl | 48 +++++++++---------- .../puris/templates/backend-deployment.yaml | 12 ++--- charts/puris/templates/backend-hpa.yaml | 6 +-- charts/puris/templates/backend-ingress.yaml | 4 +- .../templates/backend-secrets-postgres.yaml | 2 +- charts/puris/templates/backend-secrets.yaml | 2 +- charts/puris/templates/backend-service.yaml | 6 +-- .../templates/backend-serviceaccount.yaml | 4 +- .../puris/templates/frontend-deployment.yaml | 12 ++--- charts/puris/templates/frontend-hpa.yaml | 6 +-- charts/puris/templates/frontend-ingress.yaml | 4 +- charts/puris/templates/frontend-service.yaml | 6 +-- .../templates/frontend-serviceaccount.yaml | 4 +- charts/puris/values.yaml | 8 +--- 17 files changed, 71 insertions(+), 77 deletions(-) diff --git a/charts/puris/Chart.yaml b/charts/puris/Chart.yaml index d0f0c11f..b6880ece 100644 --- a/charts/puris/Chart.yaml +++ b/charts/puris/Chart.yaml @@ -35,7 +35,7 @@ dependencies: # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2.5.1 +version: 2.6.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/puris/README.md b/charts/puris/README.md index 1ffd6768..f2065981 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -1,6 +1,6 @@ # puris -![Version: 2.5.1](https://img.shields.io/badge/Version-2.5.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.0](https://img.shields.io/badge/AppVersion-2.0.0-informational?style=flat-square) +![Version: 2.6.0](https://img.shields.io/badge/Version-2.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.0](https://img.shields.io/badge/AppVersion-2.0.0-informational?style=flat-square) A helm chart for Kubernetes deployment of PURIS @@ -52,7 +52,6 @@ dependencies: | backend.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey | string | `"kubernetes.io/hostname"` | Topology key of the Kubernetes cluster | | backend.autoscaling.enabled | bool | `false` | Enable or disable the autoscaling of pods | | backend.env | object | `{}` | Extra environment variables that will be passed onto the backend deployment pods | -| backend.fullnameOverride | string | `"backend"` | Possibility to override the fullname | | backend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | | backend.image.repository | string | `"tractusx/app-puris-backend"` | Repository of the docker image | | backend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | @@ -144,7 +143,6 @@ dependencies: | frontend.autoscaling.minReplicas | int | `1` | Number of minimum replica pods for autoscaling | | frontend.autoscaling.targetCPUUtilizationPercentage | int | `80` | Value of CPU usage in percentage for autoscaling decisions | | frontend.env | object | `{}` | Extra environment variables that will be passed onto the frontend deployment pods | -| frontend.fullnameOverride | string | `"frontend"` | Possibility to override the fullname | | frontend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | | frontend.image.repository | string | `"tractusx/app-puris-frontend"` | Repository of the docker image | | frontend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | @@ -216,7 +214,7 @@ dependencies: | postgresql.auth.passwordPostgres | string | `""` | Password for the database. Secret-key 'postgres-password'. | | postgresql.auth.username | string | `"puris"` | Username for the custom database user. | | postgresql.enabled | bool | `true` | Enable postgres by default, set to false to use existing postgres. Make sure to set backend.puris.jpa.hibernate.ddl-auto accordingly (by default database is created using hibernate ddl from backend). | -| postgresql.fullnameOverride | string | `"backend-postgresql"` | Possibility to override the fullname | +| postgresql.service | object | `{"ports":{"postgresql":5432}}` | Possibility to override the name nameOverride: "" | | postgresql.service.ports.postgresql | int | `5432` | Port of postgres database. | ---------------------------------------------- diff --git a/charts/puris/templates/NOTES.txt b/charts/puris/templates/NOTES.txt index f4e5d022..2a20a944 100644 --- a/charts/puris/templates/NOTES.txt +++ b/charts/puris/templates/NOTES.txt @@ -10,11 +10,11 @@ {{- end }} {{- else if and (contains "NodePort" .Values.frontend.service.type) (contains "NodePort" .Values.backend.service.type) }} Frontend: - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "frontend.fullname" . }}-frontend) + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "puris.frontend.fullname" . }}-frontend) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT Backend: - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "backend.fullname" . }}-backend) + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "puris.backend.fullname" . }}-backend) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT Or @@ -23,22 +23,22 @@ {{- else if and (contains "LoadBalancer" .Values.frontend.service.type) (contains "LoadBalancer" .Values.backend.service.type) }} Frontend: NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "frontend.fullname" . }}-frontend' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "frontend.fullname" . }}-frontend --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "puris.frontend.fullname" . }}-frontend' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "puris.frontend.fullname" . }}-frontend --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") echo http://$SERVICE_IP:{{ .Values.fronted.service.port }} Backend: NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "backend.fullname" . }}-backend' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "backend.fullname" . }}-backend --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "puris.backend.fullname" . }}-backend' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "puris.backend.fullname" . }}-backend --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") echo http://$SERVICE_IP:{{ .Values.backend.service.port }} {{- else if and (contains "ClusterIP" .Values.frontend.service.type) (contains "ClusterIP" .Values.backend.service.type) }} Frontend: - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "frontend.name" . }}-frontend,app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "puris.frontend.name" . }}-frontend,app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT Backend: - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "backend.name" . }}-backend,app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "puris.backend.name" . }}-backend,app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT diff --git a/charts/puris/templates/_helpers.tpl b/charts/puris/templates/_helpers.tpl index 245b5e11..37dadb49 100644 --- a/charts/puris/templates/_helpers.tpl +++ b/charts/puris/templates/_helpers.tpl @@ -1,8 +1,8 @@ {{/* Expand the name of the chart. */}} -{{- define "backend.name" -}} -{{- default .Chart.Name .Values.backend.nameOverride | trunc 63 | trimSuffix "-" }} +{{- define "puris.backend.name" -}} +{{- default .Chart.Name "puris-backend" .Values.backend.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{/* @@ -10,11 +10,11 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "backend.fullname" -}} +{{- define "puris.backend.fullname" -}} {{- if .Values.backend.fullnameOverride }} {{- .Values.backend.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} -{{- $name := default .Chart.Name .Values.backend.nameOverride }} +{{- $name := default .Chart.Name "puris-backend" .Values.backend.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "backend.chart" -}} +{{- define "puris.backend.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "backend.labels" -}} -helm.sh/chart: {{ include "backend.chart" . }} -{{ include "backend.selectorLabels" . }} +{{- define "puris.backend.labels" -}} +helm.sh/chart: {{ include "puris.backend.chart" . }} +{{ include "puris.backend.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}-backend {{/* Selector labels */}} -{{- define "backend.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backend.name" . }}-backend +{{- define "puris.backend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "puris.backend.name" . }} app.kubernetes.io/instance: {{ .Release.Name }}-backend {{- end }} {{/* Create the name of the service account to use */}} -{{- define "backend.serviceAccountName" -}} +{{- define "puris.backend.serviceAccountName" -}} {{- if .Values.backend.serviceAccount.create }} -{{- default (include "backend.fullname" .) .Values.backend.serviceAccount.name }} +{{- default (include "puris.backend.fullname" .) .Values.backend.serviceAccount.name }} {{- else }} {{- default "default" .Values.backend.serviceAccount.name }} {{- end }} @@ -65,8 +65,8 @@ Create the name of the service account to use FRONTEND Expand the name of the chart. */}} -{{- define "frontend.name" -}} -{{- default .Chart.Name .Values.frontend.nameOverride | trunc 63 | trimSuffix "-" }} +{{- define "puris.frontend.name" -}} +{{- default .Chart.Name "puris-frontend" .Values.frontend.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{/* @@ -74,11 +74,11 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "frontend.fullname" -}} +{{- define "puris.frontend.fullname" -}} {{- if .Values.frontend.fullnameOverride }} {{- .Values.frontend.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} -{{- $name := default .Chart.Name .Values.frontend.nameOverride }} +{{- $name := default .Chart.Name "puris-frontend" .Values.frontend.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} @@ -90,16 +90,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "frontend.chart" -}} +{{- define "puris.frontend.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "frontend.labels" -}} -helm.sh/chart: {{ include "frontend.chart" . }} -{{ include "frontend.selectorLabels" . }} +{{- define "puris.frontend.labels" -}} +helm.sh/chart: {{ include "puris.frontend.chart" . }} +{{ include "puris.frontend.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -109,17 +109,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}-frontend {{/* Selector labels */}} -{{- define "frontend.selectorLabels" -}} -app.kubernetes.io/name: {{ include "frontend.name" . }}-frontend +{{- define "puris.frontend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "puris.frontend.name" . }} app.kubernetes.io/instance: {{ .Release.Name }}-frontend {{- end }} {{/* Create the name of the service account to use */}} -{{- define "frontend.serviceAccountName" -}} +{{- define "puris.frontend.serviceAccountName" -}} {{- if .Values.frontend.serviceAccount.create }} -{{- default (include "frontend.fullname" .) .Values.frontend.serviceAccount.name }} +{{- default (include "puris.frontend.fullname" .) .Values.frontend.serviceAccount.name }} {{- else }} {{- default "default" .Values.frontend.serviceAccount.name }} {{- end }} diff --git a/charts/puris/templates/backend-deployment.yaml b/charts/puris/templates/backend-deployment.yaml index 1082e98f..a44af323 100644 --- a/charts/puris/templates/backend-deployment.yaml +++ b/charts/puris/templates/backend-deployment.yaml @@ -22,16 +22,16 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "backend.fullname" . }} + name: {{ include "puris.backend.fullname" . }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} spec: {{- if not .Values.backend.autoscaling.enabled }} replicas: {{ .Values.backend.replicaCount }} {{- end }} selector: matchLabels: - {{- include "backend.selectorLabels" . | nindent 6 }} + {{- include "puris.backend.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.backend.podAnnotations }} @@ -39,17 +39,17 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "backend.selectorLabels" . | nindent 8 }} + {{- include "puris.backend.selectorLabels" . | nindent 8 }} spec: {{- with .Values.backend.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "backend.serviceAccountName" . }} + serviceAccountName: {{ include "puris.backend.serviceAccountName" . }} securityContext: {{- toYaml .Values.backend.podSecurityContext | nindent 8 }} containers: - - name: {{ include "backend.fullname" . }} + - name: {{ include "puris.backend.fullname" . }} securityContext: {{- toYaml .Values.backend.securityContext | nindent 12 }} image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag | default .Chart.AppVersion }}" diff --git a/charts/puris/templates/backend-hpa.yaml b/charts/puris/templates/backend-hpa.yaml index a6d24592..613bc58d 100644 --- a/charts/puris/templates/backend-hpa.yaml +++ b/charts/puris/templates/backend-hpa.yaml @@ -23,14 +23,14 @@ apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ include "backend.fullname" . }} + name: {{ include "puris.backend.fullname" . }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ include "backend.fullname" . }} + name: {{ include "puris.backend.fullname" . }} minReplicas: {{ .Values.backend.autoscaling.minReplicas }} maxReplicas: {{ .Values.backend.autoscaling.maxReplicas }} metrics: diff --git a/charts/puris/templates/backend-ingress.yaml b/charts/puris/templates/backend-ingress.yaml index 56448c73..ea880845 100644 --- a/charts/puris/templates/backend-ingress.yaml +++ b/charts/puris/templates/backend-ingress.yaml @@ -20,7 +20,7 @@ */}} {{- if .Values.backend.ingress.enabled -}} -{{- $fullName := include "backend.fullname" . -}} +{{- $fullName := include "puris.backend.fullname" . -}} {{- $svcPort := .Values.backend.service.port -}} {{- if and .Values.backend.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.backend.ingress.annotations "kubernetes.io/ingress.class") }} @@ -38,7 +38,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} {{- with .Values.backend.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/charts/puris/templates/backend-secrets-postgres.yaml b/charts/puris/templates/backend-secrets-postgres.yaml index 6b7f71ae..810a9d60 100644 --- a/charts/puris/templates/backend-secrets-postgres.yaml +++ b/charts/puris/templates/backend-secrets-postgres.yaml @@ -5,7 +5,7 @@ metadata: name: {{ .Values.postgresql.auth.existingSecret }} namespace: {{ .Release.Namespace }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} type: Opaque # use lookup function to check if secret exists {{- $secret := (lookup "v1" "Secret" .Release.Namespace .Values.postgresql.auth.existingSecret) }} diff --git a/charts/puris/templates/backend-secrets.yaml b/charts/puris/templates/backend-secrets.yaml index 7346cbf0..462879e4 100644 --- a/charts/puris/templates/backend-secrets.yaml +++ b/charts/puris/templates/backend-secrets.yaml @@ -4,7 +4,7 @@ metadata: name: {{ .Values.backend.puris.existingSecret }} namespace: {{ .Release.Namespace }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} type: Opaque # use lookup function to check if secret exists {{- $secret := (lookup "v1" "Secret" .Release.Namespace .Values.backend.puris.existingSecret) }} diff --git a/charts/puris/templates/backend-service.yaml b/charts/puris/templates/backend-service.yaml index afe6b264..8462029e 100644 --- a/charts/puris/templates/backend-service.yaml +++ b/charts/puris/templates/backend-service.yaml @@ -22,9 +22,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "backend.fullname" . }} + name: {{ include "puris.backend.fullname" . }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} spec: type: {{ .Values.backend.service.type }} ports: @@ -33,4 +33,4 @@ spec: protocol: TCP name: http selector: - {{- include "backend.selectorLabels" . | nindent 4 }} + {{- include "puris.backend.selectorLabels" . | nindent 4 }} diff --git a/charts/puris/templates/backend-serviceaccount.yaml b/charts/puris/templates/backend-serviceaccount.yaml index 3125dd0b..b1429c24 100644 --- a/charts/puris/templates/backend-serviceaccount.yaml +++ b/charts/puris/templates/backend-serviceaccount.yaml @@ -23,9 +23,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "backend.serviceAccountName" . }} + name: {{ include "puris.backend.serviceAccountName" . }} labels: - {{- include "backend.labels" . | nindent 4 }} + {{- include "puris.backend.labels" . | nindent 4 }} {{- with .Values.backend.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/charts/puris/templates/frontend-deployment.yaml b/charts/puris/templates/frontend-deployment.yaml index 38c0d5de..13d2ca30 100644 --- a/charts/puris/templates/frontend-deployment.yaml +++ b/charts/puris/templates/frontend-deployment.yaml @@ -22,16 +22,16 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "frontend.fullname" . }} + name: {{ include "puris.frontend.fullname" . }} labels: - {{- include "frontend.labels" . | nindent 4 }} + {{- include "puris.frontend.labels" . | nindent 4 }} spec: {{- if not .Values.frontend.autoscaling.enabled }} replicas: {{ .Values.frontend.replicaCount }} {{- end }} selector: matchLabels: - {{- include "frontend.selectorLabels" . | nindent 6 }} + {{- include "puris.frontend.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.frontend.podAnnotations }} @@ -39,17 +39,17 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "frontend.selectorLabels" . | nindent 8 }} + {{- include "puris.frontend.selectorLabels" . | nindent 8 }} spec: {{- with .Values.frontend.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "frontend.serviceAccountName" . }} + serviceAccountName: {{ include "puris.frontend.serviceAccountName" . }} securityContext: {{- toYaml .Values.frontend.podSecurityContext | nindent 8 }} containers: - - name: {{ include "frontend.fullname" . }} + - name: {{ include "puris.frontend.fullname" . }} securityContext: {{- toYaml .Values.frontend.securityContext | nindent 12 }} image: "{{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag | default .Chart.AppVersion }}" diff --git a/charts/puris/templates/frontend-hpa.yaml b/charts/puris/templates/frontend-hpa.yaml index eecabe59..11f5bbf7 100644 --- a/charts/puris/templates/frontend-hpa.yaml +++ b/charts/puris/templates/frontend-hpa.yaml @@ -23,14 +23,14 @@ apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ include "frontend.fullname" . }} + name: {{ include "puris.frontend.fullname" . }} labels: - {{- include "frontend.labels" . | nindent 4 }} + {{- include "puris.frontend.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ include "frontend.fullname" . }} + name: {{ include "puris.frontend.fullname" . }} minReplicas: {{ .Values.frontend.autoscaling.minReplicas }} maxReplicas: {{ .Values.frontend.autoscaling.maxReplicas }} metrics: diff --git a/charts/puris/templates/frontend-ingress.yaml b/charts/puris/templates/frontend-ingress.yaml index 0e878817..d5e2ed62 100644 --- a/charts/puris/templates/frontend-ingress.yaml +++ b/charts/puris/templates/frontend-ingress.yaml @@ -20,7 +20,7 @@ */}} {{- if .Values.frontend.ingress.enabled -}} -{{- $fullName := include "frontend.fullname" . -}} +{{- $fullName := include "puris.frontend.fullname" . -}} {{- $svcPort := .Values.frontend.service.port -}} {{- if and .Values.frontend.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.frontend.ingress.annotations "kubernetes.io/ingress.class") }} @@ -38,7 +38,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "frontend.labels" . | nindent 4 }} + {{- include "puris.frontend.labels" . | nindent 4 }} {{- with .Values.frontend.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/charts/puris/templates/frontend-service.yaml b/charts/puris/templates/frontend-service.yaml index 86304839..e30804b9 100644 --- a/charts/puris/templates/frontend-service.yaml +++ b/charts/puris/templates/frontend-service.yaml @@ -22,9 +22,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "frontend.fullname" . }} + name: {{ include "puris.frontend.fullname" . }} labels: - {{- include "frontend.labels" . | nindent 4 }} + {{- include "puris.frontend.labels" . | nindent 4 }} spec: type: {{ .Values.frontend.service.type }} ports: @@ -33,4 +33,4 @@ spec: protocol: TCP name: http selector: - {{- include "frontend.selectorLabels" . | nindent 4 }} + {{- include "puris.frontend.selectorLabels" . | nindent 4 }} diff --git a/charts/puris/templates/frontend-serviceaccount.yaml b/charts/puris/templates/frontend-serviceaccount.yaml index 9ff8135f..0e6cffcf 100644 --- a/charts/puris/templates/frontend-serviceaccount.yaml +++ b/charts/puris/templates/frontend-serviceaccount.yaml @@ -23,9 +23,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "frontend.serviceAccountName" . }} + name: {{ include "puris.frontend.serviceAccountName" . }} labels: - {{- include "frontend.labels" . | nindent 4 }} + {{- include "puris.frontend.labels" . | nindent 4 }} {{- with .Values.frontend.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index 7b09ae91..394ace37 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -40,8 +40,6 @@ frontend: imagePullSecrets: [] # -- Possibility to override the name nameOverride: "" - # -- Possibility to override the fullname - fullnameOverride: "frontend" serviceAccount: # -- Specifies whether a service account should be created @@ -236,8 +234,6 @@ backend: imagePullSecrets: [] # -- Possibility to override the name nameOverride: "" - # -- Possibility to override the fullname - fullnameOverride: backend serviceAccount: # -- Specifies whether a service account should be created @@ -488,8 +484,8 @@ postgresql: # backend.puris.jpa.hibernate.ddl-auto accordingly (by default database is created using hibernate ddl from # backend). enabled: true - # -- Possibility to override the fullname - fullnameOverride: "backend-postgresql" + # -- Possibility to override the name + # nameOverride: "" service: ports: # -- Port of postgres database. From e94be0f85e2e15de5f80101e7c19ea6e954d6adf Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 08:01:01 -0700 Subject: [PATCH 03/24] fix(helm): update frontend image pullPolicy to IfNotPresent --- charts/puris/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index 394ace37..c992e554 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -32,7 +32,7 @@ frontend: # -- Repository of the docker image repository: tractusx/app-puris-frontend # -- THe policy for the image pull process - pullPolicy: Always + pullPolicy: IfNotPresent # -- Overrides the image tag whose default is the chart appVersion. tag: "" From 99fa49ce21817be5e36a75508a705ed28da79028 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 08:12:23 -0700 Subject: [PATCH 04/24] refactor(helm): don't use tls in ingresses by default --- charts/puris/README.md | 6 +++--- charts/puris/values.yaml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/charts/puris/README.md b/charts/puris/README.md index f2065981..648d37a1 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -63,7 +63,7 @@ dependencies: | backend.ingress.annotations."nginx.ingress.kubernetes.io/ssl-passthrough" | string | `"true"` | Pass SSL traffic to the backend ports | | backend.ingress.enabled | bool | `false` | Enable the Ingress | | backend.ingress.hosts | list | `[{"host":"your-backend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | -| backend.ingress.tls | list | `[{"hosts":["your-backend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | +| backend.ingress.tls | list | `[]` | TLS certificates for the Ingress controller | | backend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":120,"periodSeconds":25,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | | backend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | | backend.livenessProbe.initialDelaySeconds | int | `120` | Delay in seconds after which an initial liveness probe is checked | @@ -143,7 +143,7 @@ dependencies: | frontend.autoscaling.minReplicas | int | `1` | Number of minimum replica pods for autoscaling | | frontend.autoscaling.targetCPUUtilizationPercentage | int | `80` | Value of CPU usage in percentage for autoscaling decisions | | frontend.env | object | `{}` | Extra environment variables that will be passed onto the frontend deployment pods | -| frontend.image.pullPolicy | string | `"Always"` | THe policy for the image pull process | +| frontend.image.pullPolicy | string | `"IfNotPresent"` | THe policy for the image pull process | | frontend.image.repository | string | `"tractusx/app-puris-frontend"` | Repository of the docker image | | frontend.image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. | | frontend.imagePullSecrets | list | `[]` | List of used secrets | @@ -151,7 +151,7 @@ dependencies: | frontend.ingress.className | string | `"nginx"` | Class name for the Ingress controller | | frontend.ingress.enabled | bool | `false` | Enable the Ingress | | frontend.ingress.hosts | list | `[{"host":"your-frontend-host-address.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}]` | Hosts for the Ingress controller | -| frontend.ingress.tls | list | `[{"hosts":["your-frontend-host-address.com"],"secretName":"tls-secret"}]` | TLS certificates for the Ingress controller | +| frontend.ingress.tls | list | `[]` | TLS certificates for the Ingress controller | | frontend.livenessProbe | object | `{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Checks whether a pod is alive or not | | frontend.livenessProbe.failureThreshold | int | `3` | Number of failures (threshold) for a liveness probe | | frontend.livenessProbe.initialDelaySeconds | int | `10` | Delay in seconds after which an initial liveness probe is checked | diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index c992e554..1acb1de7 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -87,10 +87,10 @@ frontend: - path: / pathType: ImplementationSpecific # -- TLS certificates for the Ingress controller - tls: - - secretName: tls-secret - hosts: - - your-frontend-host-address.com + tls: [] + # - secretName: tls-secret + # hosts: + # - your-frontend-host-address.com resources: # -- Maximum resource limits of CPU und memory @@ -301,10 +301,10 @@ backend: - path: / pathType: ImplementationSpecific # -- TLS certificates for the Ingress controller - tls: - - secretName: tls-secret - hosts: - - *domain + tls: [] + # - secretName: tls-secret + # hosts: + # - *domain # -- Constrains for the node selector nodeSelector: {} From 3926d5286914b34d8cae0626ed2f245d87cec560 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 08:15:56 -0700 Subject: [PATCH 05/24] docs(docker_notice): add link to docker hub (TRG 4.06) --- backend/DOCKER_NOTICE.md | 4 ++++ frontend/DOCKER_NOTICE.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/backend/DOCKER_NOTICE.md b/backend/DOCKER_NOTICE.md index e55164b2..65ad76cc 100644 --- a/backend/DOCKER_NOTICE.md +++ b/backend/DOCKER_NOTICE.md @@ -1,3 +1,7 @@ +# Notice for Docker Image + +DockerHub: https://hub.docker.com/r/tractusx/app-puris-backend/ + This application provides container images for demonstration purposes. Eclipse Tractus-X product(s) installed within the image: diff --git a/frontend/DOCKER_NOTICE.md b/frontend/DOCKER_NOTICE.md index 76b775b4..696e89a2 100644 --- a/frontend/DOCKER_NOTICE.md +++ b/frontend/DOCKER_NOTICE.md @@ -1,3 +1,7 @@ +# Notice for Docker Image + +DockerHub: https://hub.docker.com/r/tractusx/app-puris-frontend/ + This application provides container images for demonstration purposes. Eclipse Tractus-X product(s) installed within the image: From f74e4f4f6f726b89b60490c7e147bc705aa7bc40 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 09:21:04 -0700 Subject: [PATCH 06/24] ci(dockerbuild): include legal files from root dir in frontend and backend (TRG 7.05) --- .github/workflows/build-image-backend.yml | 8 + .github/workflows/build-image-frontend.yml | 8 + backend/DEPENDENCIES | 123 ------- backend/Dockerfile | 12 +- backend/LICENSE | 203 ------------ backend/SECURITY.md | 17 - backend/pom.xml | 4 +- docs/DEVELOPMENT.md | 9 +- frontend/DEPENDENCIES | 366 --------------------- frontend/Dockerfile | 8 +- frontend/LICENSE | 203 ------------ frontend/NOTICE.md | 53 --- frontend/SECURITY.md | 17 - 13 files changed, 32 insertions(+), 999 deletions(-) delete mode 100644 backend/DEPENDENCIES delete mode 100644 backend/LICENSE delete mode 100644 backend/SECURITY.md delete mode 100644 frontend/DEPENDENCIES delete mode 100644 frontend/LICENSE delete mode 100644 frontend/NOTICE.md delete mode 100644 frontend/SECURITY.md diff --git a/.github/workflows/build-image-backend.yml b/.github/workflows/build-image-backend.yml index bd40f1d6..44b6e98f 100644 --- a/.github/workflows/build-image-backend.yml +++ b/.github/workflows/build-image-backend.yml @@ -51,6 +51,14 @@ jobs: - name: Checkout uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + # Copy legal information from root dir to backend dir for publishing + - name: Copy and paste legal information + run: | + cp ./DEPENDENCIES_BACKEND ./backend/DEPENDENCIES + cp ./LICENSE ./backend/LICENSE + cp ./NOTICE.md ./backend/NOTICE.md + cp ./SECURITY.md ./backend/SECURITY.md + # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index fc8f6b85..48d711cd 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -51,6 +51,14 @@ jobs: - name: Checkout uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + # Copy legal information from root dir to frontend dir for publishing + - name: Copy and paste legal information + run: | + cp ./DEPENDENCIES_FRONTEND ./frontend/DEPENDENCIES + cp ./LICENSE ./frontend/LICENSE + cp ./NOTICE.md ./frontend/NOTICE.md + cp ./SECURITY.md ./frontend/SECURITY.md + # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta diff --git a/backend/DEPENDENCIES b/backend/DEPENDENCIES deleted file mode 100644 index 97753ba3..00000000 --- a/backend/DEPENDENCIES +++ /dev/null @@ -1,123 +0,0 @@ -maven/mavencentral/ch.qos.logback/logback-classic/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3435 -maven/mavencentral/ch.qos.logback/logback-core/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3373 -maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.4, Apache-2.0, approved, #7947 -maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.4, MIT AND Apache-2.0, approved, #7932 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.4, Apache-2.0, approved, #7934 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.4, Apache-2.0, approved, #8802 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.15.4, Apache-2.0, approved, #8808 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.4, Apache-2.0, approved, #7930 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.15.4, Apache-2.0, approved, #8803 -maven/mavencentral/com.fasterxml/classmate/1.6.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.jayway.jsonpath/json-path/2.9.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.squareup.okhttp3/mockwebserver/4.12.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 -maven/mavencentral/com.squareup.okio/okio-jvm/3.6.0, Apache-2.0, approved, #11158 -maven/mavencentral/com.squareup.okio/okio/3.6.0, Apache-2.0, approved, #11155 -maven/mavencentral/com.sun.istack/istack-commons-runtime/4.1.2, BSD-3-Clause, approved, #2590 -maven/mavencentral/com.vaadin.external.google/android-json/0.0.20131108.vaadin1, Apache-2.0, approved, CQ21310 -maven/mavencentral/com.zaxxer/HikariCP/5.0.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.micrometer/micrometer-commons/1.12.5, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 -maven/mavencentral/io.micrometer/micrometer-observation/1.12.5, Apache-2.0, approved, #11680 -maven/mavencentral/io.smallrye/jandex/3.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.21, Apache-2.0, approved, #5947 -maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.21, Apache-2.0, approved, #5929 -maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.21, Apache-2.0, approved, #5919 -maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.3, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf -maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca -maven/mavencentral/jakarta.inject/jakarta.inject-api/2.0.1, Apache-2.0, approved, ee4j.cdi -maven/mavencentral/jakarta.persistence/jakarta.persistence-api/3.1.0, EPL-2.0 OR BSD-3-Clause, approved, ee4j.jpa -maven/mavencentral/jakarta.transaction/jakarta.transaction-api/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jta -maven/mavencentral/jakarta.validation/jakarta.validation-api/3.0.2, Apache-2.0, approved, ee4j.validation -maven/mavencentral/jakarta.xml.bind/jakarta.xml.bind-api/4.0.2, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 -maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.13, Apache-2.0, approved, #7164 -maven/mavencentral/net.bytebuddy/byte-buddy/1.14.13, Apache-2.0 AND BSD-3-Clause, approved, #7163 -maven/mavencentral/net.minidev/accessors-smart/2.5.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/net.minidev/json-smart/2.5.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.antlr/antlr4-runtime/4.13.0, BSD-3-Clause, approved, #10767 -maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved, #9820 -maven/mavencentral/org.apache.logging.log4j/log4j-api/2.21.1, Apache-2.0 AND (Apache-2.0 AND LGPL-2.0-or-later), approved, #11079 -maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.21.1, Apache-2.0, approved, #11919 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.20, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.20, Apache-2.0, approved, #6997 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.20, Apache-2.0, approved, #7920 -maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.aspectj/aspectjweaver/1.9.22, Apache-2.0 AND BSD-3-Clause AND EPL-1.0 AND BSD-3-Clause AND Apache-1.1, approved, #7695 -maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 -maven/mavencentral/org.awaitility/awaitility/4.2.1, Apache-2.0, approved, #14178 -maven/mavencentral/org.checkerframework/checker-qual/3.42.0, MIT, approved, clearlydefined -maven/mavencentral/org.eclipse.angus/angus-activation/2.0.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.angus -maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl -maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl -maven/mavencentral/org.glassfish.jaxb/txw2/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl -maven/mavencentral/org.hamcrest/hamcrest-core/2.2, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hibernate.common/hibernate-commons-annotations/6.0.6.Final, LGPL-2.1-only, approved, #6962 -maven/mavencentral/org.hibernate.orm/hibernate-core/6.4.4.Final, LGPL-2.1-or-later AND (EPL-2.0 OR BSD-3-Clause) AND MIT, approved, #12490 -maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.hsqldb/hsqldb/2.7.2, BSD-3-Clause, approved, #12699 -maven/mavencentral/org.jboss.logging/jboss-logging/3.5.3.Final, Apache-2.0, approved, #9471 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.23, Apache-2.0, approved, #14186 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.9.23, Apache-2.0, approved, #14188 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.9.23, Apache-2.0, approved, #14185 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.23, Apache-2.0, approved, #11827 -maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 -maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, approved, #9711 -maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #9708 -maven/mavencentral/org.junit.jupiter/junit-jupiter/5.10.2, EPL-2.0, approved, #13393 -maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 -maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.2, EPL-2.0, approved, #9709 -maven/mavencentral/org.mockito/mockito-core/5.7.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #11424 -maven/mavencentral/org.mockito/mockito-junit-jupiter/5.7.0, MIT, approved, #11423 -maven/mavencentral/org.modelmapper/modelmapper/3.2.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 -maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 -maven/mavencentral/org.postgresql/postgresql/42.7.2, BSD-2-Clause AND Apache-2.0, approved, #11681 -maven/mavencentral/org.projectlombok/lombok/1.18.32, MIT AND LicenseRef-Public-Domain, approved, CQ23907 -maven/mavencentral/org.skyscreamer/jsonassert/1.5.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.slf4j/jul-to-slf4j/2.0.13, MIT, approved, #7698 -maven/mavencentral/org.slf4j/slf4j-api/2.0.13, MIT, approved, #5915 -maven/mavencentral/org.springdoc/springdoc-openapi-starter-common/2.5.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-api/2.5.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-ui/2.5.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.2.5, Apache-2.0, approved, #11751 -maven/mavencentral/org.springframework.boot/spring-boot-configuration-processor/3.2.5, Apache-2.0, approved, #12915 -maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.2.5, Apache-2.0, approved, #11928 -maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.2.5, Apache-2.0, approved, #11926 -maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.2.5, Apache-2.0, approved, #11878 -maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.2.5, Apache-2.0, approved, #11894 -maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.2.5, Apache-2.0, approved, #11890 -maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.2.5, Apache-2.0, approved, #12069 -maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.2.5, Apache-2.0, approved, #12917 -maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.2.5, Apache-2.0, approved, #11923 -maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.2.5, Apache-2.0, approved, #11916 -maven/mavencentral/org.springframework.boot/spring-boot-starter/3.2.5, Apache-2.0, approved, #11935 -maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.2.5, Apache-2.0, approved, #12920 -maven/mavencentral/org.springframework.boot/spring-boot-test/3.2.5, Apache-2.0, approved, #12916 -maven/mavencentral/org.springframework.boot/spring-boot/3.2.5, Apache-2.0, approved, #11752 -maven/mavencentral/org.springframework.data/spring-data-commons/3.2.5, Apache-2.0, approved, #11917 -maven/mavencentral/org.springframework.data/spring-data-jpa/3.2.5, Apache-2.0, approved, #11882 -maven/mavencentral/org.springframework.security/spring-security-config/6.2.4, Apache-2.0, approved, #11896 -maven/mavencentral/org.springframework.security/spring-security-core/6.2.4, Apache-2.0, approved, #11904 -maven/mavencentral/org.springframework.security/spring-security-crypto/6.2.4, Apache-2.0 AND ISC, approved, #11908 -maven/mavencentral/org.springframework.security/spring-security-test/6.2.4, Apache-2.0, approved, #12922 -maven/mavencentral/org.springframework.security/spring-security-web/6.2.4, Apache-2.0, approved, #11911 -maven/mavencentral/org.springframework.session/spring-session-core/3.2.2, Apache-2.0, approved, #12588 -maven/mavencentral/org.springframework/spring-aop/6.1.6, Apache-2.0, approved, #11755 -maven/mavencentral/org.springframework/spring-aspects/6.1.6, Apache-2.0, approved, #11905 -maven/mavencentral/org.springframework/spring-beans/6.1.6, Apache-2.0, approved, #11754 -maven/mavencentral/org.springframework/spring-context/6.1.6, Apache-2.0, approved, #11753 -maven/mavencentral/org.springframework/spring-core/6.1.6, Apache-2.0 AND BSD-3-Clause, approved, #11750 -maven/mavencentral/org.springframework/spring-expression/6.1.6, Apache-2.0, approved, #11747 -maven/mavencentral/org.springframework/spring-jcl/6.1.6, Apache-2.0, approved, #11749 -maven/mavencentral/org.springframework/spring-jdbc/6.1.6, Apache-2.0, approved, #11897 -maven/mavencentral/org.springframework/spring-orm/6.1.6, Apache-2.0, approved, #11924 -maven/mavencentral/org.springframework/spring-test/6.1.6, Apache-2.0, approved, #12919 -maven/mavencentral/org.springframework/spring-tx/6.1.6, Apache-2.0, approved, #11901 -maven/mavencentral/org.springframework/spring-web/6.1.6, Apache-2.0, approved, #11748 -maven/mavencentral/org.springframework/spring-webmvc/6.1.6, Apache-2.0, approved, #11879 -maven/mavencentral/org.webjars/swagger-ui/5.13.0, Apache-2.0, approved, #14547 -maven/mavencentral/org.xmlunit/xmlunit-core/2.9.1, Apache-2.0, approved, #6272 -maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 diff --git a/backend/Dockerfile b/backend/Dockerfile index e573de81..d8149a99 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -19,7 +19,7 @@ # SPDX-License-Identifier: Apache-2.0 # FROM maven:3.9.6-eclipse-temurin-21 as build -RUN mkdir /app +RUN mkdir -p /app/legal WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline @@ -27,12 +27,18 @@ RUN mvn dependency:go-offline COPY src/ /app/src/ RUN mvn clean package -DskipTests +# Copy Legal information for distributions, the star ones are copied by workflow +COPY DOCKER_NOTICE.md README.md NOTICE.md* SECURITY.md* LICENSE* DEPENDENCIES* /app/legal/ + FROM eclipse-temurin:21-jre-alpine RUN mkdir /opt/app +WORKDIR /opt/app COPY --from=build /app/target/*.jar /opt/app/puris-backend.jar +# Copy legal information for distributions +COPY --from=build /app/legal/* /opt/app/ -RUN adduser -u 8877 --disabled-password --gecos "" --no-create-home nonroot && chmod 755 /opt/app/puris-backend.jar +RUN adduser -u 8877 --disabled-password --gecos "" --no-create-home nonroot && chmod 755 ./puris-backend.jar USER nonroot -ENTRYPOINT ["sh", "-c", " java ${JAVA_OPTS} -jar /opt/app/puris-backend.jar ${0} ${@}"] +ENTRYPOINT ["sh", "-c", " java ${JAVA_OPTS} -jar ./puris-backend.jar ${0} ${@}"] diff --git a/backend/LICENSE b/backend/LICENSE deleted file mode 100644 index 697ecc5f..00000000 --- a/backend/LICENSE +++ /dev/null @@ -1,203 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2022,2023 Volkswagen AG - Copyright (c) 2022,2023 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) - Copyright (c) 2022,2023 Contributors to the Eclipse Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/backend/SECURITY.md b/backend/SECURITY.md deleted file mode 100644 index d7319028..00000000 --- a/backend/SECURITY.md +++ /dev/null @@ -1,17 +0,0 @@ -# Security Policy -## Reporting a Vulnerability -Please do **not** report security vulnerabilities through public GitHub issues. - -Please report vulnerabilities to this repository via **GitHub security advisories** instead. - -How? Inside affected repository --> security tab - -for contributor: ---> Report a vulnerability - -for committer: ---> advisories --> New draft security advisory - -In severe cases, you can also report a found vulnerability via mail or eclipse issue here: https://www.eclipse.org/security/ - -See [Eclipse Foundation Vulnerability Reporting Policy](https://www.eclipse.org/projects/handbook/#vulnerability) diff --git a/backend/pom.xml b/backend/pom.xml index 1b026611..1c23ab12 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -136,11 +136,11 @@ org.eclipse.dash license-tool-plugin - 1.0.2 + 1.1.0 automotive.tractusx - DEPENDENCIES + ../DEPENDENCIES_BACKEND test diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 183f5782..ee79115c 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -23,14 +23,11 @@ ll Navigate to the `./backend` folder and run: ``` -mvn org.eclipse.dash:license-tool-plugin:license-check -cp DEPENDENCIES ../DEPENDENCIES_BACKEND +mvn org.eclipse.dash:license-tool-plugin:license-check ``` -The first line runs the maven license tool with the parameters specified in the -`./backend/pom.xml` and produces a DEPENDENCIES file in the .`/backend` folder. -Then this file gets copied to the PURIS-project root folder under the name `DEPENDENCIES_BACKEND`. -Both files should be updated prior to any pull request. +This line runs the maven license tool with the parameters specified in the +`./backend/pom.xml` and produces a `DEPENDENCIES_BACKEND` file in the root folder of this project. ### Frontend diff --git a/frontend/DEPENDENCIES b/frontend/DEPENDENCIES deleted file mode 100644 index 2969757a..00000000 --- a/frontend/DEPENDENCIES +++ /dev/null @@ -1,366 +0,0 @@ -npm/npmjs/-/acorn-jsx/5.3.2, MIT, approved, clearlydefined -npm/npmjs/-/acorn/8.11.3, MIT, approved, clearlydefined -npm/npmjs/-/ajv/6.12.6, MIT, approved, #979 -npm/npmjs/-/ansi-regex/5.0.1, MIT, approved, clearlydefined -npm/npmjs/-/ansi-regex/6.0.1, MIT, approved, clearlydefined -npm/npmjs/-/ansi-styles/3.2.1, MIT, approved, clearlydefined -npm/npmjs/-/ansi-styles/4.3.0, MIT, approved, clearlydefined -npm/npmjs/-/ansi-styles/6.2.1, MIT, approved, clearlydefined -npm/npmjs/-/any-promise/1.3.0, MIT, approved, clearlydefined -npm/npmjs/-/anymatch/3.1.3, ISC, approved, #5050 -npm/npmjs/-/arg/5.0.2, MIT, approved, clearlydefined -npm/npmjs/-/argparse/2.0.1, Python-2.0, approved, CQ22954 -npm/npmjs/-/array-union/2.1.0, MIT, approved, clearlydefined -npm/npmjs/-/autoprefixer/10.4.16, MIT, approved, #7494 -npm/npmjs/-/autosuggest-highlight/3.3.4, MIT, approved, clearlydefined -npm/npmjs/-/babel-plugin-macros/3.1.0, MIT, approved, clearlydefined -npm/npmjs/-/balanced-match/1.0.2, MIT, approved, clearlydefined -npm/npmjs/-/base64-js/1.5.1, MIT, approved, clearlydefined -npm/npmjs/-/binary-extensions/2.2.0, MIT, approved, clearlydefined -npm/npmjs/-/brace-expansion/1.1.11, MIT, approved, clearlydefined -npm/npmjs/-/brace-expansion/2.0.1, MIT, approved, clearlydefined -npm/npmjs/-/braces/3.0.2, MIT, approved, #14866 -npm/npmjs/-/browserslist/4.22.2, MIT, approved, #10780 -npm/npmjs/-/buffer/6.0.3, MIT, approved, clearlydefined -npm/npmjs/-/callsites/3.1.0, MIT, approved, clearlydefined -npm/npmjs/-/camelcase-css/2.0.1, MIT, approved, clearlydefined -npm/npmjs/-/caniuse-lite/1.0.30001577, CC-BY-4.0, approved, #1196 -npm/npmjs/-/chalk/2.4.2, MIT, approved, clearlydefined -npm/npmjs/-/chalk/4.1.2, MIT, approved, clearlydefined -npm/npmjs/-/chokidar/3.5.3, MIT, approved, #2317 -npm/npmjs/-/classnames/2.5.1, MIT, approved, clearlydefined -npm/npmjs/-/clsx/2.1.0, MIT, approved, clearlydefined -npm/npmjs/-/color-convert/1.9.3, MIT, approved, clearlydefined -npm/npmjs/-/color-convert/2.0.1, MIT, approved, clearlydefined -npm/npmjs/-/color-name/1.1.3, MIT, approved, clearlydefined -npm/npmjs/-/color-name/1.1.4, MIT, approved, clearlydefined -npm/npmjs/-/commander/4.1.1, MIT, approved, clearlydefined -npm/npmjs/-/concat-map/0.0.1, MIT, approved, clearlydefined -npm/npmjs/-/convert-source-map/1.9.0, MIT, approved, clearlydefined -npm/npmjs/-/convert-source-map/2.0.0, MIT, approved, clearlydefined -npm/npmjs/-/cosmiconfig/7.1.0, MIT, approved, #4975 -npm/npmjs/-/cross-spawn/7.0.3, MIT, approved, clearlydefined -npm/npmjs/-/cssesc/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/csstype/3.1.3, MIT, approved, #11847 -npm/npmjs/-/date-fns/2.30.0, MIT, approved, clearlydefined -npm/npmjs/-/debug/4.3.4, MIT, approved, clearlydefined -npm/npmjs/-/deep-is/0.1.4, MIT, approved, #2130 -npm/npmjs/-/deepmerge/4.3.1, MIT, approved, #7032 -npm/npmjs/-/didyoumean/1.2.2, Apache-2.0, approved, clearlydefined -npm/npmjs/-/dir-glob/3.0.1, MIT, approved, clearlydefined -npm/npmjs/-/dlv/1.1.3, MIT, approved, clearlydefined -npm/npmjs/-/doctrine/3.0.0, Apache-2.0 AND BSD-2-Clause, approved, CQ22628 -npm/npmjs/-/dom-helpers/5.2.1, MIT, approved, clearlydefined -npm/npmjs/-/eastasianwidth/0.2.0, MIT, approved, clearlydefined -npm/npmjs/-/electron-to-chromium/1.4.632, ISC, approved, #1950 -npm/npmjs/-/emoji-regex/8.0.0, MIT, approved, clearlydefined -npm/npmjs/-/emoji-regex/9.2.2, MIT, approved, clearlydefined -npm/npmjs/-/enquire.js/2.1.6, MIT, approved, clearlydefined -npm/npmjs/-/error-ex/1.3.2, MIT, approved, clearlydefined -npm/npmjs/-/esbuild/0.19.11, Apache-2.0 AND MIT AND BSD-3-Clause AND (BSD-2-Clause AND BSD-3-Clause), approved, #12979 -npm/npmjs/-/escalade/3.1.1, MIT, approved, clearlydefined -npm/npmjs/-/escape-string-regexp/1.0.5, MIT, approved, clearlydefined -npm/npmjs/-/escape-string-regexp/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/eslint-plugin-react-hooks/4.6.0, MIT, approved, clearlydefined -npm/npmjs/-/eslint-plugin-react-refresh/0.4.5, MIT, approved, clearlydefined -npm/npmjs/-/eslint-scope/7.2.2, BSD-2-Clause, approved, #9916 -npm/npmjs/-/eslint-visitor-keys/3.4.3, Apache-2.0, approved, #7729 -npm/npmjs/-/eslint/8.56.0, MIT AND ISC AND OFL-1.1 AND CC-BY-SA-2.0-UK, approved, #12110 -npm/npmjs/-/espree/9.6.1, BSD-2-Clause AND BSD-3-Clause AND MIT AND BSD-2-Clause, approved, #9308 -npm/npmjs/-/esquery/1.5.0, BSD-3-Clause, approved, #7469 -npm/npmjs/-/esrecurse/4.3.0, BSD-2-Clause, approved, clearlydefined -npm/npmjs/-/estraverse/5.3.0, BSD-2-Clause AND MIT, approved, #1557 -npm/npmjs/-/esutils/2.0.3, BSD-2-Clause AND BSD-3-Clause, approved, #120 -npm/npmjs/-/fast-deep-equal/3.1.3, MIT, approved, clearlydefined -npm/npmjs/-/fast-glob/3.3.2, MIT, approved, #9307 -npm/npmjs/-/fast-json-stable-stringify/2.1.0, MIT, approved, clearlydefined -npm/npmjs/-/fast-levenshtein/2.0.6, MIT, approved, #2428 -npm/npmjs/-/fastq/1.16.0, ISC, approved, #12184 -npm/npmjs/-/file-entry-cache/6.0.1, MIT, approved, clearlydefined -npm/npmjs/-/fill-range/7.0.1, MIT, approved, clearlydefined -npm/npmjs/-/find-root/1.1.0, MIT, approved, clearlydefined -npm/npmjs/-/find-up/5.0.0, MIT, approved, clearlydefined -npm/npmjs/-/flat-cache/3.2.0, MIT, approved, clearlydefined -npm/npmjs/-/flatted/3.2.9, ISC AND (ISC AND MIT), approved, #2430 -npm/npmjs/-/foreground-child/3.1.1, ISC, approved, #8232 -npm/npmjs/-/fraction.js/4.3.7, MIT, approved, clearlydefined -npm/npmjs/-/fs.realpath/1.0.0, ISC, approved, clearlydefined -npm/npmjs/-/function-bind/1.1.2, MIT, approved, #11063 -npm/npmjs/-/gensync/1.0.0-beta.2, MIT, approved, clearlydefined -npm/npmjs/-/glob-parent/5.1.2, ISC, approved, clearlydefined -npm/npmjs/-/glob-parent/6.0.2, ISC, approved, clearlydefined -npm/npmjs/-/glob/10.3.10, ISC AND CC-BY-SA-4.0, approved, #9376 -npm/npmjs/-/glob/7.2.3, ISC, approved, clearlydefined -npm/npmjs/-/globals/11.12.0, MIT, approved, clearlydefined -npm/npmjs/-/globals/13.24.0, MIT, approved, #11962 -npm/npmjs/-/globby/11.1.0, MIT, approved, clearlydefined -npm/npmjs/-/graphemer/1.4.0, MIT, approved, clearlydefined -npm/npmjs/-/has-flag/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/has-flag/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/hasown/2.0.0, MIT, approved, #11097 -npm/npmjs/-/hoist-non-react-statics/3.3.2, BSD-3-Clause, approved, clearlydefined -npm/npmjs/-/html-parse-stringify/3.0.1, MIT, approved, clearlydefined -npm/npmjs/-/i18next/20.3.1, MIT, approved, clearlydefined -npm/npmjs/-/i18next/23.7.16, MIT, approved, clearlydefined -npm/npmjs/-/ieee754/1.2.1, BSD-3-Clause, approved, clearlydefined -npm/npmjs/-/ignore/5.3.0, MIT, approved, #11665 -npm/npmjs/-/import-fresh/3.3.0, MIT, approved, clearlydefined -npm/npmjs/-/imurmurhash/0.1.4, MIT, approved, clearlydefined -npm/npmjs/-/inflight/1.0.6, ISC, approved, clearlydefined -npm/npmjs/-/inherits/2.0.4, ISC, approved, clearlydefined -npm/npmjs/-/is-arrayish/0.2.1, MIT, approved, clearlydefined -npm/npmjs/-/is-binary-path/2.1.0, MIT, approved, clearlydefined -npm/npmjs/-/is-core-module/2.13.1, MIT, approved, #9885 -npm/npmjs/-/is-extglob/2.1.1, MIT, approved, clearlydefined -npm/npmjs/-/is-fullwidth-code-point/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/is-glob/4.0.3, MIT, approved, clearlydefined -npm/npmjs/-/is-number/7.0.0, MIT, approved, clearlydefined -npm/npmjs/-/is-path-inside/3.0.3, MIT, approved, clearlydefined -npm/npmjs/-/isexe/2.0.0, ISC, approved, clearlydefined -npm/npmjs/-/jackspeak/2.3.6, BlueOak-1.0.0, approved, #10783 -npm/npmjs/-/jiti/1.21.0, MIT, approved, clearlydefined -npm/npmjs/-/jquery/3.7.1, MIT, approved, clearlydefined -npm/npmjs/-/js-sha256/0.10.1, MIT, approved, clearlydefined -npm/npmjs/-/js-tokens/4.0.0, MIT, approved, #2401 -npm/npmjs/-/js-yaml/4.1.0, MIT, approved, clearlydefined -npm/npmjs/-/jsesc/2.5.2, MIT, approved, clearlydefined -npm/npmjs/-/json-buffer/3.0.1, MIT, approved, clearlydefined -npm/npmjs/-/json-parse-even-better-errors/2.3.1, MIT, approved, clearlydefined -npm/npmjs/-/json-schema-traverse/0.4.1, MIT, approved, clearlydefined -npm/npmjs/-/json-stable-stringify-without-jsonify/1.0.1, MIT, approved, clearlydefined -npm/npmjs/-/json2mq/0.2.0, MIT, approved, clearlydefined -npm/npmjs/-/json5/2.2.3, MIT, approved, #2126 -npm/npmjs/-/jwt-decode/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/keycloak-js/23.0.5, Apache-2.0 AND MIT AND EPL-1.0 AND LicenseRef-scancode-oasis-ws-security-spec AND W3C AND LicenseRef-scancode-ws-policy-specification AND W3C AND W3C-19980720 AND (AFL-2.1 OR LGPL-2.0-only) AND (Apache-2.0 AND MIT) AND (Apache-2.0 AND MIT), approved, #11737 -npm/npmjs/-/keyv/4.5.4, MIT, approved, #4674 -npm/npmjs/-/levn/0.4.1, MIT, approved, clearlydefined -npm/npmjs/-/lilconfig/2.1.0, MIT, approved, #7313 -npm/npmjs/-/lilconfig/3.0.0, MIT, approved, #11668 -npm/npmjs/-/lines-and-columns/1.2.4, MIT, approved, clearlydefined -npm/npmjs/-/load-script/1.0.0, MIT, approved, clearlydefined -npm/npmjs/-/locate-path/6.0.0, MIT, approved, clearlydefined -npm/npmjs/-/lodash.debounce/4.0.8, MIT, approved, clearlydefined -npm/npmjs/-/lodash.merge/4.6.2, MIT, approved, clearlydefined -npm/npmjs/-/loose-envify/1.4.0, MIT, approved, clearlydefined -npm/npmjs/-/lru-cache/10.1.0, ISC, approved, clearlydefined -npm/npmjs/-/lru-cache/5.1.1, ISC, approved, clearlydefined -npm/npmjs/-/lru-cache/6.0.0, ISC, approved, clearlydefined -npm/npmjs/-/memoize-one/5.2.1, MIT, approved, clearlydefined -npm/npmjs/-/merge2/1.4.1, MIT, approved, clearlydefined -npm/npmjs/-/micromatch/4.0.5, MIT, approved, clearlydefined -npm/npmjs/-/minimatch/3.1.2, ISC, approved, clearlydefined -npm/npmjs/-/minimatch/9.0.3, ISC, approved, #9190 -npm/npmjs/-/minipass/7.0.4, ISC, approved, #9372 -npm/npmjs/-/ms/2.1.2, MIT, approved, #5895 -npm/npmjs/-/mz/2.7.0, MIT, approved, clearlydefined -npm/npmjs/-/nanoid/3.3.7, MIT, approved, #7571 -npm/npmjs/-/natural-compare/1.4.0, MIT, approved, clearlydefined -npm/npmjs/-/node-releases/2.0.14, MIT, approved, #1954 -npm/npmjs/-/normalize-path/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/normalize-range/0.1.2, MIT, approved, clearlydefined -npm/npmjs/-/object-assign/4.1.1, MIT, approved, clearlydefined -npm/npmjs/-/object-hash/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/once/1.4.0, ISC, approved, clearlydefined -npm/npmjs/-/optionator/0.9.3, MIT, approved, #9208 -npm/npmjs/-/p-limit/3.1.0, MIT, approved, clearlydefined -npm/npmjs/-/p-locate/5.0.0, MIT, approved, clearlydefined -npm/npmjs/-/parent-module/1.0.1, MIT, approved, clearlydefined -npm/npmjs/-/parse-json/5.2.0, MIT, approved, clearlydefined -npm/npmjs/-/path-exists/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/path-is-absolute/1.0.1, MIT, approved, clearlydefined -npm/npmjs/-/path-key/3.1.1, MIT, approved, clearlydefined -npm/npmjs/-/path-parse/1.0.7, MIT, approved, clearlydefined -npm/npmjs/-/path-scurry/1.10.1, BlueOak-1.0.0, approved, #9370 -npm/npmjs/-/path-type/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/picocolors/1.0.0, ISC, approved, #14718 -npm/npmjs/-/picomatch/2.3.1, MIT, approved, clearlydefined -npm/npmjs/-/pify/2.3.0, MIT, approved, clearlydefined -npm/npmjs/-/pirates/4.0.6, MIT, approved, #680 -npm/npmjs/-/postcss-import/15.1.0, MIT, approved, clearlydefined -npm/npmjs/-/postcss-js/4.0.1, MIT, approved, clearlydefined -npm/npmjs/-/postcss-load-config/4.0.2, MIT, approved, #11674 -npm/npmjs/-/postcss-nested/6.0.1, MIT, approved, clearlydefined -npm/npmjs/-/postcss-selector-parser/6.0.15, MIT, approved, #5056 -npm/npmjs/-/postcss-value-parser/4.2.0, MIT, approved, clearlydefined -npm/npmjs/-/postcss/8.4.33, MIT, approved, #3545 -npm/npmjs/-/prelude-ls/1.2.1, MIT, approved, clearlydefined -npm/npmjs/-/prop-types/15.8.1, MIT, approved, clearlydefined -npm/npmjs/-/punycode/2.3.1, MIT, approved, #6373 -npm/npmjs/-/queue-microtask/1.2.3, MIT, approved, clearlydefined -npm/npmjs/-/react-dom/18.2.0, MIT, approved, clearlydefined -npm/npmjs/-/react-fast-compare/3.2.2, MIT, approved, clearlydefined -npm/npmjs/-/react-i18next/13.5.0, MIT AND Apache-2.0, approved, #11697 -npm/npmjs/-/react-is/16.13.1, MIT, approved, clearlydefined -npm/npmjs/-/react-is/18.2.0, MIT, approved, clearlydefined -npm/npmjs/-/react-player/2.14.1, MIT, approved, clearlydefined -npm/npmjs/-/react-refresh/0.14.0, MIT, approved, clearlydefined -npm/npmjs/-/react-router-dom/6.21.2, MIT, approved, #12764 -npm/npmjs/-/react-router/6.21.2, MIT, approved, clearlydefined -npm/npmjs/-/react-slick/0.29.0, MIT, approved, clearlydefined -npm/npmjs/-/react-transition-group/4.4.5, BSD-3-Clause, approved, CQ22955 -npm/npmjs/-/react/18.2.0, MIT, approved, clearlydefined -npm/npmjs/-/read-cache/1.0.0, MIT, approved, clearlydefined -npm/npmjs/-/readdirp/3.6.0, MIT, approved, #2977 -npm/npmjs/-/regenerator-runtime/0.14.1, MIT, approved, #9897 -npm/npmjs/-/remove-accents/0.4.4, MIT, approved, clearlydefined -npm/npmjs/-/reselect/4.1.8, MIT, approved, clearlydefined -npm/npmjs/-/resize-observer-polyfill/1.5.1, MIT, approved, clearlydefined -npm/npmjs/-/resolve-from/4.0.0, MIT, approved, clearlydefined -npm/npmjs/-/resolve/1.22.8, MIT AND ISC, approved, #2409 -npm/npmjs/-/reusify/1.0.4, MIT, approved, clearlydefined -npm/npmjs/-/rimraf/3.0.2, ISC, approved, clearlydefined -npm/npmjs/-/rollup/4.9.5, MIT, approved, clearlydefined -npm/npmjs/-/run-parallel/1.2.0, MIT, approved, clearlydefined -npm/npmjs/-/scheduler/0.23.0, MIT, approved, #14589 -npm/npmjs/-/semver/6.3.1, ISC, approved, clearlydefined -npm/npmjs/-/semver/7.5.4, ISC, approved, clearlydefined -npm/npmjs/-/shebang-command/2.0.0, MIT, approved, clearlydefined -npm/npmjs/-/shebang-regex/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/signal-exit/4.1.0, ISC, approved, clearlydefined -npm/npmjs/-/slash/3.0.0, MIT, approved, clearlydefined -npm/npmjs/-/slick-carousel/1.8.1, MIT, approved, #2986 -npm/npmjs/-/source-map-js/1.0.2, BSD-3-Clause, approved, #2412 -npm/npmjs/-/source-map/0.5.7, BSD-3-Clause, approved, #2400 -npm/npmjs/-/string-convert/0.2.1, MIT, approved, clearlydefined -npm/npmjs/-/string-width-cjs/4.2.3, MIT, approved, #11627 -npm/npmjs/-/string-width/4.2.3, MIT, approved, clearlydefined -npm/npmjs/-/string-width/5.1.2, MIT, approved, clearlydefined -npm/npmjs/-/strip-ansi-cjs/6.0.1, MIT, approved, #11643 -npm/npmjs/-/strip-ansi/6.0.1, MIT, approved, clearlydefined -npm/npmjs/-/strip-ansi/7.1.0, MIT, approved, #8735 -npm/npmjs/-/strip-json-comments/3.1.1, MIT, approved, clearlydefined -npm/npmjs/-/stylis/4.2.0, MIT, approved, #8409 -npm/npmjs/-/sucrase/3.35.0, MIT, approved, clearlydefined -npm/npmjs/-/supports-color/5.5.0, MIT, approved, clearlydefined -npm/npmjs/-/supports-color/7.2.0, MIT, approved, clearlydefined -npm/npmjs/-/supports-preserve-symlinks-flag/1.0.0, MIT, approved, clearlydefined -npm/npmjs/-/tailwindcss/3.4.1, MIT, approved, clearlydefined -npm/npmjs/-/text-table/0.2.0, MIT, approved, clearlydefined -npm/npmjs/-/thenify-all/1.6.0, MIT, approved, clearlydefined -npm/npmjs/-/thenify/3.3.1, MIT, approved, clearlydefined -npm/npmjs/-/to-fast-properties/2.0.0, MIT, approved, clearlydefined -npm/npmjs/-/to-regex-range/5.0.1, MIT, approved, clearlydefined -npm/npmjs/-/ts-api-utils/1.0.3, MIT, approved, clearlydefined -npm/npmjs/-/ts-interface-checker/0.1.13, Apache-2.0, approved, clearlydefined -npm/npmjs/-/type-check/0.4.0, MIT, approved, clearlydefined -npm/npmjs/-/type-fest/0.20.2, MIT OR (CC0-1.0 AND MIT), approved, clearlydefined -npm/npmjs/-/typescript/5.3.3, Apache-2.0 AND (CC-BY-4.0 AND LicenseRef-Unicode AND MIT AND W3C-20150513) AND BSD-3-Clause AND ODbL-1.0 AND MIT, approved, #11843 -npm/npmjs/-/update-browserslist-db/1.0.13, MIT, approved, #8237 -npm/npmjs/-/uri-js/4.4.1, BSD-2-Clause, approved, #1086 -npm/npmjs/-/util-deprecate/1.0.2, MIT, approved, #5885 -npm/npmjs/-/vite/5.0.12, MIT AND (ISC AND MIT) AND (Apache-2.0 AND BSD-2-Clause AND CC0-1.0 AND ISC AND MIT) AND (BSD-3-Clause AND MIT) AND ISC AND (BSD-2-Clause AND BSD-3-Clause), approved, #11790 -npm/npmjs/-/void-elements/3.1.0, MIT, approved, clearlydefined -npm/npmjs/-/which/2.0.2, ISC, approved, clearlydefined -npm/npmjs/-/wrap-ansi-cjs/7.0.0, MIT, approved, #11631 -npm/npmjs/-/wrap-ansi/8.1.0, MIT, approved, clearlydefined -npm/npmjs/-/wrappy/1.0.2, ISC, approved, clearlydefined -npm/npmjs/-/yallist/3.1.1, ISC, approved, clearlydefined -npm/npmjs/-/yallist/4.0.0, ISC, approved, clearlydefined -npm/npmjs/-/yaml/1.10.2, ISC, approved, clearlydefined -npm/npmjs/-/yaml/2.3.4, ISC AND 0BSD, approved, #9019 -npm/npmjs/-/yocto-queue/0.1.0, MIT, approved, clearlydefined -npm/npmjs/@aashutoshrathi/word-wrap/1.2.6, MIT, approved, #9212 -npm/npmjs/@alloc/quick-lru/5.2.0, MIT, approved, clearlydefined -npm/npmjs/@ampproject/remapping/2.2.1, Apache-2.0, approved, clearlydefined -npm/npmjs/@babel/code-frame/7.23.5, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11659 -npm/npmjs/@babel/compat-data/7.23.5, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11554 -npm/npmjs/@babel/core/7.23.7, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11570 -npm/npmjs/@babel/generator/7.23.6, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11522 -npm/npmjs/@babel/helper-compilation-targets/7.23.6, MIT, approved, clearlydefined -npm/npmjs/@babel/helper-environment-visitor/7.22.20, MIT, approved, #8934 -npm/npmjs/@babel/helper-function-name/7.23.0, MIT, approved, clearlydefined -npm/npmjs/@babel/helper-hoist-variables/7.22.5, MIT, approved, #8957 -npm/npmjs/@babel/helper-module-imports/7.22.15, MIT, approved, #8944 -npm/npmjs/@babel/helper-module-transforms/7.23.3, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11537 -npm/npmjs/@babel/helper-plugin-utils/7.22.5, MIT, approved, #9012 -npm/npmjs/@babel/helper-simple-access/7.22.5, MIT, approved, #9048 -npm/npmjs/@babel/helper-split-export-declaration/7.22.6, MIT, approved, #8938 -npm/npmjs/@babel/helper-string-parser/7.23.4, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11660 -npm/npmjs/@babel/helper-validator-identifier/7.22.20, MIT, approved, #8955 -npm/npmjs/@babel/helper-validator-option/7.23.5, MIT, approved, clearlydefined -npm/npmjs/@babel/helpers/7.23.8, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11662 -npm/npmjs/@babel/highlight/7.23.4, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11658 -npm/npmjs/@babel/parser/7.23.6, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #10663 -npm/npmjs/@babel/plugin-transform-react-jsx-self/7.23.3, MIT, approved, clearlydefined -npm/npmjs/@babel/plugin-transform-react-jsx-source/7.23.3, MIT, approved, clearlydefined -npm/npmjs/@babel/runtime/7.24.0, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #13900 -npm/npmjs/@babel/template/7.22.15, MIT, approved, #9017 -npm/npmjs/@babel/traverse/7.23.7, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11520 -npm/npmjs/@babel/types/7.23.6, MIT AND (BSD-2-Clause AND ISC AND MIT) AND BSD-2-Clause AND BSD-3-Clause, approved, #11521 -npm/npmjs/@catena-x/portal-shared-components/2.1.31, Apache-2.0 AND CC-BY-4.0, approved, #10502 -npm/npmjs/@emotion/babel-plugin/11.11.0, MIT, approved, #8386 -npm/npmjs/@emotion/cache/11.11.0, MIT, approved, #8401 -npm/npmjs/@emotion/hash/0.9.1, MIT, approved, #8394 -npm/npmjs/@emotion/is-prop-valid/1.2.1, MIT, approved, #8392 -npm/npmjs/@emotion/memoize/0.8.1, MIT, approved, #8408 -npm/npmjs/@emotion/react/11.11.3, MIT AND (BSD-3-Clause AND MIT), approved, #8931 -npm/npmjs/@emotion/serialize/1.1.3, MIT, approved, #8417 -npm/npmjs/@emotion/sheet/1.2.2, MIT, approved, #8389 -npm/npmjs/@emotion/styled/11.11.0, MIT, approved, clearlydefined -npm/npmjs/@emotion/unitless/0.8.1, MIT, approved, #8403 -npm/npmjs/@emotion/use-insertion-effect-with-fallbacks/1.0.1, MIT, approved, #8419 -npm/npmjs/@emotion/utils/1.2.1, MIT, approved, #8415 -npm/npmjs/@emotion/weak-memoize/0.3.1, MIT, approved, #8402 -npm/npmjs/@esbuild/linux-x64/0.19.11, Apache-2.0 AND MIT AND BSD-3-Clause AND (BSD-2-Clause AND BSD-3-Clause), approved, #12980 -npm/npmjs/@eslint-community/eslint-utils/4.4.0, MIT, approved, #8032 -npm/npmjs/@eslint-community/regexpp/4.10.0, MIT, approved, clearlydefined -npm/npmjs/@eslint/eslintrc/2.1.4, MIT, approved, #9908 -npm/npmjs/@eslint/js/8.56.0, MIT AND ISC AND OFL-1.1 AND CC-BY-SA-2.0-UK, approved, #12109 -npm/npmjs/@floating-ui/core/1.5.3, MIT AND ISC AND (CC-BY-4.0 AND MIT), approved, #10887 -npm/npmjs/@floating-ui/dom/1.5.4, MIT, approved, #9893 -npm/npmjs/@floating-ui/react-dom/2.0.6, MIT, approved, clearlydefined -npm/npmjs/@floating-ui/utils/0.2.1, MIT, approved, clearlydefined -npm/npmjs/@humanwhocodes/config-array/0.11.14, Apache-2.0, approved, #5876 -npm/npmjs/@humanwhocodes/module-importer/1.0.1, Apache-2.0, approved, clearlydefined -npm/npmjs/@humanwhocodes/object-schema/2.0.2, BSD-3-Clause, approved, clearlydefined -npm/npmjs/@isaacs/cliui/8.0.2, ISC, approved, #8260 -npm/npmjs/@jridgewell/gen-mapping/0.3.3, MIT, approved, clearlydefined -npm/npmjs/@jridgewell/resolve-uri/3.1.1, MIT, approved, clearlydefined -npm/npmjs/@jridgewell/set-array/1.1.2, MIT, approved, clearlydefined -npm/npmjs/@jridgewell/sourcemap-codec/1.4.15, MIT, approved, clearlydefined -npm/npmjs/@jridgewell/trace-mapping/0.3.21, MIT, approved, #9904 -npm/npmjs/@mui/base/5.0.0-beta.18, MIT, approved, #2992 -npm/npmjs/@mui/base/5.0.0-beta.31, MIT, approved, #2992 -npm/npmjs/@mui/core-downloads-tracker/5.14.12, MIT AND CC-BY-3.0, approved, #9895 -npm/npmjs/@mui/icons-material/5.14.12, MIT AND CC-BY-3.0, approved, #9876 -npm/npmjs/@mui/material/5.14.12, , approved, #9917 -npm/npmjs/@mui/private-theming/5.14.12, MIT, approved, #10973 -npm/npmjs/@mui/styled-engine/5.14.20, MIT, approved, #10971 -npm/npmjs/@mui/system/5.14.12, MIT AND CC-BY-3.0, approved, #9905 -npm/npmjs/@mui/types/7.2.13, MIT, approved, clearlydefined -npm/npmjs/@mui/utils/5.14.12, MIT AND CC-BY-3.0, approved, #9891 -npm/npmjs/@mui/utils/5.14.20, MIT AND CC-BY-3.0, approved, #9891 -npm/npmjs/@mui/x-data-grid/6.18.7, MIT AND ISC, approved, #11696 -npm/npmjs/@mui/x-date-pickers/6.16.3, MIT, approved, clearlydefined -npm/npmjs/@nodelib/fs.scandir/2.1.5, MIT, approved, clearlydefined -npm/npmjs/@nodelib/fs.stat/2.0.5, MIT, approved, clearlydefined -npm/npmjs/@nodelib/fs.walk/1.2.8, MIT, approved, clearlydefined -npm/npmjs/@pkgjs/parseargs/0.11.0, Apache-2.0 AND MIT, approved, #8236 -npm/npmjs/@popperjs/core/2.11.8, MIT, approved, clearlydefined -npm/npmjs/@remix-run/router/1.14.2, MIT, approved, clearlydefined -npm/npmjs/@rollup/rollup-linux-x64-gnu/4.9.5, MIT AND (ISC AND MIT), approved, #12983 -npm/npmjs/@rollup/rollup-linux-x64-musl/4.9.5, MIT AND (ISC AND MIT), approved, #12963 -npm/npmjs/@types/babel__core/7.20.5, MIT, approved, clearlydefined -npm/npmjs/@types/babel__generator/7.6.8, MIT, approved, clearlydefined -npm/npmjs/@types/babel__template/7.4.4, MIT, approved, clearlydefined -npm/npmjs/@types/babel__traverse/7.20.5, MIT, approved, #8935 -npm/npmjs/@types/estree/1.0.5, MIT, approved, #8266 -npm/npmjs/@types/json-schema/7.0.15, MIT, approved, clearlydefined -npm/npmjs/@types/node/20.8.3, MIT, approved, #10804 -npm/npmjs/@types/parse-json/4.0.2, MIT, approved, clearlydefined -npm/npmjs/@types/prop-types/15.7.11, MIT, approved, clearlydefined -npm/npmjs/@types/react-dom/18.2.18, MIT, approved, #8256 -npm/npmjs/@types/react-transition-group/4.4.10, MIT, approved, #8416 -npm/npmjs/@types/react/18.2.48, MIT, approved, #8234 -npm/npmjs/@types/scheduler/0.16.8, MIT, approved, #7582 -npm/npmjs/@types/semver/7.5.6, MIT, approved, #10842 -npm/npmjs/@typescript-eslint/eslint-plugin/6.19.0, BSD-2-Clause AND (BSD-2-Clause AND ISC AND MIT) AND MIT, approved, #12778 -npm/npmjs/@typescript-eslint/parser/6.19.0, BSD-2-Clause, approved, clearlydefined -npm/npmjs/@typescript-eslint/scope-manager/6.19.0, MIT, approved, clearlydefined -npm/npmjs/@typescript-eslint/type-utils/6.19.0, MIT, approved, clearlydefined -npm/npmjs/@typescript-eslint/types/6.19.0, MIT, approved, clearlydefined -npm/npmjs/@typescript-eslint/typescript-estree/6.19.0, BSD-2-Clause AND (BSD-2-Clause AND ISC AND MIT) AND MIT, approved, #12779 -npm/npmjs/@typescript-eslint/utils/6.19.0, MIT, approved, clearlydefined -npm/npmjs/@typescript-eslint/visitor-keys/6.19.0, MIT, approved, clearlydefined -npm/npmjs/@ungap/structured-clone/1.2.0, ISC, approved, clearlydefined -npm/npmjs/@vitejs/plugin-react/4.2.1, MIT, approved, clearlydefined diff --git a/frontend/Dockerfile b/frontend/Dockerfile index c90c874d..babe5954 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -36,12 +36,8 @@ RUN npm install && npm run ${NPM_BUILD_MODE} RUN chmod -R 777 /app/dist -# Copy Legal information for distributions -COPY README.md /app/dist/README.md -COPY SECURITY.md /app/dist/SECURITY.md -COPY LICENSE /app/dist/LICENSE -COPY NOTICE.md /app/dist/NOTICE.md -COPY DEPENDENCIES /app/dist/DEPENDENCIES +# Copy Legal information for distributions, the star ones are copied by workflow +COPY DOCKER_NOTICE.md README.md NOTICE.md* SECURITY.md* LICENSE* DEPENDENCIES* /app/dist/ # uses 101 restricted user FROM nginxinc/nginx-unprivileged:alpine diff --git a/frontend/LICENSE b/frontend/LICENSE deleted file mode 100644 index 697ecc5f..00000000 --- a/frontend/LICENSE +++ /dev/null @@ -1,203 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2022,2023 Volkswagen AG - Copyright (c) 2022,2023 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) - Copyright (c) 2022,2023 Contributors to the Eclipse Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/frontend/NOTICE.md b/frontend/NOTICE.md deleted file mode 100644 index e1773779..00000000 --- a/frontend/NOTICE.md +++ /dev/null @@ -1,53 +0,0 @@ -# Notices - -This content is produced and maintained by the Eclipse Tractus-X project. - -* Project home: https://projects.eclipse.org/projects/automotive.tractusx - -## Trademarks - -Eclipse Tractus-X is a trademark of the Eclipse Foundation. - -## Copyright - -All content is the property of the respective authors or their employers. For -more information regarding authorship of content, please consult the listed -source code repository logs. - -## Declared Project Licenses - -This program and the accompanying materials are made available under the terms -of the Apache License, Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0. - -SPDX-License-Identifier: Apache-2.0 - -## Source Code - -The project maintains the following source code repositories -in the GitHub organization https://github.com/eclipse-tractusx: - -* https://github.com/eclipse-tractusx/puris - - -## Third-party Content - -This project leverages the following third party content. - -See `DEPENDENCIES_FRONTEND` and `DEPENDENCIES_BACKEND` file. Further, the following third-party content is used that -isn't listed in any DEPENDENCIES file: - -feather (4.29) -* License: MIT License -* Licence Path: https://github.com/feathericons/feather/blob/master/LICENSE -* Project URL: https://feathericons.com/ -* Source URL: https://github.com/feathericons/feather - -## Cryptography - -Content may contain encryption software. The country in which you are currently -may have restrictions on the import, possession, and use, and/or re-export to -another country, of encryption software. BEFORE using any encryption software, -please check the country's laws, regulations and policies concerning the import, -possession, or use, and re-export of encryption software, to see if this is -permitted. diff --git a/frontend/SECURITY.md b/frontend/SECURITY.md deleted file mode 100644 index d7319028..00000000 --- a/frontend/SECURITY.md +++ /dev/null @@ -1,17 +0,0 @@ -# Security Policy -## Reporting a Vulnerability -Please do **not** report security vulnerabilities through public GitHub issues. - -Please report vulnerabilities to this repository via **GitHub security advisories** instead. - -How? Inside affected repository --> security tab - -for contributor: ---> Report a vulnerability - -for committer: ---> advisories --> New draft security advisory - -In severe cases, you can also report a found vulnerability via mail or eclipse issue here: https://www.eclipse.org/security/ - -See [Eclipse Foundation Vulnerability Reporting Policy](https://www.eclipse.org/projects/handbook/#vulnerability) From 4533f365abce4abfcd148d7dc94cdae4afb0526e Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 09:43:50 -0700 Subject: [PATCH 07/24] docs: updated dead links and added some hands on to CONTRIBUTING.md --- CHANGELOG.md | 9 +++++++-- CONTRIBUTING.md | 30 +++++++++++++++++++++++++++++- README.md | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfd1095c..3ecabaf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v2.0.0](https://github.com/eclipse-tractusx/puris/releases/tag/v2.0.0) +## [v2.0.0](https://github.com/eclipse-tractusx/puris/releases/tag/2.0.0) The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs and understanding the concept changes. @@ -83,6 +83,11 @@ The **need for configuration updates** is **marked bold**. ### Known Knowns +#### Security + +The Backend is currently secured via API Key while the Frontend already uses an API-KEY. See +[Admin Guide](./docs/admin/Admin_Guide.md) for further information. + #### Upgradeability As currently no active user was known migrations of data are not yet supported. The chart technically is upgradeable. @@ -102,7 +107,7 @@ For productive use the following enhancements are encouraged To be checked -## [v1.0.0](https://github.com/eclipse-tractusx/puris/releases/tag/v1.0.0) +## [v1.0.0](https://github.com/eclipse-tractusx/puris/releases/tag/1.0.0) ### Added diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1915f50a..0a61e2bf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ The companies involved want to increase the automotive industry's competitiveness, improve efficiency through industry-specific cooperation and accelerate company processes through standardization and access to information and data. A special focus is also on SMEs, whose active participation is of -central importance for the network’s success. That is why Catena-X has been +central importance for the network's success. That is why Catena-X has been conceived from the outset as an open network with solutions ready for SMEs, where these companies will be able to participate quickly and with little IT infrastructure investment. Tractus-X is meant to be the PoC project of the @@ -56,3 +56,31 @@ https://www.eclipse.org/projects/handbook/#resources-commit Contact the project developers via the project's "dev" list. * https://accounts.eclipse.org/mailing-list/tractusx-dev + +## Hand's On PURIS! + +To directly participate in the development of PURIS feel free to create an issue for Bugs or Features (User Story) in +repository. + +You can also take over existing issues or just fix things directly in a pull request. To do so: + +1. Create a fork (in tab `Code` of this repository on the right side, same row as repository name > click fork) +2. Clone your fork (copy commands for clone via green `Code` dropdown) +3. Checkout a new branch +4. Do the work. + - [Follow conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) + - Checkout [development documentation](./docs/DEVELOPMENT.md) for frequent questions + - Checkout [Tractus-X Release Guidelines](https://eclipse-tractusx.github.io/docs/release) e.g., for open source + questions + - Run the tests and [local deployment](./local/INSTALL.md) (and refresh information in the view) to ensure you broke + nothing +5. Push your work and create a PR, best with linking to the issue via `#` and a meaningful description. + - Check that dependencies are up to date (if not done) + - Check and resolve pipeline results + - Request the review (if you're contributor) +6. Iterate over the code changes with the Committers! + +> **Get in touch!** +> +> Checkout the [open meetings](https://eclipse-tractusx.github.io/community/open-meetings) to get in touch and find +> mentors and ask contributors on how things are done. diff --git a/README.md b/README.md index bba0ff36..1b0260c6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

PURIS

- The Catena-X Predictive Unit Real-Time Information Service (PURIS) for Short Term Demand and Capacity Management + The Predictive Unit Real-Time Information Service (PURIS) for Short Term Demand and Capacity Management
## Overview From cce8b820d6adc1f9cf1665e5e28b851596fcf5e5 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 09:47:38 -0700 Subject: [PATCH 08/24] ci(dockerbuild): build for arm64 and amd64 architecture --- .github/workflows/build-image-backend.yml | 10 ++++++++++ .github/workflows/build-image-frontend.yml | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/.github/workflows/build-image-backend.yml b/.github/workflows/build-image-backend.yml index 44b6e98f..daf91f09 100644 --- a/.github/workflows/build-image-backend.yml +++ b/.github/workflows/build-image-backend.yml @@ -52,6 +52,7 @@ jobs: uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 # Copy legal information from root dir to backend dir for publishing + - name: Copy and paste legal information run: | cp ./DEPENDENCIES_BACKEND ./backend/DEPENDENCIES @@ -59,6 +60,14 @@ jobs: cp ./NOTICE.md ./backend/NOTICE.md cp ./SECURITY.md ./backend/SECURITY.md + # Needed to create multi-platfrom image + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Needed to create multi-platfrom image + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta @@ -87,6 +96,7 @@ jobs: with: context: ./backend file: ./backend/Dockerfile + platforms: linux/amd64, linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index 48d711cd..efc32f57 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -59,6 +59,14 @@ jobs: cp ./NOTICE.md ./frontend/NOTICE.md cp ./SECURITY.md ./frontend/SECURITY.md + # Needed to create multi-platfrom image + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Needed to create multi-platfrom image + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta @@ -87,6 +95,7 @@ jobs: with: context: ./frontend file: ./frontend/Dockerfile + platforms: linux/amd64, linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} From ab60a469fa615600150b87579ac78b66f4c52c0d Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 10:36:21 -0700 Subject: [PATCH 09/24] fix(helm): fixed partners default value and trimming for global backend url --- charts/puris/README.md | 2 +- charts/puris/templates/backend-deployment.yaml | 10 ++++------ charts/puris/templates/frontend-deployment.yaml | 5 +++-- charts/puris/values.yaml | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/charts/puris/README.md b/charts/puris/README.md index 648d37a1..1110924b 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -169,7 +169,7 @@ dependencies: | frontend.puris.endpointDemand | string | `"demand"` | The endpoint for the demand submodel | | frontend.puris.endpointMaterialStocks | string | `"stockView/material-stocks"` | The endpoint for material stocks for the stock view | | frontend.puris.endpointMaterials | string | `"stockView/materials"` | The endpoint for materials for the stock view | -| frontend.puris.endpointPartner | string | `"partner"` | The endpoint for partner information | +| frontend.puris.endpointPartners | string | `"partners"` | The endpoint for partner information | | frontend.puris.endpointProductStocks | string | `"stockView/product-stocks"` | The endpoint for product stocks for the stock view | | frontend.puris.endpointProduction | string | `"production"` | The endpoint for the production submodel | | frontend.puris.endpointProductionRange | string | `"production/range"` | The endpoint for the production range of the production submodel | diff --git a/charts/puris/templates/backend-deployment.yaml b/charts/puris/templates/backend-deployment.yaml index a44af323..982769e5 100644 --- a/charts/puris/templates/backend-deployment.yaml +++ b/charts/puris/templates/backend-deployment.yaml @@ -126,14 +126,12 @@ spec: - name: PURIS_DEMONSTRATOR_ROLE value: "{{ .Values.backend.puris.demonstrator.role }}" - name: PURIS_BASEURL - {{- $baseUrl := .Values.backend.puris.baseurl }} - {{- if not (tpl "(strings.HasSuffix \"$baseUrl\" \"/\")" .) }} - {{- $baseUrl = printf "%s/" $baseUrl }} - {{- end }} + # remove backslash if given and later ensure (must end with trailing slash) + {{- $baseUrl := trimSuffix "/" .Values.backend.puris.baseurl}} {{- if and .Values.backend.ingress.enabled .Values.backend.ingress.tls }} - value: "https://{{ $baseUrl }}" + value: "https://{{ $baseUrl }}/" {{- else }} - value: "http://{{ $baseUrl }}" + value: "http://{{ $baseUrl }}/" {{- end}} - name: PURIS_EDR_DELETIONTIMER value: "{{ .Values.backend.puris.edr.deletiontimer }}" diff --git a/charts/puris/templates/frontend-deployment.yaml b/charts/puris/templates/frontend-deployment.yaml index 13d2ca30..46e87bd6 100644 --- a/charts/puris/templates/frontend-deployment.yaml +++ b/charts/puris/templates/frontend-deployment.yaml @@ -58,7 +58,8 @@ spec: - name: APP_NAME value: "{{ .Values.frontend.puris.appName }}" - name: BACKEND_BASE_URL - value: "https://{{ .Values.frontend.puris.baseUrl }}{{ .Values.backend.puris.api.rootDir }}/" + {{- $baseUrl := trimSuffix "/" .Values.frontend.puris.baseUrl}} + value: "https://{{ $baseUrl }}{{ .Values.backend.puris.api.rootDir }}/" - name: ENDPOINT_MATERIALS value: "{{ .Values.frontend.puris.endpointMaterials }}" - name: ENDPOINT_PRODUCTS @@ -80,7 +81,7 @@ spec: - name: ENDPOINT_UPDATE_REPORTED_PRODUCT_STOCKS value: "{{ .Values.frontend.puris.endpointUpdateReportedProductStocks }}" - name: ENDPOINT_PARTNER - value: "{{ .Values.frontend.puris.endpointPartner }}" + value: "{{ .Values.frontend.puris.endpointPartners }}" - name: ENDPOINT_DEMAND value: "{{ .Values.frontend.puris.endpointDemand }}" - name: ENDPOINT_PRODUCTION diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index 1acb1de7..82af3b03 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -184,7 +184,7 @@ frontend: # -- The endpoint for triggering an update of your product stocks on your partners side endpointUpdateReportedProductStocks: stockView/update-reported-product-stocks?ownMaterialNumber= # -- The endpoint for partner information - endpointPartner: partner + endpointPartners: partners # -- The endpoint for the demand submodel endpointDemand: demand # -- The endpoint for the production submodel From cff9b6d6afea970c886a7286bd12cb8ab4a9d0bf Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 10:53:06 -0700 Subject: [PATCH 10/24] chore(build-image-x): updated versions and replaced by commit hash --- .github/workflows/build-image-backend.yml | 4 ++-- .github/workflows/build-image-frontend.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-image-backend.yml b/.github/workflows/build-image-backend.yml index daf91f09..04c271e5 100644 --- a/.github/workflows/build-image-backend.yml +++ b/.github/workflows/build-image-backend.yml @@ -62,11 +62,11 @@ jobs: # Needed to create multi-platfrom image - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 # Needed to create multi-platfrom image - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 # Create SemVer or ref tags dependent of trigger event - name: Docker meta diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index efc32f57..1b641d8c 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -61,11 +61,11 @@ jobs: # Needed to create multi-platfrom image - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 # Needed to create multi-platfrom image - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 # Create SemVer or ref tags dependent of trigger event - name: Docker meta From 6b82469ec97038433bcf654ee1b47b0bd036b577 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 11:26:36 -0700 Subject: [PATCH 11/24] fix(helm): set postgres name independent of version name --- charts/puris/templates/_helpers.tpl | 21 +++++++++++++++---- .../puris/templates/backend-deployment.yaml | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/charts/puris/templates/_helpers.tpl b/charts/puris/templates/_helpers.tpl index 37dadb49..b08ed386 100644 --- a/charts/puris/templates/_helpers.tpl +++ b/charts/puris/templates/_helpers.tpl @@ -2,7 +2,7 @@ Expand the name of the chart. */}} {{- define "puris.backend.name" -}} -{{- default .Chart.Name "puris-backend" .Values.backend.nameOverride | trunc 63 | trimSuffix "-" }} +{{- default .Chart.Name "backend" .Values.backend.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{/* @@ -14,7 +14,7 @@ If release name contains chart name it will be used as a full name. {{- if .Values.backend.fullnameOverride }} {{- .Values.backend.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} -{{- $name := default .Chart.Name "puris-backend" .Values.backend.nameOverride }} +{{- $name := default .Chart.Name "backend" .Values.backend.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} @@ -66,7 +66,7 @@ FRONTEND Expand the name of the chart. */}} {{- define "puris.frontend.name" -}} -{{- default .Chart.Name "puris-frontend" .Values.frontend.nameOverride | trunc 63 | trimSuffix "-" }} +{{- default .Chart.Name "frontend" .Values.frontend.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{/* @@ -78,7 +78,7 @@ If release name contains chart name it will be used as a full name. {{- if .Values.frontend.fullnameOverride }} {{- .Values.frontend.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} -{{- $name := default .Chart.Name "puris-frontend" .Values.frontend.nameOverride }} +{{- $name := default .Chart.Name "frontend" .Values.frontend.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} @@ -124,3 +124,16 @@ Create the name of the service account to use {{- default "default" .Values.frontend.serviceAccount.name }} {{- end }} {{- end }} + +{{/* +Create a default fully qualified app name for PostgreSQL. +*/}} +{{- define "puris.postgresql.fullname" -}} +{{- if .Values.postgresql.fullnameOverride }} +{{- .Values.postgresql.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else if .Values.postgresql.nameOverride }} +{{- printf "%s-%s" .Release.Name .Values.postgresql.nameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-postgresql" .Release.Name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} diff --git a/charts/puris/templates/backend-deployment.yaml b/charts/puris/templates/backend-deployment.yaml index 982769e5..2e1156ec 100644 --- a/charts/puris/templates/backend-deployment.yaml +++ b/charts/puris/templates/backend-deployment.yaml @@ -63,7 +63,7 @@ spec: value: "{{ .Values.backend.puris.datasource.driverClassName }}" {{- if .Values.postgresql.enabled }} - name: DATASOURCE_URL - value: "jdbc:postgresql://{{ .Values.postgresql.fullnameOverride }}:{{ .Values.postgresql.service.ports.postgresql }}/{{ .Values.postgresql.auth.database}}" + value: "jdbc:postgresql://{{ include "puris.postgresql.fullname" . }}:{{ .Values.postgresql.service.ports.postgresql }}/{{ .Values.postgresql.auth.database}}" - name: DATASOURCE_USERNAME value: "{{ .Values.postgresql.auth.username }}" - name: DATASOURCE_PASSWORD From 79c5286c76e5cb8501c4dbb791644cd36e8b5bd7 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 22:23:48 -0700 Subject: [PATCH 12/24] fix(helm): enhance secret names and updradeability --- .github/workflows/helm-test.yml | 7 +------ charts/puris/README.md | 8 ++++---- charts/puris/values.yaml | 8 ++++---- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/helm-test.yml b/.github/workflows/helm-test.yml index 0a8eb68d..ed9f9d85 100644 --- a/.github/workflows/helm-test.yml +++ b/.github/workflows/helm-test.yml @@ -112,11 +112,6 @@ jobs: ct install --charts charts/puris --helm-extra-set-args "--set backend.image.repository=${{ env.REGISTRY }}/${{ env.APP_BACKEND_NAME}} --set backend.image.tag=${{ env.TAG }} --set frontend.image.repository=${{ env.REGISTRY }}/${{ env.APP_FRONTEND_NAME }} --set frontend.image.tag=${{ env.TAG }}" if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true' - - name: Generate random password (This password is only a placeholder for the next step and will not used). - id: generate-password - run: | - echo "PASSWORD=PLACEHOLDER_PW" >> $GITHUB_ENV - # Upgrade the released chart version with the locally available chart # default value for event_name != workflow_dispatch # Setting passwords during upgrade: @@ -128,5 +123,5 @@ jobs: helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev helm install puris tractusx-dev/puris --version ${{ github.event.inputs.upgrade_from || '1.0.0' }} helm dependency update charts/puris - helm upgrade puris charts/puris --set backend.puris.datasource.password=$PASSWORD --set backend.puris.dtr.idp.clients.puris.secret=$PASSWORD + helm upgrade puris charts/puris if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true' diff --git a/charts/puris/README.md b/charts/puris/README.md index 1110924b..ef810be3 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -78,7 +78,7 @@ dependencies: | backend.puris.api.rootDir | string | `"/catena"` | The root directory of the API | | backend.puris.baseurl | string | `"your-backend-host-address.com"` | Base url of the PURIS backend | | backend.puris.datasource.driverClassName | string | `"org.postgresql.Driver"` | Driver class name of the database | -| backend.puris.datasource.password | string | `nil` | Password for the database user. Ignored if postgres.enabled is true. | +| backend.puris.datasource.password | string | `""` | Password for the database user. Ignored if postgres.enabled is true. | | backend.puris.datasource.url | string | `"jdbc:postgresql://postgresql-name:5432/puris-database"` | URL of the database. Ignored if postgres.enabled is true. | | backend.puris.datasource.username | string | `"db-user"` | Username of the database. Ignored if postgres.enabled is true. | | backend.puris.deliverysubmodel.apiassetid | string | `"deliverysubmodel-api-asset"` | Asset ID for DeliverySubmodel API | @@ -87,7 +87,7 @@ dependencies: | backend.puris.dtr.idp.clients.edc.id | string | `"FOSS-EDC-CLIENT"` | id of the client that has a service account with roles to view the DTR. Used by the application to create DTR asset in the edc with read only access. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | | backend.puris.dtr.idp.clients.edc.secret.alias | string | `"path/secret-name"` | alias for the vault used by the EDC in which the secret is stored. Mandatory if backend.puris.dtr.idp.enabled = true. | | backend.puris.dtr.idp.clients.puris.id | string | `"FOSS-PURIS-CLIENT"` | id of the client that has a service account with roles to manage the DTR. Used by the application to create and update digital twins. See Admin Guide. Mandatory if backend.puris.dtr.idp.enabled = true. | -| backend.puris.dtr.idp.clients.puris.secret | string | `nil` | secret of the client with write access (no vault alias). No default value will be created if empty. Mandatory if backend.puris.dtr.idp.enabled = true. | +| backend.puris.dtr.idp.clients.puris.secret | string | `""` | secret of the client with write access (no vault alias). No default value will be created if empty. Mandatory if backend.puris.dtr.idp.enabled = true. | | backend.puris.dtr.idp.enabled | bool | `true` | enables the usage of the IDP for the DTR. | | backend.puris.dtr.idp.tokenurl | string | `"https://keycloak-service.com/realms/your-realm/openid-connect/token"` | token url of the idp for your specific realm. May be different to other idp token url in this config. Mandatory if backend.puris.dtr.idp.enabled = true. | | backend.puris.dtr.url | string | `"http://localhost:4243"` | Endpoint for DTR | @@ -97,7 +97,7 @@ dependencies: | backend.puris.edc.controlplane.protocol.url | string | `"https://your-edc-address:8184/api/v1/dsp"` | Url to the EDC controlplane protocol API of the edc | | backend.puris.edc.dataplane.public.url | string | `"https://your-data-plane:8285/api/public/"` | Url of one of your data plane's public api | | backend.puris.edr.deletiontimer | int | `2` | Number of minutes before received authentication data of a consumer pull is removed from memory | -| backend.puris.existingSecret | string | `"secret-backend-puris"` | Secret for backend passwords. For more information look into 'backend-secrets.yaml' file. | +| backend.puris.existingSecret | string | `"secret-puris-backend"` | Secret for backend passwords. For more information look into 'backend-secrets.yaml' file. | | backend.puris.frameworkagreement.credential | string | `"Puris"` | The name of the framework agreement. Starting with Uppercase and using CamelCase. | | backend.puris.frameworkagreement.version | string | `"1.0"` | The version of the framework agreement, NEEDS TO BE PUT AS "STRING"! | | backend.puris.generatematerialcatenaxid | bool | `true` | Flag that decides whether the auto-generation feature of the puris backend is enabled. Since all Material entities are required to have a CatenaX-Id, you must enter any pre-existing CatenaX-Id via the materials-API of the backend, when you are inserting a new Material entity to the backend's database. If a CatenaX-Id was not assigned to your Material so far, then this feature can auto-generate one randomly. In a real-world-scenario, you must then use this randomly generated CatenaX-Id for the lifetime of that Material entity. | @@ -209,7 +209,7 @@ dependencies: | frontend.tolerations | list | `[]` | Constrains for tolerations | | global.domain.backend.ingress | string | `"your-backend-host-address.com"` | | | postgresql.auth.database | string | `"postgres"` | Name of the database. | -| postgresql.auth.existingSecret | string | `"secret-postgres-init"` | Secret containing the password. For more information look into 'backend-secrets-postgres.yaml' file. | +| postgresql.auth.existingSecret | string | `"secret-puris-postgres-init"` | Secret containing the password. For more information look into 'backend-secrets-postgres.yaml' file. | | postgresql.auth.password | string | `""` | Password for the custom database user. Secret-key 'password' | | postgresql.auth.passwordPostgres | string | `""` | Password for the database. Secret-key 'postgres-password'. | | postgresql.auth.username | string | `"puris"` | Username for the custom database user. | diff --git a/charts/puris/values.yaml b/charts/puris/values.yaml index 82af3b03..cc490573 100644 --- a/charts/puris/values.yaml +++ b/charts/puris/values.yaml @@ -355,7 +355,7 @@ backend: # -- Base url of the PURIS backend baseurl: *domain # -- Secret for backend passwords. For more information look into 'backend-secrets.yaml' file. - existingSecret: "secret-backend-puris" + existingSecret: "secret-puris-backend" api: # -- The API key of the PURIS application key: "test" @@ -369,7 +369,7 @@ backend: # -- Username of the database. Ignored if postgres.enabled is true. username: db-user # -- Password for the database user. Ignored if postgres.enabled is true. - password: + password: "" edc: controlplane: host: "172.17.0.2" @@ -465,7 +465,7 @@ backend: id: FOSS-PURIS-CLIENT # -- secret of the client with write access (no vault alias). No default value will be created if empty. # Mandatory if backend.puris.dtr.idp.enabled = true. - secret: + secret: "" # -- Flag that decides whether the auto-generation feature of the puris backend is enabled. # Since all Material entities are required to have a CatenaX-Id, you must enter any pre-existing CatenaX-Id # via the materials-API of the backend, when you are inserting a new Material entity to the backend's @@ -494,7 +494,7 @@ postgresql: # -- Name of the database. database: "postgres" # -- Secret containing the password. For more information look into 'backend-secrets-postgres.yaml' file. - existingSecret: "secret-postgres-init" + existingSecret: "secret-puris-postgres-init" # -- Username for the custom database user. username: "puris" # -- Password for the custom database user. Secret-key 'password' From 88577a734506f97c6dec34c9f139eb9378b35751 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 22:33:23 -0700 Subject: [PATCH 13/24] fix(build-image-frontend): remove qemu step as not needed --- .github/workflows/build-image-frontend.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index 1b641d8c..f2d06c9d 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -63,10 +63,6 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - # Needed to create multi-platfrom image - - name: Set up QEMU - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta From feaf8939468766443a8bb191b1aa210bdf62517b Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 22:52:16 -0700 Subject: [PATCH 14/24] fix(fronend/Dockerfile): use environment dependent jq --- frontend/Dockerfile | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index babe5954..b4bc2932 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -23,9 +23,16 @@ FROM node:lts-alpine as build ARG NPM_BUILD_MODE=dockerbuild ENV JQ_VERSION=1.6 -RUN wget --no-check-certificate https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/jq-linux64 -O /tmp/jq-linux64 -RUN cp /tmp/jq-linux64 /usr/bin/jq -RUN chmod +x /usr/bin/jq +# Determine architecture and download the appropriate version of jq +RUN ARCH="$(uname -m)" && \ + case "${ARCH}" in \ + x86_64) JQ_BINARY="jq-linux64";; \ + aarch64) JQ_BINARY="jq-linux64";; \ + armhf) JQ_BINARY="jq-linux32";; \ + *) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \ + esac && \ + wget --no-check-certificate -O /usr/bin/jq "https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/${JQ_BINARY}" && \ + chmod +x /usr/bin/jq WORKDIR /app COPY . . From 81a8b3625ad0283db542a61ed688df2433978325 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 23:29:11 -0700 Subject: [PATCH 15/24] fix(helm-test): reuse default postgres setting during upgrade --- .github/workflows/helm-test.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/helm-test.yml b/.github/workflows/helm-test.yml index ed9f9d85..47996cb7 100644 --- a/.github/workflows/helm-test.yml +++ b/.github/workflows/helm-test.yml @@ -115,13 +115,14 @@ jobs: # Upgrade the released chart version with the locally available chart # default value for event_name != workflow_dispatch # Setting passwords during upgrade: - # - The postgresPassword/password will be set via postgres-init.yaml. - # - The dtr.idp.clients.edc.puris.secret is new and needs to be set during upgrade as not set in previous version + # - set existing secret to value currently defaulted + # - insert password to postgres directly due to empty default for reuse during upgrade + # https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases - name: Run helm upgrade run: | helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev - helm install puris tractusx-dev/puris --version ${{ github.event.inputs.upgrade_from || '1.0.0' }} + helm install puris tractusx-dev/puris --version ${{ github.event.inputs.upgrade_from || '1.0.0' }} --set postgresql.auth.existingSecret="secret-puris-postgres-init" helm dependency update charts/puris - helm upgrade puris charts/puris + helm upgrade puris charts/puris --set global.postgresql.auth.postgres=$(kubectl get secret -n default secret-puris-postgres-init -o jsonpath="{.data.password}" | base64 --decode) if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true' From 43bc953ea72345a3a8377f1e5718a9aabfe37196 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Wed, 22 May 2024 23:39:57 -0700 Subject: [PATCH 16/24] fix(frontend/Dockerfile): focus on arm and amd architecture correctly --- frontend/Dockerfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index b4bc2932..efea0506 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -25,12 +25,13 @@ ENV JQ_VERSION=1.6 # Determine architecture and download the appropriate version of jq RUN ARCH="$(uname -m)" && \ - case "${ARCH}" in \ - x86_64) JQ_BINARY="jq-linux64";; \ - aarch64) JQ_BINARY="jq-linux64";; \ - armhf) JQ_BINARY="jq-linux32";; \ - *) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \ - esac && \ + if [ "${ARCH}" = "x86_64" ]; then \ + JQ_BINARY="jq-linux-amd64"; \ + elif [ "${ARCH}" = "aarch64" ]; then \ + JQ_BINARY="jq-linux-arm64"; \ + else \ + echo "Unsupported architecture: ${ARCH}" && exit 1; \ + fi && \ wget --no-check-certificate -O /usr/bin/jq "https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/${JQ_BINARY}" && \ chmod +x /usr/bin/jq From 233de1bbbbf280b72e8d2211647f5ebce2e4663d Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 00:08:08 -0700 Subject: [PATCH 17/24] fix(frontend/Dockerfile): increase jq version so that the download file names are correct --- frontend/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index efea0506..b2ec3f2d 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -21,7 +21,7 @@ FROM node:lts-alpine as build ARG NPM_BUILD_MODE=dockerbuild -ENV JQ_VERSION=1.6 +ENV JQ_VERSION=1.7.1 # Determine architecture and download the appropriate version of jq RUN ARCH="$(uname -m)" && \ From b3de8dbe2fdb2b00ab81c0775c9c75851e18567e Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 02:42:28 -0700 Subject: [PATCH 18/24] feat(frontend/Dockerfile): remove jq and use prebuilt workflow in ci --- .github/workflows/build-image-frontend.yml | 20 +++++++++- frontend/Dockerfile | 15 ------- frontend/Dockerfile.prebuilt | 46 ++++++++++++++++++++++ 3 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 frontend/Dockerfile.prebuilt diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index f2d06c9d..773beaaf 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -51,6 +51,24 @@ jobs: - name: Checkout uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - name: Setup Node + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: 20 + registry-url: https://registry.npmjs.org/ + + - name: Get npm version + id: npm-tag + uses: martinbeentjes/npm-get-version-action@3cf273023a0dda27efcd3164bdfb51908dd46a5b # v1.3.1 + + - name: Install Dependencies + run: npm install + + #substring about license + + - name: Build for Docker + run: npm run dockerbuild + # Copy legal information from root dir to frontend dir for publishing - name: Copy and paste legal information run: | @@ -90,7 +108,7 @@ jobs: uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: ./frontend - file: ./frontend/Dockerfile + file: ./frontend/Dockerfile.prebuilt platforms: linux/amd64, linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} diff --git a/frontend/Dockerfile b/frontend/Dockerfile index b2ec3f2d..2537c292 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -21,25 +21,10 @@ FROM node:lts-alpine as build ARG NPM_BUILD_MODE=dockerbuild -ENV JQ_VERSION=1.7.1 - -# Determine architecture and download the appropriate version of jq -RUN ARCH="$(uname -m)" && \ - if [ "${ARCH}" = "x86_64" ]; then \ - JQ_BINARY="jq-linux-amd64"; \ - elif [ "${ARCH}" = "aarch64" ]; then \ - JQ_BINARY="jq-linux-arm64"; \ - else \ - echo "Unsupported architecture: ${ARCH}" && exit 1; \ - fi && \ - wget --no-check-certificate -O /usr/bin/jq "https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/${JQ_BINARY}" && \ - chmod +x /usr/bin/jq WORKDIR /app COPY . . -RUN jq 'to_entries | map_values({ (.key) : ("$" + .key) }) | reduce .[] as $item ({}; . + $item)' ./src/config.json > ./src/config.tmp.json && mv ./src/config.tmp.json ./src/config.json - RUN npm install && npm run ${NPM_BUILD_MODE} RUN chmod -R 777 /app/dist diff --git a/frontend/Dockerfile.prebuilt b/frontend/Dockerfile.prebuilt new file mode 100644 index 00000000..a96abbd1 --- /dev/null +++ b/frontend/Dockerfile.prebuilt @@ -0,0 +1,46 @@ +# +# Copyright (c) 2022,2024 Volkswagen AG +# Copyright (c) 2022,2024 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) +# Copyright (c) 2022,2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# uses 101 restricted user +FROM nginxinc/nginx-unprivileged:alpine +# Copy Legal information for distributions, the star ones are copied by workflow +COPY DOCKER_NOTICE.md README.md NOTICE.md* SECURITY.md* LICENSE* DEPENDENCIES* /app/dist/ + +# commly it would be .../html/js/.*js, but due to the project structure the JS files are in .../html/assets +ENV JSFOLDER=/usr/share/nginx/html/assets/*.js + +# use root user to install moreutils for sponge in start-nginx to substring env workaround +USER root + +COPY ./nginx.conf /etc/nginx/nginx.conf +RUN chmod 777 /etc/nginx/nginx.conf +COPY ./start-nginx.sh /usr/bin/start-nginx.sh + +# use non-root user +USER 101 + +HEALTHCHECK --interval=30s --timeout=3s CMD wget -O /dev/null http://localhost:8080 || exit 1 + +WORKDIR /usr/share/nginx/html +COPY /app/dist . +ENTRYPOINT [ "start-nginx.sh" ] +# nginx exposes at port 80 +# nginx-unpriviledged exposes at port 8080 From 56c6cd0c43168f154d8a2073748bef73fb9a993a Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 02:47:14 -0700 Subject: [PATCH 19/24] fix(build-image-frontend): set working directory for npm tasks --- .github/workflows/build-image-frontend.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index 773beaaf..27597599 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -62,11 +62,13 @@ jobs: uses: martinbeentjes/npm-get-version-action@3cf273023a0dda27efcd3164bdfb51908dd46a5b # v1.3.1 - name: Install Dependencies + working-directory: ./frontend run: npm install #substring about license - name: Build for Docker + working-directory: ./frontend run: npm run dockerbuild # Copy legal information from root dir to frontend dir for publishing From 8ecb684acdf02f1dd1c9e3dd830da8630a4e2e89 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 02:53:00 -0700 Subject: [PATCH 20/24] fix(build-image-frontend): use relative path for copy of all files --- frontend/Dockerfile.prebuilt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/Dockerfile.prebuilt b/frontend/Dockerfile.prebuilt index a96abbd1..6bb556fb 100644 --- a/frontend/Dockerfile.prebuilt +++ b/frontend/Dockerfile.prebuilt @@ -40,7 +40,7 @@ USER 101 HEALTHCHECK --interval=30s --timeout=3s CMD wget -O /dev/null http://localhost:8080 || exit 1 WORKDIR /usr/share/nginx/html -COPY /app/dist . +COPY ./app/dist . ENTRYPOINT [ "start-nginx.sh" ] # nginx exposes at port 80 # nginx-unpriviledged exposes at port 8080 From 7c6cf945619d22691178c4f1d3eb0076bf81073a Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 03:07:25 -0700 Subject: [PATCH 21/24] fix(Dockerfile.prebuilt): copy from ./dist, not ./app/dist --- frontend/Dockerfile.prebuilt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/Dockerfile.prebuilt b/frontend/Dockerfile.prebuilt index 6bb556fb..6dfcc5d5 100644 --- a/frontend/Dockerfile.prebuilt +++ b/frontend/Dockerfile.prebuilt @@ -22,7 +22,7 @@ # uses 101 restricted user FROM nginxinc/nginx-unprivileged:alpine # Copy Legal information for distributions, the star ones are copied by workflow -COPY DOCKER_NOTICE.md README.md NOTICE.md* SECURITY.md* LICENSE* DEPENDENCIES* /app/dist/ +COPY DOCKER_NOTICE.md README.md NOTICE.md* SECURITY.md* LICENSE* DEPENDENCIES* /dist/ # commly it would be .../html/js/.*js, but due to the project structure the JS files are in .../html/assets ENV JSFOLDER=/usr/share/nginx/html/assets/*.js @@ -40,7 +40,7 @@ USER 101 HEALTHCHECK --interval=30s --timeout=3s CMD wget -O /dev/null http://localhost:8080 || exit 1 WORKDIR /usr/share/nginx/html -COPY ./app/dist . +COPY ./dist . ENTRYPOINT [ "start-nginx.sh" ] # nginx exposes at port 80 # nginx-unpriviledged exposes at port 8080 From f84566ff1868ed8483647043b7f9c0bdb4a40b75 Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 03:35:00 -0700 Subject: [PATCH 22/24] feat: add replacement script for legal information --- .github/workflows/build-image-frontend.yml | 3 + frontend/package.json | 82 +++++++++++----------- frontend/scripts/legal-notice.sh | 79 +++++++++++++++++++++ frontend/src/assets/aboutPage.json | 12 ++-- 4 files changed, 130 insertions(+), 46 deletions(-) create mode 100644 frontend/scripts/legal-notice.sh diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index 27597599..74c83898 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -66,6 +66,9 @@ jobs: run: npm install #substring about license + - name: Update legal notice + working-directory: ./frontend + run: bash ./scripts/legal-notice.sh - name: Build for Docker working-directory: ./frontend diff --git a/frontend/package.json b/frontend/package.json index e475fcbf..390d9cc5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,42 +1,44 @@ { - "name": "react-frontend", - "version": "1.0.0", - "type": "module", - "scripts": { - "dev": "vite --host", - "dockerbuild": "vite build --mode dockerbuild", - "build": "tsc && vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "local": "vite build --mode minikube", - "develop": "vite build --mode dev", - "integration": "vite build --mode int", - "beta": "vite build --mode beta", - "preview": "vite preview" - }, - "dependencies": { - "@catena-x/portal-shared-components": "^2.1.31", - "@mui/icons-material": "^5.14.12", - "@mui/material": "^5.14.12", - "keycloak-js": "^23.0.5", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.21.2" - }, - "devDependencies": { - "@types/node": "^20.8.3", - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "buffer": "^6.0.3", - "eslint": "^8.55.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "typescript": "^5.2.2", - "vite": "^5.0.8" - } + "name": "puris-frontend", + "description": "Puris frontend", + "license": "Apache-2.0", + "version": "2.0.0", + "type": "module", + "scripts": { + "dev": "vite --host", + "dockerbuild": "vite build --mode dockerbuild", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "local": "vite build --mode minikube", + "develop": "vite build --mode dev", + "integration": "vite build --mode int", + "beta": "vite build --mode beta", + "preview": "vite preview" + }, + "dependencies": { + "@catena-x/portal-shared-components": "^2.1.31", + "@mui/icons-material": "^5.14.12", + "@mui/material": "^5.14.12", + "keycloak-js": "^23.0.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.21.2" + }, + "devDependencies": { + "@types/node": "^20.8.3", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.16", + "buffer": "^6.0.3", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "postcss": "^8.4.33", + "tailwindcss": "^3.4.1", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } } diff --git a/frontend/scripts/legal-notice.sh b/frontend/scripts/legal-notice.sh new file mode 100644 index 00000000..90a4528c --- /dev/null +++ b/frontend/scripts/legal-notice.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# +# Copyright (c) 2023,2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Define placeholders from legal-notice.json +name_anchor='NAME_PLACEHOLDER' +license_anchor='LICENSE_PLACEHOLDER' +commit_id_anchor='COMMIT_ID_PLACEHOLDER' +server_url_anchor='SERVER_URL_PLACEHOLDER' +repository_anchor='REPOSITORY_PLACEHOLDER' +ref_anchor='REF_PLACEHOLDER' + +# Read values from package.json using jq +name=$(jq -r '.name' package.json) +license=$(jq -r '.license' package.json) + +# Get commit id +commit_id=$(git rev-parse HEAD) + +# Get GitHub context from environment variables +server_url=$SERVER_URL +repository=$REPOSITORY +ref=$REF_NAME + +# Read legal-notice.json as reference +legal_notice_reference=$(cat src/assets/aboutPage.json) + +# Function to check if placeholder substitution was successful +check_substitution() { + if [[ $1 = *"$2"* ]]; then + echo "Error: Failed to replace $2" + exit 1 + fi +} + +# Replace placeholders with actual values +legal_notice_name="${legal_notice_reference/$name_anchor/$name}" +check_substitution "$legal_notice_name" "$name_anchor" +echo "Replaced name" + +legal_notice_license="${legal_notice_name/$license_anchor/$license}" +check_substitution "$legal_notice_license" "$license_anchor" +echo "Replaced license" + +legal_notice_commit="${legal_notice_license/$commit_id_anchor/$commit_id}" +check_substitution "$legal_notice_commit" "$commit_id_anchor" +echo "Replaced commit ID" + +legal_notice_server_url="${legal_notice_commit//$server_url_anchor/$server_url}" +check_substitution "$legal_notice_server_url" "$server_url_anchor" +echo "Replaced server URL" + +legal_notice_repository="${legal_notice_server_url//$repository_anchor/$repository}" +check_substitution "$legal_notice_repository" "$repository_anchor" +echo "Replaced repository" + +legal_notice_ref="${legal_notice_repository//$ref_anchor/$ref}" +check_substitution "$legal_notice_ref" "$ref_anchor" +echo "Replaced ref name" + +# Write the final result to legal-notice.json +echo "$legal_notice_ref" > src/assets/aboutPage.json diff --git a/frontend/src/assets/aboutPage.json b/frontend/src/assets/aboutPage.json index 1c59a668..add93179 100644 --- a/frontend/src/assets/aboutPage.json +++ b/frontend/src/assets/aboutPage.json @@ -2,29 +2,29 @@ { "header": "Product Name", "body": "PURIS", - "link": "https://github.com/eclipse-tractusx/puris" + "link": "SERVER_URL_PLACEHOLDER/REPOSITORY_PLACEHOLDER" }, { "header": "License", - "body": "Apache-2.0" + "body": "LICENSE_PLACEHOLDER" }, { "header": "License Path", "body": "License URL", - "link": "https://github.com/eclipse-tractusx/puris/blob/main/LICENSE" + "link": "SERVER_URL_PLACEHOLDER/REPOSITORY_PLACEHOLDER/blob/REF_PLACEHOLDER/LICENSE" }, { "header": "NOTICE", "body": "Notice.md URL", - "link": "https://github.com/eclipse-tractusx/puris/blob/main/NOTICE.md" + "link": "SERVER_URL_PLACEHOLDER/REPOSITORY_PLACEHOLDER/blob/REF_PLACEHOLDER/NOTICE.md" }, { "header": "Source URL", "body": "Eclipse-Tractus-X", - "link": "https://github.com/eclipse-tractusx/puris" + "link": "SERVER_URL_PLACEHOLDER/REPOSITORY_PLACEHOLDER/blob/REF_PLACEHOLDER/" }, { "header": "Commit ID", - "body": "233974ce923b4a8523a029b4d6a6fc6281af3cb2" + "body": "COMMIT_ID_PLACEHOLDER" } ] From 0e8735bcc176a84b94f7ccdb21962dc18aa8a01c Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 05:05:14 -0700 Subject: [PATCH 23/24] chore: corrected license header for new place and enhanced comment --- .github/workflows/build-image-frontend.yml | 2 +- frontend/Dockerfile.prebuilt | 6 +++--- frontend/scripts/legal-notice.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-image-frontend.yml b/.github/workflows/build-image-frontend.yml index 74c83898..5edfc418 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -65,7 +65,7 @@ jobs: working-directory: ./frontend run: npm install - #substring about license + # Replace "about license" information - name: Update legal notice working-directory: ./frontend run: bash ./scripts/legal-notice.sh diff --git a/frontend/Dockerfile.prebuilt b/frontend/Dockerfile.prebuilt index 6dfcc5d5..cae8f5f5 100644 --- a/frontend/Dockerfile.prebuilt +++ b/frontend/Dockerfile.prebuilt @@ -1,7 +1,7 @@ # -# Copyright (c) 2022,2024 Volkswagen AG -# Copyright (c) 2022,2024 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) -# Copyright (c) 2022,2024 Contributors to the Eclipse Foundation +# Copyright (c) 2024 Volkswagen AG +# Copyright (c) 2024 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer ISST) +# Copyright (c) 2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/frontend/scripts/legal-notice.sh b/frontend/scripts/legal-notice.sh index 90a4528c..fcb0a083 100644 --- a/frontend/scripts/legal-notice.sh +++ b/frontend/scripts/legal-notice.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# Copyright (c) 2023,2024 Contributors to the Eclipse Foundation +# Copyright (c) 2024 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. From 7e1b7079d0028a7471cf1100696fd8892767322b Mon Sep 17 00:00:00 2001 From: --show-origin Date: Thu, 23 May 2024 05:23:53 -0700 Subject: [PATCH 24/24] refactor(helm-test): remove default password as taken from existing secret --- .github/workflows/helm-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helm-test.yml b/.github/workflows/helm-test.yml index 47996cb7..69115255 100644 --- a/.github/workflows/helm-test.yml +++ b/.github/workflows/helm-test.yml @@ -124,5 +124,5 @@ jobs: helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev helm install puris tractusx-dev/puris --version ${{ github.event.inputs.upgrade_from || '1.0.0' }} --set postgresql.auth.existingSecret="secret-puris-postgres-init" helm dependency update charts/puris - helm upgrade puris charts/puris --set global.postgresql.auth.postgres=$(kubectl get secret -n default secret-puris-postgres-init -o jsonpath="{.data.password}" | base64 --decode) + helm upgrade puris charts/puris if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true'