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.
-
Make a file named
.env
in the root directory -
Generate the variables using
env.example
as a reference -
New environment variables must be added to:
env.example
because this file is used for validationenvironment
section of thedoi-api
containers in thedocker-compose.<branch>.yml
files
- Run the docker container:
docker compose up -f <docker compose file> -d
The image should pull, or fallback to building.
- Install dependencies:
pip install virtualenv
python -m venv <virtual-environment-name>
or
Create a virtual environment with PyCharm
<virtual-environment-name>\Scripts\activate
pip install -r requirements.txt
- Run the FastAPI server directly with PDM:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
- Access at: http://127.0.0.1:8000
-
Configure environment variables used in production
-
Create individual CI/CD variables for each variable listed in
env.example
-
APP_VERSION
must 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
- Create a git tag for the commit that corresponds to the
-
ROOT_PATH
is an optional environment variable and should only be used to if the application uses a proxy- Be sure to include a
/
before theROOT_PATH
value - 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:
Key Example Value APP_VERSION
1.1.2
ROOT_PATH
""
INTERNAL_REG
registry-gitlab.org.ch/orgname
EXTERNAL_REG
docker.io
NGINX_IMG_TAG
1.25
PYTHON_IMG_TAG
3.10
DEPLOY_HOSTNAME
server.wsl.ch
DEPLOY_SSH_KEY
encryption private key
DEPLOY_SSH_USER
test_user
-
-
Merge feature/development branch to
main
default branch- The
main
branch has a pipeline set up in.gitlab-ci.yml
that automatically deploys changes to production server - The pipeline also requires CI/CD variables that are used to that are used to build and register a Docker image of the application:
IMAGE_REGISTRY_USER
andIMAGE_REGISTRY_PASS
- The image related variables can be group variables inherited from the parent group
- The
- 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
- Tests are located in
tests
- To run tests manually open app in terminal and execute:
pytest
- Scripts are located in the
scripts
directory
Ranita Pal, Swiss Federal Institute for Forest, Snow and Landscape Research WSL
Rebecca Kurup Buchholz, Swiss Federal Institute for Forest, Snow and Landscape Research WSL
Sam Woodcock, Swiss Federal Institute for Forest, Snow and Landscape Research WSL