How to publish Software

– From GitLab

  1. Include a codemeta.json metadata file into the root directory of your project.
  2. You will need to link your GitLab project with Zenodo.
    • Learn how to easily do it in few clicks here.
  3. Let the GitLab Continuous Integration (CI) work for you !
    • Once your GitLab project is connect with Zenodo, copy the following code snippet into your .gitlab-ci.yml file !

– From GitHub

  1. Include a codemeta.json metadata file (optional although advised stage).
  2. Check how to trigger the GitHub-Zenodo automatically integration.

CI integration between GitLab and Zenodo;

Summary / general (and evolving) view of the process:


What happens during the GitLab-Zenodo CI process

– Trigger the GitLabCI and ‘deploy’ your project to Zenodo.

  • If you have included the deploy stage into your .gitlab-ci.yml file, the gitlab runner will download and use a Docker container specifically created for this purpose.
  • The Docker container is available at the GitLab ESCAPE container registry.
  • In this container, there are installed the following packages;
    • ZenodoCI: library to manage the communication between GitLab and Zenodo through their REST APIs. It will also manage the upload of a new entry / new version.
    • codemeta2zenodo: converts a CodeMeta metadata file (codemeta.json) to the Zenodo metadata schema (a .zenodo.json file).
  • The distant runner will perform the following stages:
    1. Search for the last release / commit of your project.
    2. Search for a CodeMeta metadata file and convert it to the Zenodo compliant format.
    3. Upload a new entry / version to the ESCAPE2020 community. The entry will contain the information within the metadata files.

– Build an image within the CI/CD gitlab pipeline

  1. You can also build a Docker and/or a Singularity image within the CI process and upload them to the OSSR together with the project release.

You can also check this general quick descriptive maze on how to make an upload to the repository; ESCAPE the maze.