base-repo

Basic repository service used as central component of the KIT DM 2.0 infrastructure.

https://github.com/kit-data-manager/base-repo

Science Score: 85.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 7 committers (42.9%) from academic institutions
  • Institutional organization owner
    Organization kit-data-manager has institutional domain (www.scc.kit.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Keywords

datacite research-data-management research-data-repository restful-api

Keywords from Contributors

standardization interpretability hack interaction meshing interface quantum-circuits robust dynamics sequences
Last synced: 6 months ago · JSON representation ·

Repository

Basic repository service used as central component of the KIT DM 2.0 infrastructure.

Basic Info
Statistics
  • Stars: 1
  • Watchers: 3
  • Forks: 3
  • Open Issues: 15
  • Releases: 14
Topics
datacite research-data-management research-data-repository restful-api
Created almost 8 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

KIT Data Manager - Base Repository Service

Build Status Codecov License SQAaaS badge shields.io SQAaaS badge shields.io DOI

This project contains the repository service microservice for the KIT DM infrastructure. The service provides data resource management, e.g. register DataCite-oriented metadata and upload/download content to data resources.

How to build

In order to build this microservice you'll need:

  • Java SE Development Kit 17 or higher

After obtaining the sources change to the folder where the sources are located perform the following steps:

bash user@localhost:/home/user/base-repo$ ./gradlew -Dprofile=minimal build Running gradle version: 7.4.2 Building base-repo version: 1.5.5 JDK version: 11 Using minimal profile for building base-repoo <-------------> 0% EXECUTING [0s] [...] user@localhost:/home/user/base-repo$

The Gradle wrapper will now take care of downloading the configured version of Gradle, checking out all required libraries, build these libraries and finally build the base-repo microservice itself. As a result, a fat jar containing the entire service is created at 'build/libs/base-repo.jar'.

How to start

Prerequisites

  • PostgreSQL 9.1 or higher
  • RabbitMQ 3.7.3 or higher (in case you want to use the messaging feature, which is recommended)
  • Elastic 8.X or higher (in case you want to use the search feature)

Setup

Before you are able to start the repository microservice, you have provide a configuration file according to your local setup. Therefor, copy the file 'config/application-default.properties' to your project folder, rename it to 'application.properties' and customize it as required. Special attentioned should be payed to the datasource url as well as to the repository base path. Also, the property 'repo.messaging.enabled' should be changed to 'true' in case you want to use the messaging feature of the repository.

As soon as you finished modifying 'application.properties', you may start the repository microservice by executing the following command inside the project folder, e.g. where the service has been built before:

```bash user@localhost:/home/user/base-repo$ ./build/libs/base-repo.jar

. ____ _ __ _ _ /\ / ' __ _ ()_ __ __ _ \ \ \ \ ( ( )_ | '_ | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |_, | / / / / =========||==============|_/=//// :: Spring Boot :: (v2.7.5) [...] 1970-01-01 00:00:00.000 INFO 56918 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''

```

If your 'application.properties' is not located inside the project folder you can provide it using the command line argument --spring.config.location=

As soon as the microservice is started, you can browse to

http://localhost:8090/swagger-ui.html

in order to see available RESTful endpoints and their documentation.

Enhanced Startup

At certain points, base-repo offers and will offer extension points allowing to add custom features that are not part of the default distribution, e.g. custom message handlers. If you are familiar with software development, it might be no big deal to include an additional dependency to 'build.gradle' of base-repo. However, in some cases this might not be desirable or possible. Therefor, base-repo allows to place additional libraries required at runtime in a separate folder which is then loaded as soon as the microservice starts and made available using the dependency injection feature of Spring Boot.

In order to tell Spring Boot where to look for additional libraries, you have to define an environment variable JAVA_OPTS looking as follows:

bash export JAVA_OPTS="-cp .:./config:./base-repo.jar -Dloader.path=./base-repo.jar,./lib/,."

The first part '-cp' has to contain three elements divided by ':':

  1. The configuration folder where your application.properties is located (this element can be omitted, if application.properties is located in the current folder),
  2. the current folder,
  3. and the microservice jar file.

The second part '-Dloader.path' basically contains the same information as '-cp' but with the difference, that the config folder is not required, whereas the folder containing all additional libraries has to be provided, in our case it's './lib'.

Please keep in mind that all arguments shown in the example assume, that you are in the same folder where your microservice jar file is located and that you start the service by calling './base-repo.jar'. If your microservice jar is located elsewhere, you should consider to provide absolute paths for all arguments above. In case you want to choose a different folder for placing your additional libraries, you have to rename it in JAVA_OPTS accordingly.

What you now have to do before you start the microservice is to place additional jar files (and required dependencies!) in the 'lib' folder. At the next startup, the new functionality should be available.

More Information

License

The KIT Data Manager is licensed under the Apache License, Version 2.0.

Owner

  • Name: KIT Data Manager
  • Login: kit-data-manager
  • Kind: organization
  • Email: webmaster@datamanger.kit.edu
  • Location: Karlsruhe, Germany

Generic software and recommendations for FAIR research data management by DEM.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Jejkal"
  given-names: "Thomas"
  affiliation: Karlsruhe Institute of Technology
  email: thomas.jejkal@kit.edu
  orcid: "https://orcid.org/0000-0003-2804-688X"
- family-names: "Hartmann"
  given-names: "Volker"
  affiliation: Karlsruhe Institute of Technology
  email: volker.hartmann@kit.edu
  orcid: "https://orcid.org/0000-0001-6383-5214"
title: "base-repo"
type: software
abstract: This project contains the repository service microservice for the KIT DM infrastructure. The service provides data resource management, e.g. register DataCite-compliant metadata and upload/download content to data resources.
date-released: 2020-10-06
url: "https://github.com/kit-data-manager/base-repo"
repository-code: "https://github.com/kit-data-manager/base-repo"
license: Apache-2.0

GitHub Events

Total
  • Create event: 136
  • Issues event: 5
  • Release event: 3
  • Delete event: 133
  • Issue comment event: 143
  • Push event: 232
  • Pull request review comment event: 2
  • Pull request review event: 6
  • Pull request event: 282
Last Year
  • Create event: 136
  • Issues event: 5
  • Release event: 3
  • Delete event: 133
  • Issue comment event: 143
  • Push event: 232
  • Pull request review comment event: 2
  • Pull request review event: 6
  • Pull request event: 282

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 681
  • Total Committers: 7
  • Avg Commits per committer: 97.286
  • Development Distribution Score (DDS): 0.411
Past Year
  • Commits: 134
  • Committers: 4
  • Avg Commits per committer: 33.5
  • Development Distribution Score (DDS): 0.358
Top Committers
Name Email Commits
Thomas Jejkal t****l@k****u 401
dependabot[bot] 4****] 143
renovate[bot] 2****] 86
Volker Hartmann v****n@k****u 38
Volker Hartmann v****n@.****u 7
github-actions[bot] 4****] 5
Philipp Ost 9****T 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 14
  • Total pull requests: 362
  • Average time to close issues: 9 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 5
  • Total pull request authors: 6
  • Average comments per issue: 0.71
  • Average comments per pull request: 0.89
  • Merged pull requests: 291
  • Bot issues: 1
  • Bot pull requests: 331
