In diesem Artikel werde ich Sie Schritt für Schritt anleiten, um eine dynamische Dokumentationsseite zu erstellen, die an jedes Projekt angepasst werden kann und auf der Sie Ihre Dokumentation mit einer Datenbank verbinden können, um Daten zu extrahieren und anzuzeigen und so die Informationen sicherzustellen ist immer auf dem neuesten Stand. Wir werden auch untersuchen, wie wir den gesamten Prozess automatisieren können, von der Inhaltserstellung bis zur Bereitstellung in der Cloud mit AWS.
Die Lösung umfasst Unterstützung für Diagramme und Diagramme, kontinuierliche Integration (CI/CD) mithilfe eines einfachen Workflows in GitHub Actions und automatische Bereitstellung mithilfe von Terraform. Fangen wir an!
Dokumentation und ihre Aktualisierungen sind in vielen Unternehmen, die Software entwickeln, ein wichtiger Prozess, der häufig mit verschiedenen Tools durchgeführt wird, von denen viele kostenpflichtige Lösungen sind.
Daher ist in jüngster Zeit das Konzept von „doc as code“ entstanden. Dies bedeutet, dass für die Verwaltung, Versionierung und Bereitstellung der Dokumentation dieselben Tools und Arbeitsabläufe wie in der Softwareentwicklung verwendet werden müssen.
Dieser Ansatz ermöglicht nicht nur eine bessere Nachverfolgung der Dokumentation, sondern erleichtert auch deren Pflege und stellt die Übereinstimmung mit denselben Best Practices sicher, die in der Softwareentwicklung verwendet werden, nicht nur im Code, sondern auch in der Dokumentation.
Für die Entwicklung dieser Websites ist es wichtig, einige Praktiken und Tools zu verstehen, die es uns ermöglichen, diesen Ansatz umzusetzen. Nachfolgend finden Sie eine detaillierte Liste der wichtigsten Aspekte, die in diesem Tutorial behandelt werden sollen.
MkDocs ist ein in ?Python geschriebener statischer Site-Generator, der speziell für die Dokumentation von Projekten entwickelt wurde. Ziel ist es, die Erstellung von Dokumentationen mithilfe von Markdown-Dateien zu vereinfachen, die einfach zu schreiben und zu lesen sind.
Mit minimaler Konfiguration konvertiert MkDocs Markdown-Dateien in eine navigierbare und gut strukturierte Dokumentationswebsite und ist damit ideal für Entwickler und Teams, die ihre Dokumentation auf dem neuesten Stand halten möchten.
MkDocs Material ist ein erweitertes Theme für MkDocs, das den Materialdesign-Richtlinien von Google folgt.
Mermaid ist eine JavaScript-Bibliothek zum Erstellen von Diagrammen und Diagrammen aus Text. Durch die Integration mit MkDocs Material können Sie mit Mermaid Visualisierungen wie Flussdiagramme, Entitätsbeziehungsdiagramme und andere Diagramme innerhalb der Dokumentation ohne externe Tools erstellen.
Jinja ist eine Bibliothek, die das Einbetten von Variablen und Daten aus Python-Wörterbüchern in HTML ermöglicht und so Webseiten dynamisch macht. Diese Bibliothek wird häufig zum Generieren von dynamischem HTML und zum Versenden personalisierter E-Mails verwendet.
Docusaurus ist ein 2007 von Meta entwickeltes Open-Source-Projekt, das die Erstellung, Bereitstellung und Wartung von Dokumentationswebsites auf schnelle und effiziente Weise vereinfacht. Es ermöglicht die Verwendung von Markdown und MDX zum Schreiben von Inhalten, während sein auf React basierender Kern eine vollständige Anpassung der Stile an die spezifischen Anforderungen des Projekts ermöglicht.
Darüber hinaus unterstützt Docusaurus Mermaid über das Plugin @docusaurus/theme-mermaid und ermöglicht so die Einbindung von Diagrammen und Diagrammen direkt in die Dokumentation.
Diagramm als Code ist ein Ansatz, der es Ihnen ermöglicht, Diagramme durch Code zu erstellen, anstatt herkömmliche Grafiktools zu verwenden. Anstatt Diagramme manuell zu erstellen, schreiben Sie Code in eine Textdatei, um die Struktur, Komponenten und Verbindungen Ihrer Diagramme zu definieren.
Dieser Code wird dann in grafische Bilder übersetzt, was die Integration und Dokumentation in Softwareprojekten erleichtert. Es ist besonders nützlich für die programmgesteuerte Erstellung und Aktualisierung von Architektur- und Flussdiagrammen.
Wie bereits erwähnt, ermöglicht Ihnen Diagramme die Erstellung von Blaupausen unter Verwendung der Symbole der wichtigsten Cloud-Technologien. Die Darstellung dieser Diagramme erfolgt über Knoten. In unserem Beispiel verwenden wir alle Cloud-bezogenen Knoten und AWS-Dienste.
Weitere Informationen dazu, wie ich dies erstellt habe, können Sie in meinem Artikel über Diagramm als Code lesen. Die vollständige Implementierung finden Sie in diesem Repository:
Diagramm als Code ist ein Ansatz, mit dem Sie Diagramme mithilfe von Code anstelle herkömmlicher Grafiktools erstellen können. Anstatt Diagramme manuell zu erstellen, können Sie Code in eine Textdatei schreiben, um die Struktur, Komponenten und Verbindungen Ihrer Diagramme zu definieren.
Dieser Code wird dann in grafische Bilder übersetzt, was die Integration und Dokumentation in Softwareprojekten erleichtert, wo er besonders nützlich für die programmgesteuerte Erstellung und Aktualisierung von Architektur- und Flussdiagrammen ist.
Diagrams ist eine ?Python-Bibliothek, die den Diagram as Code-Ansatz implementiert und es Ihnen ermöglicht, architektonische Infrastrukturdiagramme und andere Arten von Diagrammen durch Code zu erstellen. Mit Diagrammen können Sie Cloud-Infrastrukturkomponenten (wie AWS, Azure und GCP), Netzwerkelemente, Softwaredienste und mehr ganz einfach mit nur wenigen Codezeilen definieren.
In diesem Anwendungsfall erstelle ich eine Dokumentationsseite für ein Projekt zum maschinellen Lernen mit ? Krankenhausdaten. Ziel ist es, zunächst mit MkDocs eine interaktive Dokumentationsseite zu erstellen und diese später auf Docusaurus zu migrieren. Die Site wird sowohl statische als auch dynamische Komponenten enthalten, um spezifische Anforderungen zu erfüllen, wie z. B. die Einbettung visueller Diagramme und die dynamische Aktualisierung von Daten aus einer SQLite-Datenbank.
Aus diesem Grund wird unsere Dokumentationsseite die folgenden Seiten haben:
In diesem Abschnitt gehen wir die Schritte zum Einrichten eines Dokumentationsprojekts mit MkDocs von Grund auf durch und erläutern die organisierte Verzeichnisstruktur.
Um zu beginnen, müssen Sie die folgenden ?Python-Bibliotheken installieren:
MkDocs und das Material installieren
pip install mkdocs mkdocs-material
Installieren Sie zusätzliche Bibliotheken, um die dynamische Inhaltsaktualisierung zu ermöglichen
pip install aiosql pandas sqlite3 jinja2 shutil
Initialisieren Sie das Projekt
Beginnen Sie mit der Erstellung eines neuen MkDocs-Projekts. Führen Sie die folgenden Befehle in Ihrem Terminal aus:
mkdocs new mkdocs cd mkdocs
Dieser Befehl erstellt ein grundlegendes MkDocs-Projekt mit einer Standardstruktur.
Erkunden Sie die Verzeichnisstruktur
Sobald die MkDocs-Site erstellt wurde, müssen Sie die folgenden Dateien und Ordner hinzufügen, da diese nicht standardmäßig enthalten sind.
Denken Sie daran, dass die Links zum Repository am Ende dieses Beitrags als Referenz bereitgestellt werden und jede Komponente im Folgenden ausführlich erläutert wird.
pip install mkdocs mkdocs-material
Component | Directory | Description |
---|---|---|
Database (db) | db | Contains the SQLite database (hospital.db) and queries (metadata.sql, person.sql) to manage dynamic data. Learn more about managing SQL queries in Python in my previous article: Python Projects with SQL. |
?️ Templates & Pages | template | Markdown templates: index.md, tables.md, architecture.md, glossary.md. Supports Mermaid diagrams, embedded images, and database-driven content. |
?️ Static Content (docs) | docs | Final site generated by update.py, including images (img/) and dynamic content populated from template. |
? Infrastructure (infraestructure) | infraestructure | Terraform scripts (main.tf, variables.tf) to deploy an S3 bucket for documentation hosting. |
Sobald wir unsere Projektstruktur eingerichtet haben, konfigurieren wir sie Schritt für Schritt, beginnend mit der Datei mkdocs.yml. Diese Datei definiert die Struktur und Einstellungen für Ihre Dokumentationsseite. So sollte es aufgebaut sein:
mkdocs.yml
pip install mkdocs mkdocs-material
In dieser Konfigurationsdatei können Sie im Abschnitt nav hauptsächlich die Seiten sehen, die über das Menü zugänglich sind. Anschließend spezifizieren wir die Mermaid-Erweiterung, die im nächsten Abschnitt erläutert wird. Schließlich wendet der Abschnitt Thema das Material-Thema an und aktiviert den in dieser Bibliothek verfügbaren Stil und die Komponenten.
Wie bereits erwähnt, ist Mermaid eine JavaScript-Bibliothek zum Erstellen von Diagrammen und Diagrammen aus Text. Nachfolgend sehen wir einige Beispiele. In unserem Fall werden wir es verwenden, um ein Entity-Relationship-Diagramm (ERD) auf der Seite Tabellen der Dokumentation zu generieren.
Im Repository können Sie sehen, wie dieser Code basierend auf dem Entity Relationship Diagram (ERD) erstellt wird, das in der offiziellen Synthea-Dokumentation zu finden ist. Sie können sich auch das Beispiel der Tabellenseite unter folgendem Link ansehen: tables.md.
Um die dynamische Inhaltsgenerierung für unsere Dokumentationsseite zu ermöglichen, verwenden wir Jinja, um Vorlagen zu verarbeiten und Platzhalter durch tatsächliche Daten zu ersetzen. Nachfolgend finden Sie eine schrittweise Aufschlüsselung:
Einen Vorlagenordner einrichten
Erstellen Sie einen Ordner mit dem Namen „templates“, um alle Markdown-Dateien für die Site zu speichern. Diese Dateien sollten Platzhalter enthalten. Beispielsweise könnten Sie in index.md Platzhalter wie {{database.version_date}} und {{database.version}} haben.
Platzhalter verwenden
Platzhalter sind dynamische Variablen in den Markdown-Dateien. Diese Variablen werden automatisch mithilfe von Python-Wörterbüchern aktualisiert, um relevante Daten einzufügen.
Dynamische Inhalte mit update.py generieren
pip install mkdocs mkdocs-material
pip install aiosql pandas sqlite3 jinja2 shutil
Indem Sie diese Schritte befolgen, können Sie den Aktualisierungsprozess für Ihre Dokumentationsseite automatisieren und so sicherstellen, dass der Inhalt ohne manuelle Bearbeitungen dynamisch und relevant bleibt.
Im nächsten Beispiel aktualisieren wir den Inhalt in der Datei tables.md, um ein Beispiel der Tabelle Personen aus der Datenbank anzuzeigen. Dazu erstellen wir einen Platzhalter {{table.person}} innerhalb der Markdown-Datei. Die Idee besteht darin, die Daten dynamisch aus der Tabelle Personen abzurufen und dann die Jinja-Bibliothek zusammen mit Pandas zu verwenden, um die Abfrageergebnisse in ein Markdown-Tabellenformat zu konvertieren.
Hier ist ein Beispiel dafür, wie die Datei tables.md mit dem Platzhalter aussieht:
mkdocs new mkdocs cd mkdocs
Der Prozess ist wie folgt:
? docs/ ├── ? img/ ├── `architecture.md` ├── `glossary.md` ├── `index.md` ├── `tables.md` ├── ? template/ │ ├── ? db/ │ │ ├── ? data/ │ │ │ ├── hospital.db │ │ ├── ? queries/ │ ├── `architecture.md` │ ├── `glossary.md` │ ├── `index.md` │ ├── `tables.md` │ └── `update.py` ? infraestructure/ ? github/ ├── ? workflows/ │ ├── main.yml ? mkdocs.yml
Auf diese Weise spiegelt die Dokumentation immer aktuelle Daten wider und zeigt dynamische Beispiele basierend auf dem tatsächlichen Inhalt der Datenbank an.
In den folgenden Abschnitten werde ich detaillierte Schritte und Einblicke in die Implementierung einer Dokumentationsseite mit Docusaurus geben. Dazu gehören Einrichtungs-, Anpassungs- und Bereitstellungsoptionen.
Um mit Docusaurus zu beginnen, folgen wir einem schnellen Einrichtungsprozess, der den Schritten, die wir für MkDocs verwendet haben, sehr ähnlich ist, jedoch mit anderen Tools.
pip install mkdocs mkdocs-material
pip install aiosql pandas sqlite3 jinja2 shutil
mkdocs new mkdocs cd mkdocs
In der Konfigurationsdatei docusaurus.config.js passen wir den Titel, das Thema und die Navigation an und aktivieren Funktionen wie Mermaid für die Diagrammdarstellung.
Beispiel-Snippet zum Aktivieren von Mermaid:
pip install mkdocs mkdocs-material
Um die Homepage anzupassen, ändern wir die Datei src/components/HomepageFeatures/index.js. Hier können Sie das Objekt FeatureList anpassen, um die auf der Startseite angezeigten Funktionen zu aktualisieren.
Genau wie in MkDocs unterstützt Docusaurus Markdown-Dateien für Inhalte, und wir organisieren die Struktur wie folgt:
pip install aiosql pandas sqlite3 jinja2 shutil
__category__.json Beispiel:
mkdocs new mkdocs cd mkdocs
Um dynamische Inhalte wie Datenbanktabellen einzubinden, verwenden wir ein ?Python-Skript namens update.py, das Sie im Repository finden.
Dieses Skript ruft Daten aus einer SQLite-Datenbank ab und verarbeitet die im Vorlagenordner gespeicherten Markdown-Dateien. Anschließend aktualisiert es diese Dateien mit den abgerufenen Daten und kopiert sie in den Ordner „docs“, um sie für das Rendern auf der Website vorzubereiten.
Dieser Workflow stellt sicher, dass der Inhalt aktuell und bereit für die Bereitstellung bleibt, und folgt dabei einem ähnlichen Ansatz wie dem, den wir mit MkDocs implementiert haben.
In diesem Abschnitt behandeln wir den Bereitstellungsprozess für MkDocs und Docusaurus unter Verwendung von AWS S3 zum Hosten. Während die Bereitstellungsschritte für beide Tools gleich sind, unterscheiden sich die Installationsprozesse, wobei MkDocs Python-basiert und Docusaurus JavaScript-basiert ist.
Um eine statische Dokumentationsseite für AWS S3 bereitzustellen, verwenden wir Terraform, um die erforderlichen Ressourcen bereitzustellen und zu konfigurieren. Das Setup definiert den S3-Bucket, ermöglicht statisches Website-Hosting und konfiguriert den öffentlichen Zugriff mit einer Bucket-Richtlinie, um schreibgeschützten Zugriff zu ermöglichen. Sie finden die Datei main.tf im Repository.
Sie können auf die vollständige Terraform-Datei und die entsprechenden Konfigurationen für die Bereitstellung der Site im Repository zugreifen:
Terraform-Konfigurationsdatei:
GitHub Action Workflow for Automatic Deployment: Eine CI/CD-Pipeline zur Automatisierung des Deployment-Prozesses ist ebenfalls im Repository enthalten.
GitHub-Aktionskonfiguration
Stellen Sie sicher, dass Sie Ihre AWS-Anmeldeinformationen in den GitHub-Repository-Geheimnissen unter Einstellungen > konfigurieren. Geheimnisse > Aktionen. Dadurch kann GitHub Actions sicher auf Ihr AWS-Konto zugreifen und Aktionen wie das Hochladen von Dateien in S3 ausführen, wenn Sie Änderungen an den Hauptzweig übertragen.
Unten finden Sie die Links zum gesamten Code zum Bereitstellen Ihrer Dokumentationsseite. Wenn Sie es nützlich finden, können Sie einen Stern hinterlassen ⭐️ und mir folgen, um Benachrichtigungen über neue Artikel zu erhalten. Dies wird mir helfen, in der Tech-Community zu wachsen und mehr Inhalte zu erstellen.
MkDocs ist eine hervorragende Lösung für die Implementierung eines Dokumentationsportals, das einfach mit Code aktualisiert werden kann und dabei hilft, die Dokumentation Ihres Softwareentwicklungsprojekts aktuell und versioniert zu halten.
In diesem Repository habe ich eine einfache Site erstellt, um das Datenmodell und das maschinelle Lernprojekt zu dokumentieren.
Die Dokumentation enthält Diagramme, Tabellen und Architekturbeispiele und bietet eine umfassende und leicht verständliche Anleitung zur Implementierung dieses Frameworks in Kombination mit zwei anderen ?Python-Bibliotheken.
Dokumentation und ihre Aktualisierungen sind ein wichtiger Prozess in vielen Unternehmen, die Software entwickeln, wobei dieser Prozess mit verschiedenen Tools durchgeführt wird, von denen viele kostenpflichtige Lösungen sind.
Daher ist in jüngster Zeit das Konzept von „doc as code“ entstanden. Dies bedeutet, dass für die Verwaltung, Versionierung und ... dieselben Tools und Arbeitsabläufe wie in der Softwareentwicklung verwendet werden.
Docusaurus ist eine hervorragende Lösung für die Implementierung eines Dokumentationsportals, das einfach mit Code aktualisiert werden kann und dabei hilft, die Dokumentation Ihres Softwareentwicklungsprojekts aktuell und versioniert zu halten.
In diesem Repository habe ich eine einfache Site erstellt, um das Datenmodell und das maschinelle Lernprojekt zu dokumentieren.
Die Dokumentation enthält Diagramme, Tabellen und Architekturbeispiele und bietet eine umfassende und leicht verständliche Anleitung zur Implementierung dieses Frameworks in Kombination mit zwei anderen ?Python-Bibliotheken.
Dokumentation und ihre Aktualisierungen sind ein wichtiger Prozess in vielen Unternehmen, die Software entwickeln, wobei dieser Prozess mit verschiedenen Tools durchgeführt wird, von denen viele kostenpflichtige Lösungen sind.
Daher ist in jüngster Zeit das Konzept von „doc as code“ entstanden. Dies bedeutet, dass für die Verwaltung, Versionierung und Bereitstellung der Dokumentation dieselben Tools und Arbeitsabläufe wie in der Softwareentwicklung verwendet werden …
Beide Lösungen sind einfach zu implementieren, aber in den folgenden Punkten können wir einige Unterschiede untersuchen. Welche die beste Lösung ist, hängt vom Kontext, dem Wissen und der Komplexität ab, die Sie möglicherweise für die Implementierung benötigen.
Das obige ist der detaillierte Inhalt vonBereitstellen von Docs-as-Code auf AWS: Erstellen dynamischer Dokumentationsseiten in MkDocs und Docusaurus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!