# Bioschemas Profile Rendering Documentation ## :mag: Aim The goal of this work is to enable automated rendering of Bioschemas profiles on the website as soon as their JSON-LD serialization on GitHub is updated. This diagram illustrates how files are routed through the three main entities: DDE, Bioschemas specifications and Bioschemas website repositories. ![Sequence Diagram](https://i.imgur.com/Pas6TP4.png) This workflow is supported by a [GitHub action](https://github.com/BioSchemas/specifications/blob/profile-auto-generation/.github/workflows/generate_profile_workflow.yml) which is fired at each `git push` to the specification repository. ## :memo: Step by step walkthrough In this section you will find the steps to follow in order to render a bioschemas profile on the Bioschemas website. In addition to a detailed explanation to the automated (Github Actions) and the manual process to be conducted. When a community decides to create a new bioschemas profile or update/edit an existing one they should follow theses steps: **Case new profile:** If we will create the ComputationalTool profile for the first time: 1. You will create your profile in DDE, there is a specific demo for it in this [doc](). Or if you are more confortable with the Bioschemas profile, you will push your JSON-LD in the specifications repo under ProfileName/Version.json. Now and your JSON-LD is pushed to the Specifications repo (whether manually or via DDE), you or someone from the Bioschemas Community should create a [pull request]([https:/](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)/) for it. 1. At this point, and before merging the PR, there are some important manual configurations to be conducted: 1. Add your new profile, with the appropriate version, to the [profile versions config file](https://github.com/BioSchemas/bioschemas.github.io/blob/profile-auto-generation/_data/profile_versions.yaml). ![](https://i.imgur.com/S9E3fXr.png =x100) 1. Add a column with your profile's **groups**, **get_redirect_from**, and **cross_walk_url**, in the [metadata mapping file](https://github.com/BioSchemas/bioschemas.github.io/blob/profile-auto-generation/_data/metadata_mapping.csv) ![](https://i.imgur.com/TO3C9s6.png) ![](https://i.imgur.com/vzXBZaj.png) ![](https://i.imgur.com/WKt2CGS.png) ![](https://i.imgur.com/CvK0j16.png) * group: * get_redirect_from: * cross_walk_url: The URL of the last version/draft csv mapping file ![](https://i.imgur.com/iSPzTrP.png) 1. ==To Check:== We still are not sure, but we may need to edit some config files in the DDE repository. 1. The admin should check all the config files before [merging](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) the PR. Once merged a [workflow](https://github.com/BioSchemas/specifications/blob/profile-auto-generation/.github/workflows/generate_profile_workflow.yml) that will automatically render the bioschemas profile will fire (Note: it's written with [Github Actions](https://github.com/features/actions)). ![](https://i.imgur.com/se9dSJt.png =x80) To follow the workflow's steps, go to the [actions](https://github.com/BioSchemas/specifications/actions/workflows/generate_profile_workflow.yml) in the sepcifications repo. Then, open your wokflow. ![Some of the Fired Actions](https://i.imgur.com/nr6ghFZ.png) ![Computational Tool Action](https://i.imgur.com/ljqC10i.png) ![Computational Tool Workflow Steps](https://i.imgur.com/XPC7M3k.png) ==The action will:== * Clone the **specification repository** and retreive the last commit * Fetch the name and the path of the updated/added profile. ![](https://i.imgur.com/KQHdtLf.png) * Setup Python 3.8 and install the appropraite dependencies ![](https://i.imgur.com/O9aJcQb.png =x200) * Clone the **[website](https://github.com/BioSchemas/bioschemas.github.io) repository** * Execute the **python script**: it maps each field of the JSON-LD to properties and specifications and generate a YAML File that can be rendered by Jekyll. * Setup the Github TOKEN, so we can publish into the website repo. * Commit and push the changes in the website repository in a branch in which the name is today's date. e.g: 2022-08-17. 1. Now, if you go to the [bioschemas repository branches](https://github.com/BioSchemas/bioschemas.github.io/branches), you should find the generated branch. ![](https://i.imgur.com/6Oz8GFj.png) 1. Now, just merge it to Master branch and your profile will be taken into consideration in the [bioschemas website](https://bioschemas.org/profiles/). **Case existing profile:** There is no big difference. In this case you will simply edit an existing DDE Profile or add a new json-ld with a new version/draft of the profile directly in the specifiactions repository. A pull request should be created, all the manual steps detailed above should be followed and once merged the github action will fire. ## :bulb: Future work ==TODO== How to deal with errors in this automated process? What should happen if we face a problem - when generating the JSON-LD in DDE ? - in the generation of the YML file ? - in the commit/push to the website repo ? - when rendering the website with Jekyll ? ==TODO== We should have an automated process that notifies appropriate third parties when a problem occur. ## :pushpin: Summary - [x] Aim of the work - [x] Workflow Steps - [x] Perspectives