Past Year
  • Issues: 3
  • Pull requests: 259
  • Average time to close issues: 22 days
  • Average time to close pull requests: 8 days
  • Issue authors: 3
  • Pull request authors: 5
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.84
  • Merged pull requests: 221
  • Bot issues: 1
  • Bot pull requests: 253
Top Authors
Issue Authors
  • ThomasJejkal (9)
  • chkalch (4)
  • VolkerHartmann (2)
  • dependabot[bot] (2)
  • renovate[bot] (2)
  • GGoetzelmann (1)
  • nicolasblumenroehr (1)
Pull Request Authors
  • renovate[bot] (295)
  • dependabot[bot] (167)
  • ThomasJejkal (28)
  • github-actions[bot] (9)
  • VolkerHartmann (5)
  • GGoetzelmann (1)
Top Labels
Issue Labels
dependencies (4) enhancement (3) wontfix (3) bug (2) testing (1) in progress (1) documentation (1) spring-boot (1)
Pull Request Labels
dependencies (402) in progress (4) enhancement (3) spring-boot (2) bug (1) wontfix (1)

Dependencies

build.gradle maven
  • com.bazaarvoice.jolt:jolt-core 0.1.7 implementation
  • com.bazaarvoice.jolt:json-utils 0.1.7 implementation
  • com.github.fge:json-patch 1.9 implementation
  • com.github.victools:jsonschema-generator 4.23.0 implementation
  • com.h2database:h2 2.1.212 implementation
  • com.nimbusds:nimbus-jose-jwt 9.15.2 implementation
  • edu.kit.datamanager:repo-core 1.0.2 implementation
  • edu.kit.datamanager:service-base 1.0.1 implementation
  • io.jsonwebtoken:jjwt-api 0.11.2 implementation
  • io.jsonwebtoken:jjwt-impl 0.11.5 implementation
  • io.jsonwebtoken:jjwt-jackson 0.11.5 implementation
  • javax.xml.bind:jaxb-api 2.3.0 implementation
  • org.javers:javers-core ${javersVersion} implementation
  • org.keycloak:keycloak-spring-boot-starter ${keycloakVersion} implementation
  • org.postgresql:postgresql 42.3.3 implementation
  • org.springdoc:springdoc-openapi-data-rest ${springDocVersion} implementation
  • org.springdoc:springdoc-openapi-ui ${springDocVersion} implementation
  • org.springdoc:springdoc-openapi-webmvc-core ${springDocVersion} implementation
  • org.springframework.boot:spring-boot-starter-actuator * implementation
  • org.springframework.boot:spring-boot-starter-data-jpa * implementation
  • org.springframework.boot:spring-boot-starter-data-rest * implementation
  • org.springframework.boot:spring-boot-starter-mail * implementation
  • org.springframework.boot:spring-boot-starter-validation * implementation
  • org.springframework.cloud:spring-cloud-starter-config 3.0.4 implementation
  • org.springframework.cloud:spring-cloud-starter-netflix-eureka-client 3.0.3 implementation
  • org.springframework.security:spring-security-config 5.5.2 implementation
  • org.springframework.security:spring-security-web 5.5.2 implementation
  • org.springframework:spring-messaging 5.3.9 implementation
  • org.apache.httpcomponents:httpclient 4.5.13 runtimeOnly
  • junit:junit 4.13.2 testImplementation
  • org.mockito:mockito-core 3.12.0 testImplementation
  • org.powermock:powermock-api-mockito2 2.0.9 testImplementation
  • org.powermock:powermock-module-junit4 2.0.9 testImplementation
  • org.springframework.boot:spring-boot-starter-test * testImplementation
  • org.springframework.restdocs:spring-restdocs-mockmvc 2.0.6.RELEASE testImplementation
  • org.springframework.security:spring-security-test * testImplementation
  • org.springframework:spring-test * testImplementation
.github/workflows/branch_on_issue.yml actions
  • robvanderleek/create-issue-branch main composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v2 composite
  • github/codeql-action/analyze v1 composite
  • github/codeql-action/autobuild v1 composite
  • github/codeql-action/init v1 composite
.github/workflows/docker-publish.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v2 composite
  • crazy-max/ghaction-docker-meta v1 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/gradle.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v2 composite
  • codecov/codecov-action v1 composite
Dockerfile docker
  • build-env-java latest build
  • openjdk 16-bullseye build