Make JSON-LD and Build Dependencies Table #257
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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." |