base-repo
Basic repository service used as central component of the KIT DM 2.0 infrastructure.
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
Keywords from Contributors
Repository
Basic repository service used as central component of the KIT DM 2.0 infrastructure.
Basic Info
- Host: GitHub
- Owner: kit-data-manager
- License: apache-2.0
- Language: Java
- Default Branch: main
- Homepage: https://kit-data-manager.github.io/webpage/base-repo/index.html
- Size: 1.71 MB
Statistics
- Stars: 1
- Watchers: 3
- Forks: 3
- Open Issues: 15
- Releases: 14
Topics
Metadata Files
README.md
KIT Data Manager - Base Repository Service
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 ':':
- The configuration folder where your application.properties is located (this element can be omitted, if application.properties is located in the current folder),
- the current folder,
- 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
- Getting Started & Documentation
- API documentation
- Docker container
- Information about the DataCite metadata schema
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
- Website: https://www.scc.kit.edu/ueberuns/dem.php
- Repositories: 56
- Profile: https://github.com/kit-data-manager
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
Top Committers
| Name | 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 |
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
Pull Request Labels
Dependencies
- 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
- robvanderleek/create-issue-branch main composite
- actions/checkout v2 composite
- github/codeql-action/analyze v1 composite
- github/codeql-action/autobuild v1 composite
- github/codeql-action/init v1 composite
- 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
- actions/checkout v2 composite
- actions/setup-java v2 composite
- codecov/codecov-action v1 composite
- build-env-java latest build
- openjdk 16-bullseye build