-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automate ER Model Generation for Database Schema in GitHub Pages #882
Comments
@coderabbitai give full code on how to do this in deploy-pages.yaml
|
Tip For best results, initiate chat on the files or code changes. @ThomasAFink Here's the complete workflow file with ER model integration: name: Deploy to GitHub Pages
on:
workflow_call:
inputs:
coverage_artifact:
description: 'Name of the coverage reports artifact'
required: true
type: string
default: 'coverage-reports'
api_docs_artifact:
description: 'Name of the API documentation artifact'
required: true
type: string
default: 'api-docs'
security_artifact:
description: 'Name of the security reports artifact'
required: true
type: string
default: 'security-reports'
er_model_artifact:
description: 'Name of the ER model artifact'
required: true
type: string
default: 'er-model'
permissions:
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Create public directory
run: mkdir -p public
- name: Download coverage reports
uses: actions/download-artifact@v4
with:
name: ${{ inputs.coverage_artifact }}
path: public
- name: Download API docs
uses: actions/download-artifact@v4
with:
name: ${{ inputs.api_docs_artifact }}
path: public
- name: Download security reports
uses: actions/download-artifact@v4
with:
name: ${{ inputs.security_artifact }}
path: public
- name: Download ER model
uses: actions/download-artifact@v4
with:
name: ${{ inputs.er_model_artifact }}
path: public/er-model
- name: Debug - List directory structure
run: |
echo "=== Directory Structure ==="
ls -R public/
- name: Create index page
run: |
cat > public/index.html <<'EOL'
<!DOCTYPE html>
<html>
<head>
<title>eAppointment Documentation</title>
<style>
:root {
--primary: #0366d6;
--bg: #ffffff;
--text: #24292e;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
line-height: 1.6;
color: var(--text);
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
background: var(--bg);
}
h1, h2 {
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin: 2rem 0;
}
.card {
background: #f6f8fa;
border-radius: 6px;
padding: 1.5rem;
}
.card h2 {
margin-top: 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin: 0.5rem 0;
}
a {
color: var(--primary);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<h1>ZMS eAppointment Technical Documentation</h1>
<div class="grid">
<div class="card">
<h2>Database Schema</h2>
<ul>
<li><a href="er-model/schema.html">ER Model Diagram</a></li>
<li><a href="er-model/mermaid.md">Mermaid Source</a></li>
</ul>
</div>
<div class="card">
<h2>API Documentation</h2>
<ul>
<li><a href="https://it-at-m.github.io/eappointment/zmscitizenapi/public/doc/index.html">Zmscitizenapi API Documentation</a></li>
<li><a href="https://it-at-m.github.io/eappointment/zmsapi/public/doc/index.html">Zmsapi Documentation</a></li>
</ul>
</div>
<div class="card">
<h2>Code Test Coverage Reports</h2>
<ul>
<li><a href="coverage/coverage-zmsadmin/html/">Zmsadmin Coverage</a></li>
<li><a href="coverage/coverage-zmscalldisplay/html/">Zmscalldisplay Coverage</a></li>
<li><a href="coverage/coverage-zmscitizenapi/html/">Zmscitizenapi Coverage</a></li>
<li><a href="coverage/coverage-zmsdldb/html/">Zmsdldb Coverage</a></li>
<li><a href="coverage/coverage-zmsentities/html/">Zmsentities Coverage</a></li>
<li><a href="coverage/coverage-zmsmessaging/html/">Zmsmessaging Coverage</a></li>
<li><a href="coverage/coverage-zmsslim/html/">Zmsslim Coverage</a></li>
<li><a href="coverage/coverage-zmsstatistic/html/">Zmsstatistic Coverage</a></li>
<li><a href="coverage/coverage-zmsticketprinter/html/">Zmsticketprinter Coverage</a></li>
<li><a href="coverage/coverage-zmsapi/html/">Zmsapi Coverage</a></li>
<li><a href="coverage/coverage-zmsdb/html/">Zmsdb Coverage</a></li>
<li><a href="coverage/coverage-zmsclient/html/">Zmsclient Coverage</a></li>
</ul>
</div>
<div class="card">
<h2>OWASP Security Reports</h2>
<ul>
<li><a href="security/security-report-zmsadmin/dependency-check-report.html">Zmsadmin Security Report</a></li>
<li><a href="security/security-report-zmscalldisplay/dependency-check-report.html">Zmscalldisplay Security Report</a></li>
<li><a href="security/security-report-zmscitizenapi/dependency-check-report.html">Zmscitizenapi Security Report</a></li>
<li><a href="security/security-report-zmsdldb/dependency-check-report.html">Zmsdldb Security Report</a></li>
<li><a href="security/security-report-zmsentities/dependency-check-report.html">Zmsentities Security Report</a></li>
<li><a href="security/security-report-zmsmessaging/dependency-check-report.html">Zmsmessaging Security Report</a></li>
<li><a href="security/security-report-zmsslim/dependency-check-report.html">Zmsslim Security Report</a></li>
<li><a href="security/security-report-zmsstatistic/dependency-check-report.html">Zmsstatistic Security Report</a></li>
<li><a href="security/security-report-zmsticketprinter/dependency-check-report.html">Zmsticketprinter Security Report</a></li>
<li><a href="security/security-report-zmsapi/dependency-check-report.html">Zmsapi Security Report</a></li>
<li><a href="security/security-report-zmsdb/dependency-check-report.html">Zmsdb Security Report</a></li>
<li><a href="security/security-report-zmsclient/dependency-check-report.html">Zmsclient Security Report</a></li>
<li><a href="security/zap/zap-scan-report.html">ZAP Scan Reports</a></li>
</ul>
</div>
</div>
</body>
</html>
EOL
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: public
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4 Key changes made:
Note: This workflow assumes that the ER model generation (SQL parsing and Mermaid diagram generation) is handled in a separate job that creates and uploads the 🧠 Learnings used
|
@coderabbitai give me a branch name feature-gh-882- |
Tip For best results, initiate chat on the files or code changes. @ThomasAFink feature-gh-882-auto-er-diagram 🧠 Learnings used
|
Objective
Add automated ER model generation from SQL schema to the GitHub Pages workflow.
Background
We need to automatically generate and update the ER model diagram based on:
.resources/zms.sql
)zmsdb/migrations/
)The diagram should be automatically updated whenever new migrations are added or the base schema changes.
Technical Requirements
.resources/zms.sql
zmsdb/migrations/
.github/workflows/deploy-pages.yaml
)Implementation Steps
References
.resources/zms.sql
zmsdb/migrations/
.github/workflows/deploy-pages.yaml
The text was updated successfully, but these errors were encountered: