Microservice API to publish DOIs on Datacite.
This service works in tandem with the email relay server Catapulte.
The EnviDat email microservice can be found here.
-
Configure environment variables for use only in local development
- Make a file named
.envin the root directory - Generate the variables using
env.exampleas a reference - New environment variables must be added to:
env.examplebecause this file is used for validationenvironmentsection of thedoi-apicontainers in thedocker-compose.<branch>.ymlfiles- Echoed into
build.envin theset-varsjob ingitlab-ci.yml
- Make a file named
-
Clone project, make sure virtual environment is installed and activated, and execute the following command:
pdm sync --dev
-
Run the FastAPI development server:
pdm run dev
-
Access local server at: http://127.0.0.1:8000
-
Configure CI/CD variables used in production server (
mainenvironment) or staging server (stagingenvironment)-
Create individual CI/CD variables for each variable listed in
env.example -
APP_VERSIONmust be incremented so that a new image is built and the application includes the updated code- Create a git tag for the commit that corresponds to the
APP_VERSION - Update the
versionvalue inpyproject.toml - Also create an entry in the
CHANGELOG
- Create a git tag for the commit that corresponds to the
-
ROOT_PATHis an optional CI/CD variable and should only be used to if the application uses a proxy- Be sure to include a
/before theROOT_PATHvalue - Example configuration:
ROOT_PATH=/doi-api - Click here for the FastAPI documentation about using a proxy server
- Be sure to include a
-
Create individual CI/CD variables for each the following variables (apart from the ones in env.example) that are used for deployment or scheduled pipelines:
Key Example Value APP_VERSION1.1.2ROOT_PATH""INTERNAL_REGregistry-gitlab.org.ch/orgnameEXTERNAL_REGdocker.ioNGINX_IMG_TAG1.25PYTHON_IMG_TAG3.10FOREST3D_API_URLhttps://my-server.com/doi-api/forest3d/publish-bulk-datacite?is-update=true
-
-
Merge feature/development branch to
maindefault branch- The image related variables can be group variables inherited from the parent group
The /forest3d/publish-bulk-datacite endpoint bulk publishes Forest3D endpoints to DataCite.
- The metadata for Forest3D datasets are read from an external online JSON file that is set in the CI/CD variable
FOREST3D_URL. - Requires
forest3d-keyheader parameter that matches the value for CI/CD variableFOREST3D_API_KEY. - Forest3D datasets'
doivalues must end with a digit to be considered valid. - Optionally if
is-updatequery parameter istruethen updates existing Forest3D datasets in DataCite (if themetadata_modifieddate is within the last 30 days.) - The GitLab scheduled pipeline executes every 24 hours and requires that the CI/CD variable
FOREST3D_API_URLis set for the corresponding server/environment.
- To run the pre-commit hooks manually open app in terminal and execute:
pre-commit run --all-files - These hooks ensure that the application uses standard stylistic conventions
- To view or alter the pre-commit hooks see:
.pre-commit-config.yaml
The following employees of the Swiss Federal Institute for Forest, Snow and Landscape Research WSL:
- Ranita Pal
- Rebecca Buchholz
- Sam Woodcock