diff --git a/.docs/images/coverage.svg b/.docs/images/coverage.svg new file mode 100644 index 0000000000000000000000000000000000000000..8d22334eb1c46b39dbdbeb37ff93c218c188173d --- /dev/null +++ b/.docs/images/coverage.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="124" height="20"> + <linearGradient id="b" x2="0" y2="100%"> + <stop offset="0" stop-color="#bbb" stop-opacity=".1"/> + <stop offset="1" stop-opacity=".1"/> + </linearGradient> + <mask id="anybadge_1"> + <rect width="124" height="20" rx="3" fill="#fff"/> + </mask> + <g mask="url(#anybadge_1)"> + <path fill="#555" d="M0 0h65v20H0z"/> + <path fill="#A9A9A9" d="M65 0h59v20H65z"/> + <path fill="url(#b)" d="M0 0h124v20H0z"/> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> + <text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text> + <text x="32.5" y="14">coverage</text> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> + <text x="95.5" y="15" fill="#010101" fill-opacity=".3">unknown</text> + <text x="94.5" y="14">unknown</text> + </g> +</svg> + diff --git a/.docs/images/pipeline.svg b/.docs/images/pipeline.svg new file mode 100644 index 0000000000000000000000000000000000000000..17f94998918fcb601111626a5436107abeaaa18f --- /dev/null +++ b/.docs/images/pipeline.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="116" height="20"> + <linearGradient id="b" x2="0" y2="100%"> + <stop offset="0" stop-color="#bbb" stop-opacity=".1"/> + <stop offset="1" stop-opacity=".1"/> + </linearGradient> + <mask id="anybadge_1"> + <rect width="116" height="20" rx="3" fill="#fff"/> + </mask> + <g mask="url(#anybadge_1)"> + <path fill="#555" d="M0 0h57v20H0z"/> + <path fill="#A9A9A9" d="M57 0h59v20H57z"/> + <path fill="url(#b)" d="M0 0h116v20H0z"/> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> + <text x="29.5" y="15" fill="#010101" fill-opacity=".3">pipeline</text> + <text x="28.5" y="14">pipeline</text> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> + <text x="87.5" y="15" fill="#010101" fill-opacity=".3">unknown</text> + <text x="86.5" y="14">unknown</text> + </g> +</svg> + diff --git a/.docs/index.md b/.docs/index.md index aea045c43c69da1013fc7884ccaa967ea743a95a..9142377a93fe205391fda8771f6697df3260272d 100644 --- a/.docs/index.md +++ b/.docs/index.md @@ -2,8 +2,8 @@ author: Martin Weise --- -[](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } -[](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } +[](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } +[](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } [](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } [](https://hub.docker.com/u/dbrepo){ tabindex=-1 } [](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services){ tabindex=-1 } @@ -32,11 +32,11 @@ Installing DBRepo is very easy or - [TU Wien](https://dbrepo1.ec.tuwien.ac.at) - TU Darmstadt -- [Universität Hamburg](https://dbrepo.fdm.uni-hamburg.de/) +- [Universität Hamburg](https://dbrepo.fdm.uni-hamburg.de/) - [Universiti Teknikal Malaysia Melaka](https://dbrepo.utem.edu.my/) - University of the Philippines - [Universiti Sains Malaysia](https://dbrepo.wrfexpress.com/) -## How can I try DBRepo +## How can I try DBRepo? [:fontawesome-solid-flask: Demonstration Instance](https://test.dbrepo.tuwien.ac.at){ .md-button .md-button--primary target="_blank" } \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4fe2c739a640b791a8d11019144a6db9df598048..0ff50da0c256724747f4f7e1c90b91d3b3fa0f1d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,9 +35,6 @@ stages: build-metadata-service: image: maven:3-openjdk-17 stage: build - except: - refs: - - /^release-.*/ script: - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests" # Compiled classes are needed for SonarQube in later stages @@ -56,9 +53,6 @@ build-metadata-service: build-analyse-service: image: docker.io/python:3.11-alpine stage: build - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" script: @@ -68,9 +62,6 @@ build-analyse-service: build-data-db-sidecar: image: docker.io/python:3.11-alpine stage: build - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./dbrepo-data-db/sidecar/Pipfile" script: @@ -80,9 +71,6 @@ build-data-db-sidecar: build-lib: image: docker.io/python:3.11-alpine stage: build - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./lib/python/Pipfile" script: @@ -92,9 +80,6 @@ build-lib: build-data-service: image: maven:3-openjdk-17 stage: build - except: - refs: - - /^release-.*/ needs: - build-metadata-service dependencies: @@ -114,18 +99,12 @@ build-data-service: build-ui: image: oven/bun:1.0.26-alpine stage: build - except: - refs: - - /^release-.*/ script: - "cd ./dbrepo-ui && bun install && bun run build" build-search-service: image: docker.io/python:3.11-alpine stage: build - except: - refs: - - /^release-.*/ script: - "pip install pipenv" - "cd dbrepo-search-service && pipenv install --system --deploy" @@ -133,9 +112,6 @@ build-search-service: build-docker: image: docker.io/docker:24-dind stage: build - except: - refs: - - /^release-.*/ before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL script: @@ -146,9 +122,6 @@ build-docker: build-helm: image: docker.io/docker:24-dind stage: build - except: - refs: - - /^release-.*/ before_script: - echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL @@ -205,9 +178,6 @@ verify-install-script: lint-helm-chart: image: docker.io/alpine:3.20 stage: lint - except: - refs: - - /^release-.*/ needs: - build-metadata-service dependencies: @@ -220,9 +190,6 @@ lint-helm-chart: test-metadata-service: image: maven:3-openjdk-17 stage: test - except: - refs: - - /^release-.*/ needs: - build-metadata-service dependencies: @@ -243,9 +210,6 @@ test-metadata-service: test-data-service: image: maven:3-openjdk-17 stage: test - except: - refs: - - /^release-.*/ needs: - build-data-service dependencies: @@ -266,9 +230,6 @@ test-data-service: test-analyse-service: image: docker.io/python:3.11-alpine stage: test - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" needs: @@ -293,9 +254,6 @@ test-analyse-service: test-search-service: image: docker.io/python:3.11-alpine stage: test - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./dbrepo-search-service/Pipfile" needs: @@ -320,9 +278,6 @@ test-search-service: test-lib: image: docker.io/python:3.11-alpine stage: test - except: - refs: - - /^release-.*/ variables: PIPENV_PIPFILE: "./lib/python/Pipfile" needs: @@ -404,9 +359,6 @@ release-helm: refs: - /^release-.*/ when: manual - except: - refs: - - release-latest before_script: - "docker logout ${CI_REGISTRY_URL}" - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}" @@ -429,7 +381,7 @@ release-docs: refs: - /^release-.*/ before_script: - - "apk add --update alpine-sdk bash sed wget openssh" + - "apk add --update alpine-sdk bash sed wget openssh jq curl" - "pip install pipenv" - "pip install -r ./requirements.txt" - "mkdir -p ./final/${APP_VERSION}/rest" @@ -441,6 +393,7 @@ release-docs: - "cp .docs/.swagger/custom.css ./final/${APP_VERSION}/rest/custom.css" # swagger - "cp -r ./site/* ./final/${APP_VERSION}" # mkdocs - "cp .docker/dist.tar.gz ./final/${APP_VERSION}/dist.tar.gz" # dist + - "bash ./.gitlab/gen-badge.sh" - eval $(ssh-agent -s) - "mkdir -p /root/.ssh" - echo "$CI_KEY_PRIVATE" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa @@ -468,3 +421,15 @@ release-libs: script: - bash ./lib/python/package.sh - bash ./lib/python/release.sh + +release-gitlab: + stage: release + image: docker.io/alpine:3.18 + when: manual + only: + refs: + - /^release-.*/ + before_script: + - "apk add bash curl" + script: + - bash -ec "curl -fsSL -X POST -H \"Content-Type: application/json\" -H \"PRIVATE-TOKEN: ${CI_TOKEN}\" --data '{\"name\": \"v${APP_VERSION}\", \"tag_name\": \"v${APP_VERSION}\", \"ref\": \"${CI_COMMIT_BRANCH}\", \"description\": \"Automated release from CI/CD\"}' https://gitlab.phaidra.org/api/v4/projects/450/releases" \ No newline at end of file diff --git a/.gitlab/gen-badge.sh b/.gitlab/gen-badge.sh new file mode 100644 index 0000000000000000000000000000000000000000..5ef15a3b6cafb7cf5324a8cbfed3383dd80aa4cf --- /dev/null +++ b/.gitlab/gen-badge.sh @@ -0,0 +1,11 @@ +#!/bin/bash +GITLAB_URL="https://gitlab.phaidra.org" +# if we reached this script, all the tests have passed +anybadge --label pipeline --value "passed" failed=red passed=green canceled=darkgray > "./final/${APP_VERSION}/images/pipeline.svg" +PIPELINE_COVERAGE=$(curl -fsSL -H "PRIVATE-TOKEN: ${CI_TOKEN}" "${GITLAB_URL}/api/v4/projects/450/pipelines/latest?ref=${CI_COMMIT_BRANCH}" | jq --raw-output .coverage) +echo "[INFO] pipeline coverage: ${PIPELINE_COVERAGE}" +if [ "${PIPELINE_COVERAGE}" != "null" ]; then + anybadge --label coverage --value "${PIPELINE_COVERAGE}" coverage > "./final/${APP_VERSION}/images/coverage.svg" +else + echo "[WARNING] Skipping badge generation, displaying default badge text: unknown" +fi diff --git a/helm/dbrepo/Chart.lock b/helm/dbrepo/Chart.lock index 842d2c5ef663269a4574172661aba8d98d1b55f8..a7db225a0715d49501237bdba216941faed2d41c 100644 --- a/helm/dbrepo/Chart.lock +++ b/helm/dbrepo/Chart.lock @@ -29,5 +29,5 @@ dependencies: - name: prometheus repository: https://charts.bitnami.com/bitnami version: 1.3.22 -digest: sha256:8f67589f08da255fba018e5a8eec1c0ae736a5ee775d958eee9b45a5bda57f0a -generated: "2024-09-27T09:21:08.969905261+02:00" +digest: sha256:5d2c18d8f42cdade4d83cc8906d8b3f31104fb7bb46a6b682348fceaa09258b5 +generated: "2024-09-28T10:34:39.251599835+02:00" diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 53d920f47e1462e5203dc56222b25263bc928f8c..2065ce6ed992157bbd868698e4ca91525fbdb02b 100644 --- a/helm/dbrepo/README.md +++ b/helm/dbrepo/README.md @@ -1,16 +1,17 @@ # DBRepo Helm chart -[DBRepo](https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.4/) is a database repository system that +[DBRepo](https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.6/) is a database repository system that allows researchers to ingest data into a central, versioned repository through common interfaces. ## TL;DR Download the -sample [`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.4.4/helm-charts/dbrepo/values.yaml?inline=true) +sample [ +`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.4.6/helm-charts/dbrepo/values.yaml?inline=true) for your deployment and update the variables, especially `hostname`. ```bash -helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.4" +helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.6" ``` ## Prerequisites @@ -27,7 +28,7 @@ helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --valu To install the chart with the release name `my-release`: ```bash -helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.4" +helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.4.6" ``` The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the @@ -48,24 +49,23 @@ The command removes all the Kubernetes components associated with the chart and ### Global parameters | Name | Description | Value | -| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +|-------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------| | `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `auto` | | `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | ### Common parameters -| Name | Description | Value | -| --------------- | ---------------------------------- | --------------------- | -| `namespace` | The namespace to install the chart | `dbrepo` | -| `hostname` | The hostname. | `example.com` | -| `gateway` | The gateway endpoint. | `https://example.com` | -| `strategyType` | The image pull | `RollingUpdate` | -| `clusterDomain` | The cluster domain. | `cluster.local` | +| Name | Description | Value | +|-----------------|-----------------------|-----------------------| +| `hostname` | The hostname. | `example.com` | +| `gateway` | The gateway endpoint. | `https://example.com` | +| `strategyType` | The image pull | `RollingUpdate` | +| `clusterDomain` | The cluster domain. | `cluster.local` | ### Metadata Database | Name | Description | Value | -| ---------------------------------------- | ---------------------------------------------------------------- | ------------- | +|------------------------------------------|------------------------------------------------------------------|---------------| | `metadatadb.enabled` | Enable the Metadata Database. | `true` | | `metadatadb.host` | The hostname for the microservices. | `metadata-db` | | `metadatadb.rootUser.user` | The root username. | `root` | @@ -81,23 +81,22 @@ The command removes all the Kubernetes components associated with the chart and ### Auth Service | Name | Description | Value | -| -------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|----------------------------------|--------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `authservice.enabled` | Enable the Auth Service. | `true` | | `authservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `authservice.endpoint` | The hostname for the microservices. | `http://auth-service` | | `authservice.jwt.pubkey` | The JWT public key from the `dbrepo-client`. | `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB` | | `authservice.tls.enabled` | Enable TLS/SSL communication. Required for HTTPS. | `true` | | `authservice.tls.existingSecret` | The secret containing the `tls.crt`, `tls.key` and `ca.crt`. | `ingress-cert` | -| `authservice.metrics.enabled` | Enable the Prometheus metrics export sidecar container. | `false` | | `authservice.client.id` | The client id for the microservices. | `dbrepo-client` | | `authservice.client.secret` | The client secret for the microservices. | `MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG` | ### Data Database | Name | Description | Value | -| --------------------------------- | ----------------------------------------------------------- | ------------- | +|-----------------------------------|-------------------------------------------------------------|---------------| | `datadb.enabled` | Enable the Data Database. | `true` | -| `datadb.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | +| `datadb.database.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `datadb.auth.rootPassword` | The root user password. | `dbrepo` | | `datadb.auth.replicationUser` | The database replication user password | `replication` | | `datadb.auth.replicationPassword` | The database replication user password | `replication` | @@ -105,7 +104,7 @@ The command removes all the Kubernetes components associated with the chart and ### Search Database | Name | Description | Value | -| ---------------------- | ----------------------------------- | ----------- | +|------------------------|-------------------------------------|-------------| | `searchdb.enabled` | Enable the Data Database. | `true` | | `searchdb.host` | The hostname for the microservices. | `search-db` | | `searchdb.port` | The port for the microservices. | `9200` | @@ -114,14 +113,14 @@ The command removes all the Kubernetes components associated with the chart and ### Upload Service | Name | Description | Value | -| ---------------------------- | -------------------------- | ------ | +|------------------------------|----------------------------|--------| | `uploadservice.enabled` | Enable the Upload Service. | `true` | | `uploadservice.replicaCount` | The number of replicas. | `2` | ### Broker Service | Name | Description | Value | -| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +|-------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------| | `brokerservice.enabled` | Enable the Broker Service. | `true` | | `brokerservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `true` | | `brokerservice.endpoint` | The management api endpoint for the microservices. | `http://broker-service:15672` | @@ -144,7 +143,7 @@ The command removes all the Kubernetes components associated with the chart and ### Analyse Service | Name | Description | Value | -| ------------------------------------------------------------------ | ----------------------------------------------------------- | -------------------------------- | +|--------------------------------------------------------------------|-------------------------------------------------------------|----------------------------------| | `analyseservice.enabled` | Enable the Broker Service. | `true` | | `analyseservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `analyseservice.podSecurityContext.enabled` | Enable pods' Security Context | `true` | @@ -168,7 +167,7 @@ The command removes all the Kubernetes components associated with the chart and ### Metadata Service | Name | Description | Value | -| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------- | +|---------------------------------------------------------------------|------------------------------------------------------------------------------------|----------------------------------| | `metadataservice.enabled` | Enable the Broker Service. | `true` | | `metadataservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `metadataservice.podSecurityContext.enabled` | Enable pods' Security Context | `true` | @@ -206,7 +205,7 @@ The command removes all the Kubernetes components associated with the chart and ### Data Service | Name | Description | Value | -| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | +|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------| | `dataservice.enabled` | Enable the Broker Service. | `true` | | `dataservice.endpoint` | Absolute URL to the data service in the form of http://host:port | `http://data-service` | | `dataservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | @@ -244,7 +243,7 @@ The command removes all the Kubernetes components associated with the chart and ### Search Service | Name | Description | Value | -| ----------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------- | +|-------------------------------------------------------------------|--------------------------------------------------------------------|-------------------------| | `searchservice.enabled` | Enable the Broker Service. | `true` | | `searchservice.endpoint` | Absolute URL to the search service in the form of http://host:port | `http://search-service` | | `searchservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | @@ -267,7 +266,7 @@ The command removes all the Kubernetes components associated with the chart and ### Storage Service | Name | Description | Value | -| --------------------------------------------- | -------------------------------------------------------------------------------------- | ---------------- | +|-----------------------------------------------|----------------------------------------------------------------------------------------|------------------| | `storageservice.enabled` | Enable the Storage Service. | `true` | | `storageservice.mariadb.auth.rootPassword` | The user password for the root user. | `seaweedfsdb` | | `storageservice.filer.enabled` | Enable the storage service filer which is required for S3. | `true` | @@ -280,7 +279,7 @@ The command removes all the Kubernetes components associated with the chart and ### Identity Service | Name | Description | Value | -| -------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------- | +|----------------------------------------|---------------------------------------------------------------------------------------------------------------|-------------------| | `identityservice.enabled` | Enable the Identity Service. | `true` | | `identityservice.global.ldapDomain` | The LDAP domain name in domain "dbrepo.at" form or explicit in "dc=dbrepo,dc=at" form. | `dc=dbrepo,dc=at` | | `identityservice.global.adminUser` | The admin username that is used to bind. | `admin` | @@ -295,7 +294,7 @@ The command removes all the Kubernetes components associated with the chart and ### User Interface | Name | Description | Value | -| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | ----------------------- | +|--------------------------------------------------------|------------------------------------------------------------------------------------------------------|-------------------------| | `ui.enabled` | Enable the Broker Service. | `true` | | `ui.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `ui.podSecurityContext.enabled` | Enable pods' Security Context | `true` | @@ -329,10 +328,23 @@ The command removes all the Kubernetes components associated with the chart and | `ui.public.doi.endpoint` | The DOI proxy. | `https://doi.org` | | `ui.replicaCount` | The number of replicas. | `2` | +### Dashboard Service + +| Name | Description | Value | +|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------|--------| +| `dashboardservice.enabled` | Enable the Dashboard Service. | `true` | +| `dashboardservice.dashboardsProvider.enabled` | Enable the default dashboard provisioning provider to routinely import dashboards from /opt/bitnami/grafana/dashboards | `true` | + +### Metric Service + +| Name | Description | Value | +|--------------------|----------------------------|--------| +| `metricdb.enabled` | Enable the Metric Service. | `true` | + ### Ingress | Name | Description | Value | -| ------------------------ | --------------------------------------------------------------------------------------------------------------- | -------------- | +|--------------------------|-----------------------------------------------------------------------------------------------------------------|----------------| | `ingress.enabled` | Enable the ingress. | `false` | | `ingress.className` | The ingress class name. | `nginx` | | `ingress.tls.enabled` | Enable the ingress. | `true` | diff --git a/helm/dbrepo/charts/dbrepo-mariadb-galera-1.4.6.tgz b/helm/dbrepo/charts/dbrepo-mariadb-galera-1.4.6.tgz index 986e13f7c5261495cfd9ea53ace6e263b0e3c2fa..e9b82510c31978ea91ceaea73ae677f3ac0bf206 100644 Binary files a/helm/dbrepo/charts/dbrepo-mariadb-galera-1.4.6.tgz and b/helm/dbrepo/charts/dbrepo-mariadb-galera-1.4.6.tgz differ diff --git a/helm/dbrepo/values.schema.json b/helm/dbrepo/values.schema.json index c988efbfbe6678651fca94cf33dc7b5fae30a3ee..776f8ac99e14833f9a5f9f07aa357d1e938f6e8e 100644 --- a/helm/dbrepo/values.schema.json +++ b/helm/dbrepo/values.schema.json @@ -356,6 +356,14 @@ }, "type": "object" }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, "persistence": { "properties": { "enabled": { @@ -398,21 +406,87 @@ }, "dashboardservice": { "properties": { + "dashboardsProvider": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "datasources": { + "properties": { + "secretDefinition": { + "properties": { + "apiVersion": { + "type": "integer" + }, + "datasources": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, "enabled": { "type": "boolean" }, - "envFromSecret": { - "type": "string" - }, "fullnameOverride": { "type": "string" }, + "grafana": { + "properties": { + "extraConfigmaps": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraEnvVarsSecret": { + "type": "string" + } + }, + "type": "object" + }, "ldap": { "properties": { + "allowSignUp": { + "type": "boolean" + }, "enabled": { "type": "boolean" }, - "existingSecret": { + "secretName": { "type": "string" } }, @@ -437,35 +511,40 @@ }, "type": "object" }, - "enabled": { - "type": "boolean" - }, - "fullnameOverride": { - "type": "string" - }, - "image": { + "database": { "properties": { - "debug": { - "type": "boolean" + "image": { + "properties": { + "debug": { + "type": "boolean" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "secondary": { + "properties": { + "replicaCount": { + "type": "integer" + } + }, + "type": "object" } }, "type": "object" }, - "metrics": { - "properties": { - "enabled": { - "type": "boolean" - } - }, - "type": "object" + "enabled": { + "type": "boolean" }, - "secondary": { - "properties": { - "replicaCount": { - "type": "integer" - } - }, - "type": "object" + "fullnameOverride": { + "type": "string" } }, "type": "object" @@ -1114,6 +1193,79 @@ }, "type": "object" }, + "metricdb": { + "properties": { + "alertmanager": { + "properties": { + "service": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "fullnameOverride": { + "type": "string" + }, + "server": { + "properties": { + "extraScrapeConfigs": { + "items": { + "properties": { + "job_name": { + "type": "string" + }, + "metrics_path": { + "type": "string" + }, + "static_configs": { + "items": { + "properties": { + "targets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "service": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, "searchdb": { "properties": { "clusterName": { @@ -1332,6 +1484,14 @@ "properties": { "enabled": { "type": "boolean" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 845465ac169763f9bb9edb2dd75fcf546fd304d0..82d75c66c7ccdac892c8f7a3e68df3af328e295e 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -812,11 +812,13 @@ dashboardservice: grafana: ## @skip dashboardservice.grafana.extraEnvVarsSecret extraEnvVarsSecret: dashboard-service-secret + ## @skip dashboardservice.grafana.extraConfigmaps extraConfigmaps: - name: dashboard-service-config mountPath: /opt/bitnami/grafana/dashboards readOnly: true datasources: + ## @skip dashboardservice.datasources.secretDefinition secretDefinition: apiVersion: 1 datasources: @@ -825,6 +827,7 @@ dashboardservice: type: "prometheus" url: "http://metric-db-server" dashboardsProvider: + ## @param dashboardservice.dashboardsProvider.enabled Enable the default dashboard provisioning provider to routinely import dashboards from /opt/bitnami/grafana/dashboards enabled: true ## @section Metric Service diff --git a/lib/python/pyproject.toml b/lib/python/pyproject.toml index 8c89061ce82d02b398c4c45f14a5b43efa64ac15..2989dd3874513cf5b77dd910c3cf67a33e543c16 100644 --- a/lib/python/pyproject.toml +++ b/lib/python/pyproject.toml @@ -34,7 +34,7 @@ requires = [ build-backend = "setuptools.build_meta" [project.urls] -Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.4/" -Documentation = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.4/python/" +Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.6/" +Documentation = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.4.6/python/" Issues = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues" Source = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/" \ No newline at end of file diff --git a/make/dev.mk b/make/dev.mk index b5f7871441aba3bd20806a864d8a8c24d3fb4719..20ff5a0cf0a462141ba55b12bc8a6789da998aef 100644 --- a/make/dev.mk +++ b/make/dev.mk @@ -19,8 +19,8 @@ package-config: ## Package the config files cp ./dbrepo-broker-service/advanced.config ./.docker/config cp ./dbrepo-dashboard-service/grafana.ini ./.docker/config cp ./dbrepo-dashboard-service/ldap.toml ./.docker/config - cp ./dbrepo-dashboard-service/dashboards ./.docker/config - cp ./dbrepo-dashboard-service/provisioning ./.docker/config + cp -r ./dbrepo-dashboard-service/dashboards ./.docker/config + cp -r ./dbrepo-dashboard-service/provisioning ./.docker/config cp ./dbrepo-gateway-service/dbrepo.conf ./.docker/config cp ./dbrepo-metric-db/prometheus.yml ./.docker/config cp ./dbrepo-storage-service/s3_config.json ./.docker/config diff --git a/requirements.txt b/requirements.txt index 6442ea60759d27863ddf1879ab4e6be9151a5901..659eb487ea25bbc048959ecd8755ea65bfa84f06 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,5 @@ requests==2.31.0 pika==1.3.2 pydantic==2.6.4 tuspy==1.0.3 -mike==2.0.0 \ No newline at end of file +mike==2.0.0 +anybadge==1.14.0 \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index 45670cc4659d29f9badf6419ed16dbe2cceba60f..38f25dba31871125cd8feb32fce876a3f681b0a5 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,7 +2,7 @@ sonar.projectKey=fair-data-austria-db-repository_fda-services_a57fa043-ab99-4cdd-a721-162d9a916d77 sonar.host.url=https://s34.datalab.tuwien.ac.at # project -sonar.projectVersion=1.4.4 +sonar.projectVersion=1.4.6 # general sonar.qualitygate.wait=true sonar.projectCreation.mainBranchName=master