diff --git a/.github/workflows/build-image-backend.yml b/.github/workflows/build-image-backend.yml index bd40f1d6..04c271e5 100644 --- a/.github/workflows/build-image-backend.yml +++ b/.github/workflows/build-image-backend.yml @@ -51,6 +51,23 @@ 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 + + # Needed to create multi-platfrom image + - 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 @@ -79,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 fc8f6b85..5edfc418 100644 --- a/.github/workflows/build-image-frontend.yml +++ b/.github/workflows/build-image-frontend.yml @@ -51,6 +51,41 @@ 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 + working-directory: ./frontend + run: npm install + + # Replace "about license" information + - name: Update legal notice + working-directory: ./frontend + run: bash ./scripts/legal-notice.sh + + - name: Build for Docker + working-directory: ./frontend + run: npm run dockerbuild + + # 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 + + # Needed to create multi-platfrom image + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + # Create SemVer or ref tags dependent of trigger event - name: Docker meta id: meta @@ -78,7 +113,8 @@ 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 }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/helm-test.yml b/.github/workflows/helm-test.yml index 0a8eb68d..69115255 100644 --- a/.github/workflows/helm-test.yml +++ b/.github/workflows/helm-test.yml @@ -112,21 +112,17 @@ 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: - # - 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 --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/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/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/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 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/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/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/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 e36d3220..ef810be3 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -1,20 +1,36 @@ # 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 **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,186 @@ $ 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.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 | `[]` | 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 | `""` | 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 | `""` | 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-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. | +| 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.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 | +| 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 | `[]` | 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.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 | +| 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-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. | +| 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.service | object | `{"ports":{"postgresql":5432}}` | Possibility to override the name nameOverride: "" | +| 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/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..b08ed386 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 "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 "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 "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 "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,18 +109,31 @@ 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 }} {{- 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 1082e98f..2e1156ec 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 }}" @@ -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 @@ -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/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..46e87bd6 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 }}" @@ -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/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..cc490573 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: "" @@ -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 @@ -89,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 @@ -186,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 @@ -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 @@ -305,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: {} @@ -359,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" @@ -373,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" @@ -469,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 @@ -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. @@ -498,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' diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 8c4ab0e2..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 @@ -60,7 +57,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 +84,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. 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/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: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index c90c874d..2537c292 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -21,27 +21,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 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 -# 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/Dockerfile.prebuilt b/frontend/Dockerfile.prebuilt new file mode 100644 index 00000000..cae8f5f5 --- /dev/null +++ b/frontend/Dockerfile.prebuilt @@ -0,0 +1,46 @@ +# +# 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. +# +# 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* /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 ./dist . +ENTRYPOINT [ "start-nginx.sh" ] +# nginx exposes at port 80 +# nginx-unpriviledged exposes at port 8080 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) 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..fcb0a083 --- /dev/null +++ b/frontend/scripts/legal-notice.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# +# Copyright (c) 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" } ]