Skip to content

Make JSON-LD and Build Dependencies Table #257

Make JSON-LD and Build Dependencies Table

Make JSON-LD and Build Dependencies Table #257

name: Make JSON-LD and Build Dependencies Table
on:
pull_request:
branches: 'main'
paths: 'HTAN.model.csv'
release:
types: [published]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref_type }}-${{ github.sha }}
cancel-in-progress: true
env:
SCHEMATIC_VERSION: '24.2.1'
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
jobs:
lint:
name: Lint CSV
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: csvlinter
uses: kcheriyath/[email protected]
with:
find_pattern: "*.csv"
validate:
name: Validate CSV
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install IPython
run: |
pip install ipython==8.18.1
- name: Install Schematic
run: |
pip install schematicpy==$SCHEMATIC_VERSION
- name: Convert CSV schema
run: |
schematic schema convert .github/CSV.model.csv
- name: Validate data model CSV
run: |
schematic model -c .github/CSV_schematic_config.yml validate -mp HTAN.model.csv -dt "DataModel" |
grep "Your manifest has been validated successfully. There are no errors in your manifest, and it can be submitted without any modifications."
convert:
name: Convert CSV to JSON-LD
needs:
- lint
- validate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install IPython
run: |
pip install ipython==8.18.1
- name: Install Schematic
run: |
pip install schematicpy==$SCHEMATIC_VERSION
- name: Convert .csv to .jsonld
run: |
schematic schema convert HTAN.model.csv
- name: Set up Git user
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Fetch PR details
if: github.event_name == 'pull_request'
uses: r-lib/actions/pr-fetch@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Commit the changes
run: |
git add HTAN.model.jsonld
git commit -m "GitHub Action: convert *.model.csv to *.model.jsonld" || echo "No changes to commit"
- name: Push changes back to PR
if: github.event_name == 'pull_request'
uses: r-lib/actions/pr-push@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
build-dependencies:
name: Build Dependencies Table
needs: convert
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Fetch latest changes
run: git pull origin main
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests pandas
- name: Fetch attribute table
run: |
python - <<EOF
import requests
import pandas as pd
url = "https://schematic.api.sagebionetworks.org/v1/ui/" # Endpoint URL
if "${{ github.event_name }}" == "pull_request":
jsonld_url = "https://raw.githubusercontent.com/${{ github.repository }}/pull/${{ github.event.pull_request.number }}/head/HTAN.model.jsonld"
else:
jsonld_url = "https://raw.githubusercontent.com/${{ github.repository }}/main/HTAN.model.jsonld"
response = requests.get(jsonld_url)
response.raise_for_status()
model_jsonld = response.json()
response = requests.post(url, json=model_jsonld)
response.raise_for_status()
attribute_table = response.json() # Adjust this line based on the actual response format
df = pd.DataFrame(attribute_table)
df.to_csv('HTAN.dependencies.csv', index=False)
EOF
- name: Commit changes
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add HTAN.dependencies.csv
git commit -m "Update HTAN.dependencies.csv with the latest attribute table"
- name: Create Pull Request
if: github.event_name == 'pull_request'
uses: r-lib/actions/pr-push@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Create Pull Request
if: github.event_name != 'pull_request'
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "Update HTAN.dependencies.csv"
branch: update-attribute-table
title: "Update HTAN.dependencies.csv"
body: "This PR updates HTAN.dependencies.csv with the latest attribute table."