Compare commits
67 commits
v1.1.0
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
| ca53ac2250 | |||
| 1853f37f53 | |||
| 64d7c77b6f | |||
| 753a218d3c | |||
| ac1a2965f2 | |||
| f452a5e663 | |||
| 710f9a1dc9 | |||
| f9eba62e8d | |||
| 49a9d1efe7 | |||
| ffb9d063a3 | |||
| 1eff967f09 | |||
| d3d9908671 | |||
| 79e94d738a | |||
| 3eed5fe70d | |||
| 4169b999d4 | |||
| 6bd7f6b5a1 | |||
| 751202516c | |||
| d10f888985 | |||
| 829895fa73 | |||
| 44b722b087 | |||
| fc5dda68f8 | |||
| 47b0c404f3 | |||
| df2a132202 | |||
| 9b6c586e20 | |||
| ef11b04241 | |||
| de91b8f3fb | |||
| 5d80a899c5 | |||
| d3858d6969 | |||
| 53bbb6de91 | |||
| 36fe018c64 | |||
| 4500474bd2 | |||
| 4f34eb8a22 | |||
| 5f6573f36a | |||
| 86073cee7d | |||
| f0ca9bbce2 | |||
| 4935913002 | |||
| 82d424aeca | |||
| 62999b41d0 | |||
| 2ec2efe9fc | |||
| e049e683b3 | |||
| 44245dbfcc | |||
| 3f1efb1343 | |||
| 5bb475ea26 | |||
| 80835b528f | |||
| a4d717bdd2 | |||
| 18ac39d768 | |||
| 4ca9c669fb | |||
| 0628c5a80d | |||
| df439058a9 | |||
| 9e509ed265 | |||
| 9921e07e3e | |||
| 6009132fbc | |||
| 3a1c5ee6ca | |||
| 2971f98b4c | |||
| 14d7d9d588 | |||
| 91a8630507 | |||
| 97cd265063 | |||
| dc2bb1d60d | |||
| a7fb376157 | |||
| fb0ec3fd57 | |||
| 9aea2a3583 | |||
| 3239cfbc62 | |||
| 76937ccadf | |||
| 1d79ce85a5 | |||
| 69457ec964 | |||
| eec679657b | |||
| 828bc484c9 |
1
.envrc.example
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
use flake
|
||||||
10
.gitignore
vendored
|
|
@ -13,6 +13,12 @@ tmp/
|
||||||
# devbox
|
# devbox
|
||||||
.devbox/
|
.devbox/
|
||||||
|
|
||||||
|
# Task cache
|
||||||
|
.task/
|
||||||
|
|
||||||
|
# Generated build data
|
||||||
|
data/
|
||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
|
@ -29,3 +35,7 @@ Thumbs.db
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
|
### direnv ###
|
||||||
|
.direnv
|
||||||
|
.envrc
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,20 @@ IgnoreURLs:
|
||||||
- "^https://example\\.docsy\\.dev"
|
- "^https://example\\.docsy\\.dev"
|
||||||
- "^https://example\\.com"
|
- "^https://example\\.com"
|
||||||
- "^http://localhost"
|
- "^http://localhost"
|
||||||
|
- "^/livereload\\.js"
|
||||||
|
- "^https://cnoe\\.localtest\\.me"
|
||||||
|
- "^https://technologyconversations\\.com"
|
||||||
|
- "^https://developers\\.redhat\\.com"
|
||||||
|
- "^https://platformengineering\\.org"
|
||||||
|
- "^https://cnoe\\.io"
|
||||||
|
- "^https://console\\.otc\\.t-systems\\.com"
|
||||||
|
IgnoreInternalURLs:
|
||||||
|
- "/docs-old/"
|
||||||
|
- "/blog/"
|
||||||
|
- "/docs/v1/"
|
||||||
|
- "/docs/architecture/"
|
||||||
|
- "/docs/documentation/"
|
||||||
|
IgnoreInternalEmptyHashes: true
|
||||||
IgnoreDirectoryMissingTrailingSlash: true
|
IgnoreDirectoryMissingTrailingSlash: true
|
||||||
IgnoreAltMissing: true
|
IgnoreAltMissing: true
|
||||||
CheckDoctype: true
|
CheckDoctype: true
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,22 @@
|
||||||
"no-inline-style": "off",
|
"no-inline-style": "off",
|
||||||
"require-sri": "off",
|
"require-sri": "off",
|
||||||
"no-trailing-whitespace": "off",
|
"no-trailing-whitespace": "off",
|
||||||
"void-style": "off"
|
"void-style": "off",
|
||||||
|
"wcag/h30": "off",
|
||||||
|
"wcag/h32": "off",
|
||||||
|
"wcag/h37": "off",
|
||||||
|
"no-redundant-role": "off",
|
||||||
|
"unique-landmark": "off",
|
||||||
|
"no-multiple-main": "off",
|
||||||
|
"no-dup-id": "off",
|
||||||
|
"element-permitted-content": "off",
|
||||||
|
"attr-quotes": "off",
|
||||||
|
"empty-heading": "off",
|
||||||
|
"element-required-content": "off",
|
||||||
|
"long-title": "off",
|
||||||
|
"no-raw-characters": "off",
|
||||||
|
"valid-id": "off",
|
||||||
|
"doctype-style": "off"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
"html5"
|
"html5"
|
||||||
|
|
|
||||||
4
.markdownlintignore
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Ignore v1 documentation (legacy content with pre-existing lint issues)
|
||||||
|
content/en/docs/v1/**
|
||||||
|
content/en/blog/**
|
||||||
|
content/en/docs-old/**
|
||||||
98
DOCKER.md
|
|
@ -1,98 +0,0 @@
|
||||||
# Docker Build
|
|
||||||
|
|
||||||
This project uses a multi-stage Docker build that matches the local devbox development environment.
|
|
||||||
|
|
||||||
## Version Management
|
|
||||||
|
|
||||||
All tool versions are defined in `.env.versions` as the single source of truth:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
NODE_VERSION=24.10.0
|
|
||||||
GO_VERSION=1.25.1
|
|
||||||
HUGO_VERSION=0.151.0
|
|
||||||
```
|
|
||||||
|
|
||||||
These versions are used in:
|
|
||||||
|
|
||||||
- `devbox.json` - Local development environment
|
|
||||||
- `Dockerfile` - Docker build arguments (with defaults)
|
|
||||||
- `.github/workflows/ci.yaml` - CI/CD pipeline
|
|
||||||
|
|
||||||
**Important:** When updating versions, modify `.env.versions` and sync with `devbox.json`.
|
|
||||||
|
|
||||||
## Local Build
|
|
||||||
|
|
||||||
### Using Task (recommended)
|
|
||||||
|
|
||||||
The easiest way to build the OCI image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
task build:oci-image
|
|
||||||
```
|
|
||||||
|
|
||||||
This automatically:
|
|
||||||
|
|
||||||
- Loads versions from `.env.versions`
|
|
||||||
- Builds the image with correct build arguments
|
|
||||||
- Tags with `latest` and git commit hash
|
|
||||||
|
|
||||||
To build and test:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
task test:oci-image
|
|
||||||
```
|
|
||||||
|
|
||||||
### Automatic version loading
|
|
||||||
|
|
||||||
Use the helper script to load versions from `.env.versions`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source scripts/get-versions.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
This will show you the Docker build command with the correct versions.
|
|
||||||
|
|
||||||
### Manual build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker build --network=host \
|
|
||||||
--build-arg NODE_VERSION=24.10.0 \
|
|
||||||
--build-arg GO_VERSION=1.25.1 \
|
|
||||||
--build-arg HUGO_VERSION=0.151.0 \
|
|
||||||
-t ipceicis-developerframework:latest .
|
|
||||||
```
|
|
||||||
|
|
||||||
### Test the image
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run -d -p 8080:80 --name hugo-test ipceicis-developerframework:latest
|
|
||||||
curl http://localhost:8080
|
|
||||||
docker stop hugo-test && docker rm hugo-test
|
|
||||||
```
|
|
||||||
|
|
||||||
## CI/CD Pipeline
|
|
||||||
|
|
||||||
The GitHub Actions workflow (`.github/workflows/ci.yaml`) automatically:
|
|
||||||
|
|
||||||
1. Extracts versions from devbox environment
|
|
||||||
2. Builds multi-arch images (amd64 + arm64)
|
|
||||||
3. Pushes to the container registry with appropriate tags
|
|
||||||
|
|
||||||
### Required Secrets
|
|
||||||
|
|
||||||
Configure these secrets in your GitHub repository:
|
|
||||||
|
|
||||||
- `PACKAGES_USER`: Container registry username
|
|
||||||
- `PACKAGES_TOKEN`: Container registry token/password
|
|
||||||
|
|
||||||
## Image Structure
|
|
||||||
|
|
||||||
- **Build Stage**: Uses Node.js base image, installs Go and Hugo
|
|
||||||
- **Runtime Stage**: Uses nginx:alpine to serve static content (~50MB)
|
|
||||||
|
|
||||||
The build process:
|
|
||||||
|
|
||||||
1. Installs npm dependencies
|
|
||||||
2. Downloads Hugo modules
|
|
||||||
3. Builds static site with `hugo --gc --minify`
|
|
||||||
4. Copies built site to minimal nginx container
|
|
||||||
|
|
@ -1,112 +0,0 @@
|
||||||
# LikeC4 Integration - Quick Start
|
|
||||||
|
|
||||||
Dieses Repository enthält jetzt die LikeC4-Architekturdokumentation aus edp-doc mit vollständiger Git-Historie.
|
|
||||||
|
|
||||||
## Was wurde gemacht?
|
|
||||||
|
|
||||||
1. ✅ **LikeC4-Modelle migriert** - `resources/likec4/` enthält alle C4-Modelle mit Git-Historie
|
|
||||||
2. ✅ **Hugo-Integration erstellt** - CSS, JS und Loader-Scripte für Hugo/Docsy
|
|
||||||
3. ✅ **Beispielseiten erstellt** - Dokumentation unter `content/en/docs/architecture/`
|
|
||||||
4. ✅ **Konfiguration** - `hugo.toml` und Layout-Hooks konfiguriert
|
|
||||||
|
|
||||||
## Nächste Schritte
|
|
||||||
|
|
||||||
### 1. Webcomponent generieren
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd resources/likec4
|
|
||||||
|
|
||||||
# Dependencies installieren (nur einmalig)
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# Webcomponent generieren
|
|
||||||
npx likec4 codegen webcomponent \
|
|
||||||
--webcomponent-prefix likec4 \
|
|
||||||
--outfile ../../static/js/likec4-webcomponent.js
|
|
||||||
```
|
|
||||||
|
|
||||||
Dies erzeugt `static/js/likec4-webcomponent.js` (~2-3 MB).
|
|
||||||
|
|
||||||
### 2. Hugo Server starten
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Im Repository-Root
|
|
||||||
hugo server -D
|
|
||||||
|
|
||||||
# Öffne http://localhost:1313/docs/architecture/highlevelarch/
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Änderungen committen
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git add resources/likec4/
|
|
||||||
git add static/
|
|
||||||
git add layouts/
|
|
||||||
git add content/en/docs/architecture/
|
|
||||||
git add hugo.toml
|
|
||||||
git commit -m "feat: integrate LikeC4 architecture documentation from edp-doc"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Verfügbare Seiten
|
|
||||||
|
|
||||||
- `/docs/architecture/` - Architektur-Übersicht
|
|
||||||
- `/docs/architecture/highlevelarch/` - High-Level Architektur mit interaktivem Diagramm
|
|
||||||
- `/docs/architecture/setup/` - Setup und Verwendungs-Anleitung
|
|
||||||
|
|
||||||
## Workflow für Architektur-Änderungen
|
|
||||||
|
|
||||||
1. **Modelle bearbeiten**: `.c4` Dateien in `resources/likec4/models/` oder `views/`
|
|
||||||
2. **Vorschau**: `cd resources/likec4 && npx likec4 start` (öffnet http://localhost:5173)
|
|
||||||
3. **Generieren**: Webcomponent neu generieren (siehe oben)
|
|
||||||
4. **Testen**: Hugo Server starten und Seiten prüfen
|
|
||||||
5. **Committen**: Sowohl `.c4` Dateien als auch `static/js/likec4-webcomponent.js`
|
|
||||||
|
|
||||||
## Technische Details
|
|
||||||
|
|
||||||
### Integration-Komponenten
|
|
||||||
|
|
||||||
- `resources/likec4/` - LikeC4 Quellcode (migriert mit Git-Historie)
|
|
||||||
- `static/js/likec4-loader.js` - Dynamischer Module Loader
|
|
||||||
- `static/css/likec4-styles.css` - Styling inkl. Dark Mode
|
|
||||||
- `layouts/partials/hooks/head-end.html` - Hugo Hook für JS/CSS Einbindung
|
|
||||||
- `hugo.toml` - Konfiguration (`params.likec4.enable = true`)
|
|
||||||
|
|
||||||
### Verwendung in Markdown
|
|
||||||
|
|
||||||
```html
|
|
||||||
<div class="likec4-container">
|
|
||||||
<div class="likec4-header">
|
|
||||||
Dein Diagramm-Titel
|
|
||||||
</div>
|
|
||||||
<likec4-view view-id="otc-faas" browser="true"></likec4-view>
|
|
||||||
<div class="likec4-loading" id="likec4-loading">
|
|
||||||
Loading...
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verfügbare View-IDs finden
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd resources/likec4
|
|
||||||
grep -r "view\s\+\w" views/ models/ --include="*.c4"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Häufige View-IDs
|
|
||||||
|
|
||||||
- `otc-faas` - OTC FaaS Deployment
|
|
||||||
- `edp` - EDP Übersicht
|
|
||||||
- `landscape` - Developer Landscape
|
|
||||||
- `edpbuilderworkflow` - Builder Workflow
|
|
||||||
- `keycloak`, `forgejo`, `argoCD`, etc. - Komponenten-Views
|
|
||||||
|
|
||||||
## Migration von edp-doc
|
|
||||||
|
|
||||||
Dieses Repository ist jetzt die primäre Quelle für LikeC4-Architektur. Das edp-doc Repository kann diese Modelle bei Bedarf als Git Submodule referenzieren.
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
Bei Problemen siehe:
|
|
||||||
- `resources/likec4/INTEGRATION.md` - Detaillierte Integration-Dokumentation
|
|
||||||
- `content/en/docs/architecture/setup.md` - Setup-Anleitung
|
|
||||||
- https://likec4.dev/ - LikeC4 Dokumentation
|
|
||||||
97
README.md
|
|
@ -1,88 +1,33 @@
|
||||||
# IPCEICIS-DeveloperFramework Documentation
|
# EDP - Edge Developer Platform
|
||||||
|
|
||||||
This repo contains business and architectural design and documentation of the DeveloperFramework subproject of IPCEI-CIS.
|
Documentation for the edgeDeveloperFramework (eDF) project and the resulting Edge Developer Platform (EDP) product suite.
|
||||||
|
|
||||||
## How to read and contribute to this documentation locally
|
## Quick Start
|
||||||
|
|
||||||
The documentation is done in [Hugo-format](https://gohugo.io).
|
```bash
|
||||||
|
# Install dependencies
|
||||||
|
task deps
|
||||||
|
|
||||||
Hugo is a static site renderer - so to get the documentation site presented you need a running Hugo processor. Therefore there is
|
# Start local development server
|
||||||
|
task serve
|
||||||
|
|
||||||
* either a Hugo [`.devcontainer`-definition](https://containers.dev/) - just run a devcontainer aware IDE or CLI, e.g. Visual Studio code
|
# Run tests
|
||||||
* or a Hugo [`Devbox`-definition](https://www.jetify.com/devbox/) - in this case just run a devbox shell
|
task test
|
||||||
|
|
||||||
## Local installation of the Hugo documentation system
|
# Build production site
|
||||||
|
task build
|
||||||
|
```
|
||||||
|
|
||||||
We describe two possible ways (one with devcontainer, one with devbox) to get the Hugo-documentation system locally running.
|
## Documentation
|
||||||
|
|
||||||
For both prepare the following three steps:
|
* [Developer Guide](doc/README-developer.md)
|
||||||
|
* [Technical Writer Guide](doc/README-technical-writer.md)
|
||||||
|
* [Release Notes](doc/RELEASE.md)
|
||||||
|
|
||||||
1. open a terminal on your local box
|
## Project
|
||||||
2. clone this repo: `git clone https://forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/DevFW/website-and-documentation`
|
|
||||||
3. change to the repo working dir: `cd website-and-documentation`
|
|
||||||
|
|
||||||
### Possibility 1: Hugo in a devcontainer
|
This is a Hugo-based documentation site for the Edge Developer Platform, built as part of the IPCEI-CIS project.
|
||||||
|
|
||||||
[`devcontainers`](https://containers.dev/) are running containers as virtual systems on your local box. The defintion is in the `.devcontainer` folder.
|
**Website:** Access the documentation at the deployed URL or run locally with `task serve`
|
||||||
Thus as preliminary you need a container daemon running, e.g. Docker.
|
|
||||||
|
|
||||||
There are several options to create and run the devcontainer - we present here two:
|
For detailed information, see the documentation in the `doc/` folder.
|
||||||
|
|
||||||
#### Option 1: Run the container triggered by and connected to an IDE, e.g. VS Code
|
|
||||||
|
|
||||||
1. open the repo in an [Devcontainer-aware tool/IDE](https://containers.dev/supporting) (e.g. `code .`)
|
|
||||||
1. start the `devcontainer` (in VSC it's `F1 + Reopen in Devcontainer`)
|
|
||||||
1. when the container is up & running just open your browser with `http://localhost:1313/`
|
|
||||||
|
|
||||||
#### Option 2: Run the container natively
|
|
||||||
|
|
||||||
An alternative to get the container image is the [devcontainer CLI](https://github.com/devcontainers/cli), then you can run the devcontainer without VS Code.
|
|
||||||
Thus as preliminary you need to do the install steps of the devconatiner cli.
|
|
||||||
|
|
||||||
1. start the devcontainer by running: `devcontainer up --workspace-folder .`
|
|
||||||
1. find out the IP address of the devconatiner by using `docker ps` and `docker inspect <id of container>`
|
|
||||||
1. when the container is up & running just open your browser with `http://<DOCKER IP>:1313/`
|
|
||||||
|
|
||||||
### Possibility 2: Hugo in a devbox
|
|
||||||
|
|
||||||
[`Devboxes`](https://www.jetify.com/devbox/) are locally isolated environments, managed by the [Nix package manager](https://nix.dev/). So first [prepare the devbox](https://www.jetify.com/docs/devbox/installing_devbox/).
|
|
||||||
|
|
||||||
Then
|
|
||||||
|
|
||||||
1. ```devbox shell```
|
|
||||||
1. In the shell: ```hugo serve```
|
|
||||||
|
|
||||||
|
|
||||||
## Editing
|
|
||||||
|
|
||||||
### Documentation language
|
|
||||||
|
|
||||||
The documentation is done in [Docsy-Theme](https://www.docsy.dev/).
|
|
||||||
|
|
||||||
So for editing content just goto the `content`-folder and edit content arrording to the [Docsy documentation](https://www.docsy.dev/docs/adding-content/)
|
|
||||||
|
|
||||||
## Commiting
|
|
||||||
|
|
||||||
After having finished a unit of work commit and push.
|
|
||||||
|
|
||||||
# Annex
|
|
||||||
|
|
||||||
## Installation steps illustrated
|
|
||||||
|
|
||||||
When you run the above installation, the outputs could typically look like this:
|
|
||||||
|
|
||||||
### In Visual Studio Code
|
|
||||||
|
|
||||||
#### Reopen in Container
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Hugo server is running and (typically) listens to localhost:1313
|
|
||||||
|
|
||||||
After some installation time you have:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Final result in a web browser
|
|
||||||
|
|
||||||

|
|
||||||
|
|
|
||||||
62
TESTING.md
|
|
@ -1,62 +0,0 @@
|
||||||
# Hugo Site Testing
|
|
||||||
|
|
||||||
Dieses Projekt verwendet mehrere automatisierte Tests zur Qualitätssicherung.
|
|
||||||
|
|
||||||
## Verfügbare Tests
|
|
||||||
|
|
||||||
### 1. Build-Test
|
|
||||||
```bash
|
|
||||||
npm run test:build
|
|
||||||
```
|
|
||||||
Prüft ob die Hugo-Seite überhaupt baut und zeigt Warnungen/Fehler an.
|
|
||||||
|
|
||||||
### 2. Markdown-Linting
|
|
||||||
```bash
|
|
||||||
npm run test:markdown
|
|
||||||
```
|
|
||||||
Validiert Markdown-Dateien auf Stilprobleme und Best Practices.
|
|
||||||
|
|
||||||
### 3. HTML-Validierung
|
|
||||||
```bash
|
|
||||||
npm run test:html
|
|
||||||
```
|
|
||||||
Prüft die generierte HTML auf HTML5-Konformität.
|
|
||||||
|
|
||||||
### 4. Link-Checker
|
|
||||||
```bash
|
|
||||||
npm run test:links
|
|
||||||
```
|
|
||||||
Testet alle internen und externen Links auf Gültigkeit.
|
|
||||||
|
|
||||||
### Alle Tests ausführen
|
|
||||||
```bash
|
|
||||||
npm test
|
|
||||||
```
|
|
||||||
|
|
||||||
### Schnelle Tests (ohne Link-Check)
|
|
||||||
```bash
|
|
||||||
npm run test:quick
|
|
||||||
```
|
|
||||||
|
|
||||||
## Konfigurationsdateien
|
|
||||||
|
|
||||||
- `.htmltest.yml` - Link-Checker-Konfiguration
|
|
||||||
- `.htmlvalidate.json` - HTML-Validierungs-Regeln
|
|
||||||
- `.markdownlint.json` - Markdown-Linting-Regeln
|
|
||||||
|
|
||||||
## CI/CD Integration
|
|
||||||
|
|
||||||
GitHub Actions führt diese Tests automatisch bei jedem Push/PR aus:
|
|
||||||
- `.github/workflows/test.yml`
|
|
||||||
|
|
||||||
## Lokale Entwicklung
|
|
||||||
|
|
||||||
Vor dem Commit empfohlen:
|
|
||||||
```bash
|
|
||||||
npm run test:quick # Schnelle Tests
|
|
||||||
```
|
|
||||||
|
|
||||||
Vor dem Push:
|
|
||||||
```bash
|
|
||||||
npm test # Alle Tests inkl. Link-Check
|
|
||||||
```
|
|
||||||
109
Taskfile.yml
|
|
@ -13,16 +13,35 @@ tasks:
|
||||||
# Build tasks
|
# Build tasks
|
||||||
build:
|
build:
|
||||||
desc: Build Hugo site
|
desc: Build Hugo site
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
|
- build:generate-info
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.HUGO_CMD}} --gc --minify"
|
- "{{.HUGO_CMD}} --gc --minify"
|
||||||
|
|
||||||
build:dev:
|
build:dev:
|
||||||
desc: Build Hugo site for development
|
desc: Build Hugo site for development
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
|
- build:generate-info
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.HUGO_CMD}}"
|
- "{{.HUGO_CMD}}"
|
||||||
|
|
||||||
|
build:generate-info:
|
||||||
|
desc: Generate build information (git commit, version, etc.)
|
||||||
|
sources:
|
||||||
|
- .git/HEAD
|
||||||
|
- .git/refs/**/*
|
||||||
|
generates:
|
||||||
|
- data/build_info.json
|
||||||
|
cmds:
|
||||||
|
- ./scripts/generate-build-info.sh
|
||||||
|
|
||||||
serve:
|
serve:
|
||||||
desc: Start Hugo dev server
|
desc: Start Hugo dev server
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
|
- build:generate-info
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.HUGO_CMD}} server"
|
- "{{.HUGO_CMD}} server"
|
||||||
|
|
||||||
|
|
@ -34,43 +53,127 @@ tasks:
|
||||||
# Test tasks
|
# Test tasks
|
||||||
test:
|
test:
|
||||||
desc: Run all tests
|
desc: Run all tests
|
||||||
|
deps:
|
||||||
|
- test:build
|
||||||
|
- test:markdown
|
||||||
|
- test:html
|
||||||
|
- likec4:validate
|
||||||
|
|
||||||
|
test:hugo:
|
||||||
|
desc: Run Hugo-only tests (markdown, HTML, build)
|
||||||
|
deps:
|
||||||
|
- test:build
|
||||||
|
- test:markdown
|
||||||
|
- test:html
|
||||||
|
|
||||||
|
test:full:
|
||||||
|
desc: Run all tests including link check (may have errors in legacy content)
|
||||||
deps:
|
deps:
|
||||||
- test:build
|
- test:build
|
||||||
- test:markdown
|
- test:markdown
|
||||||
- test:html
|
- test:html
|
||||||
- test:links
|
- test:links
|
||||||
|
- likec4:validate
|
||||||
|
|
||||||
test:quick:
|
test:quick:
|
||||||
desc: Run quick tests (without link check)
|
desc: Run quick tests (without link check)
|
||||||
deps:
|
deps:
|
||||||
- test:build
|
- test:build
|
||||||
- test:markdown
|
- test:markdown
|
||||||
|
- likec4:validate
|
||||||
|
|
||||||
test:build:
|
test:build:
|
||||||
desc: Test Hugo build
|
desc: Test Hugo build
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
|
- build:generate-info
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.HUGO_CMD}} --gc --minify --logLevel info"
|
- "{{.HUGO_CMD}} --gc --minify --logLevel info"
|
||||||
|
|
||||||
test:markdown:
|
test:markdown:
|
||||||
desc: Lint markdown files
|
desc: Lint markdown files
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.NPM_CMD}} run test:markdown"
|
- "{{.NPM_CMD}} run test:markdown"
|
||||||
|
|
||||||
test:html:
|
test:html:
|
||||||
desc: Validate HTML
|
desc: Validate HTML
|
||||||
|
deps:
|
||||||
|
- deps:ensure-npm
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.NPM_CMD}} run test:html"
|
- "{{.NPM_CMD}} run test:html"
|
||||||
|
|
||||||
test:links:
|
test:links:
|
||||||
desc: Check links
|
desc: Check links (skips legacy content)
|
||||||
cmds:
|
cmds:
|
||||||
- htmltest
|
- |
|
||||||
|
# Move legacy dirs outside public temporarily
|
||||||
|
mkdir -p /tmp/htmltest-backup-$$
|
||||||
|
if [ -d "public/docs-old" ]; then mv public/docs-old /tmp/htmltest-backup-$$/; fi
|
||||||
|
if [ -d "public/blog" ]; then mv public/blog /tmp/htmltest-backup-$$/; fi
|
||||||
|
if [ -d "public/_print/docs-old" ]; then mv public/_print/docs-old /tmp/htmltest-backup-$$/docs-old-print; fi
|
||||||
|
|
||||||
|
# Run htmltest
|
||||||
|
htmltest || EXIT_CODE=$?
|
||||||
|
|
||||||
|
# Restore directories
|
||||||
|
if [ -d "/tmp/htmltest-backup-$$/docs-old" ]; then mv /tmp/htmltest-backup-$$/docs-old public/; fi
|
||||||
|
if [ -d "/tmp/htmltest-backup-$$/blog" ]; then mv /tmp/htmltest-backup-$$/blog public/; fi
|
||||||
|
if [ -d "/tmp/htmltest-backup-$$/docs-old-print" ]; then mv /tmp/htmltest-backup-$$/docs-old-print public/_print/docs-old; fi
|
||||||
|
rm -rf /tmp/htmltest-backup-$$
|
||||||
|
|
||||||
|
# Exit with the original exit code
|
||||||
|
exit ${EXIT_CODE:-0}
|
||||||
|
|
||||||
|
# LikeC4 tasks
|
||||||
|
likec4:generate:
|
||||||
|
desc: Generate LikeC4 webcomponent (includes all architecture projects)
|
||||||
|
cmds:
|
||||||
|
- npx likec4 codegen webcomponent --webcomponent-prefix likec4 --outfile static/js/likec4-webcomponent.js resources/edp-likec4 resources/doc-likec4
|
||||||
|
|
||||||
|
likec4:validate:
|
||||||
|
desc: Validate LikeC4 models
|
||||||
|
cmds:
|
||||||
|
- echo "Validating EDP architecture models..."
|
||||||
|
- npx likec4 validate --ignore-layout resources/edp-likec4
|
||||||
|
- echo "Validating Documentation platform models..."
|
||||||
|
- npx likec4 validate --ignore-layout resources/doc-likec4
|
||||||
|
- echo "✓ All LikeC4 models validated successfully"
|
||||||
|
|
||||||
|
likec4:validate:layout:
|
||||||
|
desc: Validate LikeC4 models including layout
|
||||||
|
cmds:
|
||||||
|
- echo "Validating EDP architecture models (including layout)..."
|
||||||
|
- npx likec4 validate resources/edp-likec4
|
||||||
|
- echo "Validating Documentation platform models (including layout)..."
|
||||||
|
- npx likec4 validate resources/doc-likec4
|
||||||
|
- echo "✓ All LikeC4 models and layouts validated successfully"
|
||||||
|
|
||||||
|
likec4:update:
|
||||||
|
desc: Update LikeC4 to latest version
|
||||||
|
cmds:
|
||||||
|
- npm update likec4 --prefix resources/edp-likec4
|
||||||
|
- npm update likec4 --prefix resources/doc-likec4
|
||||||
|
- echo "✓ LikeC4 updated in both projects"
|
||||||
|
|
||||||
# Development tasks
|
# Development tasks
|
||||||
|
deps:ensure-npm:
|
||||||
|
desc: Ensure npm dependencies are installed
|
||||||
|
sources:
|
||||||
|
- package.json
|
||||||
|
- package-lock.json
|
||||||
|
generates:
|
||||||
|
- node_modules/.package-lock.json
|
||||||
|
cmds:
|
||||||
|
- "{{.NPM_CMD}} ci"
|
||||||
|
status:
|
||||||
|
- test -d node_modules
|
||||||
|
|
||||||
deps:install:
|
deps:install:
|
||||||
desc: Install all dependencies
|
desc: Install all dependencies
|
||||||
cmds:
|
cmds:
|
||||||
- "{{.NPM_CMD}} install"
|
- "{{.NPM_CMD}} ci"
|
||||||
- "{{.HUGO_CMD}} mod get -u"
|
- "{{.HUGO_CMD}} mod get -u"
|
||||||
- "{{.HUGO_CMD}} mod tidy"
|
- "{{.HUGO_CMD}} mod tidy"
|
||||||
|
|
||||||
|
|
|
||||||
69
VERSIONS.md
|
|
@ -1,69 +0,0 @@
|
||||||
# Version Management
|
|
||||||
|
|
||||||
## Single Source of Truth: `.env.versions`
|
|
||||||
|
|
||||||
All tool versions are centrally managed in `.env.versions`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
NODE_VERSION=24.10.0
|
|
||||||
GO_VERSION=1.25.1
|
|
||||||
HUGO_VERSION=0.151.0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Where are versions used?
|
|
||||||
|
|
||||||
1. **devbox.json** - Local development environment (manual sync required)
|
|
||||||
2. **Dockerfile** - Build arguments with defaults
|
|
||||||
3. **.github/workflows/ci.yaml** - CI/CD pipeline (automatic)
|
|
||||||
4. **scripts/get-versions.sh** - Helper script for local builds
|
|
||||||
|
|
||||||
## Updating Versions
|
|
||||||
|
|
||||||
### Step 1: Update `.env.versions`
|
|
||||||
|
|
||||||
Edit the file with new versions:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
NODE_VERSION=24.12.0
|
|
||||||
GO_VERSION=1.25.2
|
|
||||||
HUGO_VERSION=0.152.0
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 2: Update `devbox.json`
|
|
||||||
|
|
||||||
Manually sync the versions in `devbox.json`:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"packages": [
|
|
||||||
"hugo@0.152.0",
|
|
||||||
"go@1.25.2",
|
|
||||||
"nodejs@24.12.0",
|
|
||||||
...
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 3: Rebuild devbox environment
|
|
||||||
|
|
||||||
```bash
|
|
||||||
devbox shell --refresh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 4: Test Docker build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source scripts/get-versions.sh
|
|
||||||
# Follow the printed docker build command
|
|
||||||
```
|
|
||||||
|
|
||||||
## Why not automatic devbox sync?
|
|
||||||
|
|
||||||
- devbox.json uses a different version format (e.g., `@latest` vs specific versions)
|
|
||||||
- devbox package names may differ from Docker image names
|
|
||||||
- Keeps devbox.json simple and readable
|
|
||||||
- Manual sync ensures intentional version updates
|
|
||||||
|
|
||||||
## CI/CD
|
|
||||||
|
|
||||||
The GitHub Actions workflow automatically loads versions from `.env.versions` - no manual intervention needed.
|
|
||||||
|
|
@ -406,6 +406,34 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lead blocks with primary color background
|
||||||
|
.td-block--primary,
|
||||||
|
section[class*="bg-primary"],
|
||||||
|
section[class*="color-primary"] {
|
||||||
|
background-color: var(--color-primary) !important;
|
||||||
|
|
||||||
|
* {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6, p, a, .lead {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent white background on hover
|
||||||
|
&:hover,
|
||||||
|
*:hover {
|
||||||
|
background-color: transparent !important;
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.td-box {
|
.td-box {
|
||||||
background-color: var(--color-card);
|
background-color: var(--color-card);
|
||||||
border: 1px solid var(--nav-border-color);
|
border: 1px solid var(--nav-border-color);
|
||||||
|
|
@ -458,3 +486,39 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Feature blocks on homepage (blocks/feature)
|
||||||
|
.td-box--dark,
|
||||||
|
.td-box--colored,
|
||||||
|
section[class*="bg-dark"] .td-box,
|
||||||
|
section[class*="color-dark"] .td-box {
|
||||||
|
.h2, .h3, .h4, .h5, h2, h3, h4, h5, p, a {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.8) !important;
|
||||||
|
|
||||||
|
.h2, .h3, .h4, .h5, h2, h3, h4, h5, p, a {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure text stays visible in dark sections
|
||||||
|
section[class*="bg-dark"],
|
||||||
|
section[class*="color-dark"] {
|
||||||
|
* {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td-box, .card {
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.8) !important;
|
||||||
|
|
||||||
|
* {
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,84 @@ title: IPCEI-CIS Developer Framework
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< blocks/cover title="IPCEI-CIS Developer Framework" image_anchor="top" height="full" >}}
|
{{< blocks/cover title="IPCEI-CIS Developer Framework" image_anchor="top" height="full" >}}
|
||||||
|
<p class="lead mt-5">
|
||||||
|
A comprehensive enterprise development platform enabling teams to build, deploy, and operate cloud-native applications with ease.
|
||||||
|
</p>
|
||||||
|
{{< blocks/link-down color="info" >}}
|
||||||
{{< /blocks/cover >}}
|
{{< /blocks/cover >}}
|
||||||
|
|
||||||
|
{{% blocks/lead color="primary" %}}
|
||||||
|
The IPCEI-CIS Developer Framework provides everything you need to deliver modern applications at scale.
|
||||||
|
Built on open standards and battle-tested technologies.
|
||||||
|
{{% /blocks/lead %}}
|
||||||
|
|
||||||
|
{{% blocks/section color="dark" type="row" %}}
|
||||||
|
|
||||||
|
{{% blocks/feature icon="fa-solid fa-diagram-project" title="Architecture Documentation" url="/docs/architecture/" %}}
|
||||||
|
Explore the platform's architecture with interactive C4 diagrams. Understand the system design, components, and deployment topology.
|
||||||
|
|
||||||
|
**Dive into the architecture →**
|
||||||
|
{{% /blocks/feature %}}
|
||||||
|
|
||||||
|
{{% blocks/feature icon="fa-solid fa-book-open" title="Technical Writer Guide" url="/docs/documentation/" %}}
|
||||||
|
Learn how to contribute to this documentation. Write content, test locally, and understand the CI/CD pipeline.
|
||||||
|
|
||||||
|
**Start documenting →**
|
||||||
|
{{% /blocks/feature %}}
|
||||||
|
|
||||||
|
{{% blocks/feature icon="fa-solid fa-archive" title="Legacy Documentation (v1)" url="/docs/v1/" %}}
|
||||||
|
Access the previous version of our documentation including historical project information and early architecture decisions.
|
||||||
|
|
||||||
|
**Browse v1 docs →**
|
||||||
|
{{% /blocks/feature %}}
|
||||||
|
|
||||||
|
{{% /blocks/section %}}
|
||||||
|
|
||||||
|
{{% blocks/section color="white" %}}
|
||||||
|
|
||||||
|
## What's in the Platform?
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4 mb-4">
|
||||||
|
|
||||||
|
### 🚀 Developer Experience
|
||||||
|
|
||||||
|
* **Backstage Portal** - Self-service platform
|
||||||
|
* **GitOps Workflows** - Automated deployments
|
||||||
|
* **Golden Paths** - Best practices built-in
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4 mb-4">
|
||||||
|
|
||||||
|
### 🛠️ Infrastructure as Code
|
||||||
|
|
||||||
|
* **Crossplane** - Cloud resource provisioning
|
||||||
|
* **ArgoCD** - Declarative GitOps
|
||||||
|
* **Terraform** - Infrastructure automation
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4 mb-4">
|
||||||
|
|
||||||
|
### 📊 Observability
|
||||||
|
|
||||||
|
* **Prometheus & Grafana** - Metrics & dashboards
|
||||||
|
* **Loki** - Log aggregation
|
||||||
|
* **OpenTelemetry** - Distributed tracing
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{% /blocks/section %}}
|
||||||
|
|
||||||
|
{{% blocks/section color="light" %}}
|
||||||
|
|
||||||
|
## Get Started
|
||||||
|
|
||||||
|
Whether you're a **platform engineer**, **application developer**, or **technicalWriter**, we have resources for you:
|
||||||
|
|
||||||
|
* 📖 Read the [Documentation](/docs/) to understand the platform
|
||||||
|
* 🏗️ Explore [Platform Components](/docs/components/) and their usage
|
||||||
|
* ✍️ Learn [How to Document](/docs/DOCUMENTATION-GUIDE/) and contribute
|
||||||
|
* 🔍 Browse [Legacy Documentation](/docs-old/) for historical context
|
||||||
|
|
||||||
|
{{% /blocks/section %}}
|
||||||
|
|
|
||||||
6
content/en/blog/20251027_important_links.md
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: important links
|
||||||
|
weight: 20
|
||||||
|
---
|
||||||
|
|
||||||
|
* Gardener login to Edge and orca cluster: IPCEICIS-6222
|
||||||
23
content/en/docs-old/_index.md
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
title: Legacy Documentation
|
||||||
|
linkTitle: Docs (Old)
|
||||||
|
menu:
|
||||||
|
main:
|
||||||
|
weight: 50
|
||||||
|
weight: 50
|
||||||
|
cascade:
|
||||||
|
- type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Legacy Documentation
|
||||||
|
|
||||||
|
This section contains the previous version of the documentation for reference purposes.
|
||||||
|
|
||||||
|
**Note**: This documentation is archived and may be outdated. Please refer to the main [Documentation](../docs/) section for current information.
|
||||||
|
|
||||||
|
## Available Sections
|
||||||
|
|
||||||
|
* [Architecture](architecture/) - System architecture and diagrams
|
||||||
|
* [Documentation](documentation/) - Meta documentation about the documentation system
|
||||||
|
* [Platform Overview](platform-overview/) - Overview document
|
||||||
|
* [v1 (Legacy)](v1/) - Original v1 documentation
|
||||||
|
|
@ -10,60 +10,14 @@ This document describes the high-level architecture of our Enterprise Developmen
|
||||||
|
|
||||||
## Interactive Architecture Diagram
|
## Interactive Architecture Diagram
|
||||||
|
|
||||||
<div class="likec4-container">
|
{{< likec4-view view="otc-faas" project="architecture" title="Enterprise Development Platform - OTC FaaS Deployment Architecture" >}}
|
||||||
<div class="likec4-header">
|
|
||||||
Enterprise Development Platform - OTC FaaS Deployment Architecture
|
|
||||||
</div>
|
|
||||||
<likec4-view view-id="otc-faas" browser="true"></likec4-view>
|
|
||||||
<div class="likec4-loading" id="likec4-loading">
|
|
||||||
Loading architecture diagram...
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Enhanced loading check with fallback
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
let attempts = 0;
|
|
||||||
const maxAttempts = 10;
|
|
||||||
|
|
||||||
function checkLikeC4Loading() {
|
|
||||||
attempts++;
|
|
||||||
const component = document.querySelector('likec4-view');
|
|
||||||
const loading = document.getElementById('likec4-loading');
|
|
||||||
|
|
||||||
if (component && component.shadowRoot && component.shadowRoot.children.length > 0) {
|
|
||||||
if (loading) loading.style.display = 'none';
|
|
||||||
console.log('LikeC4 component loaded successfully');
|
|
||||||
} else if (attempts >= maxAttempts) {
|
|
||||||
console.warn('LikeC4 component failed to load');
|
|
||||||
if (loading) {
|
|
||||||
loading.innerHTML = 'Interactive diagram failed to load. <br><small>Please ensure JavaScript is enabled and the webcomponent is generated.</small>';
|
|
||||||
loading.style.color = '#dc3545';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setTimeout(checkLikeC4Loading, 1000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if LikeC4 loader is available
|
|
||||||
if (typeof window.customElements !== 'undefined') {
|
|
||||||
setTimeout(checkLikeC4Loading, 1500);
|
|
||||||
} else {
|
|
||||||
const loading = document.getElementById('likec4-loading');
|
|
||||||
if (loading) {
|
|
||||||
loading.innerHTML = 'Interactive diagrams require a modern browser with JavaScript enabled.';
|
|
||||||
loading.style.color = '#dc3545';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{{< alert title="Interactive Diagram" >}}
|
{{< alert title="Interactive Diagram" >}}
|
||||||
The diagram above is interactive when viewed in a compatible browser.
|
The diagram above is interactive when viewed in a compatible browser.
|
||||||
You can click on components to explore the architecture details.
|
You can click on components to explore the architecture details.
|
||||||
|
|
||||||
**Note:** The interactive diagram requires the LikeC4 webcomponent to be generated.
|
**Note:** The interactive diagram requires the LikeC4 webcomponent to be generated.
|
||||||
See the [setup instructions]({{< ref "/docs/architecture/setup" >}}) for details.
|
See the [setup instructions]({{< ref "/docs-old/architecture/setup" >}}) for details.
|
||||||
{{< /alert >}}
|
{{< /alert >}}
|
||||||
|
|
||||||
## Architecture Overview
|
## Architecture Overview
|
||||||
|
|
@ -110,11 +64,11 @@ The interactive diagram above shows the relationships between different componen
|
||||||
|
|
||||||
To update or modify the architecture diagrams:
|
To update or modify the architecture diagrams:
|
||||||
|
|
||||||
1. Edit the `.c4` files in `resources/likec4/`
|
1. Edit the `.c4` files in `resources/edp-likec4/`
|
||||||
2. Regenerate the webcomponent:
|
2. Regenerate the webcomponent:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
npx likec4 codegen webcomponent \
|
npx likec4 codegen webcomponent \
|
||||||
--webcomponent-prefix likec4 \
|
--webcomponent-prefix likec4 \
|
||||||
--outfile ../../static/js/likec4-webcomponent.js
|
--outfile ../../static/js/likec4-webcomponent.js
|
||||||
|
|
@ -122,4 +76,4 @@ To update or modify the architecture diagrams:
|
||||||
|
|
||||||
3. Commit both the model changes and the regenerated JavaScript file
|
3. Commit both the model changes and the regenerated JavaScript file
|
||||||
|
|
||||||
For more information, see the [LikeC4 Integration Guide]({{< ref "/docs/architecture/setup" >}}).
|
For more information, see the [LikeC4 Integration Guide]({{< ref "/docs-old/architecture/setup" >}}).
|
||||||
|
|
@ -24,7 +24,7 @@ LikeC4 enables you to create interactive C4 architecture diagrams as code. The d
|
||||||
Navigate to the LikeC4 directory and install dependencies:
|
Navigate to the LikeC4 directory and install dependencies:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -39,6 +39,7 @@ npx likec4 codegen webcomponent \
|
||||||
```
|
```
|
||||||
|
|
||||||
This command:
|
This command:
|
||||||
|
|
||||||
- Reads all `.c4` files from `models/` and `views/`
|
- Reads all `.c4` files from `models/` and `views/`
|
||||||
- Generates a single JavaScript file with all architecture views
|
- Generates a single JavaScript file with all architecture views
|
||||||
- Outputs to `static/js/likec4-webcomponent.js`
|
- Outputs to `static/js/likec4-webcomponent.js`
|
||||||
|
|
@ -54,8 +55,8 @@ The integration should already be configured in:
|
||||||
|
|
||||||
## Directory Structure
|
## Directory Structure
|
||||||
|
|
||||||
```
|
```plaintext
|
||||||
resources/likec4/
|
resources/edp-likec4/
|
||||||
├── models/ # C4 model definitions
|
├── models/ # C4 model definitions
|
||||||
│ ├── components/ # Component models
|
│ ├── components/ # Component models
|
||||||
│ ├── containers/ # Container models
|
│ ├── containers/ # Container models
|
||||||
|
|
@ -93,11 +94,12 @@ Add this to any Markdown file:
|
||||||
To find available view IDs, search the `.c4` files:
|
To find available view IDs, search the `.c4` files:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
grep -r "view\s\+\w" views/ models/ --include="*.c4"
|
grep -r "view\s\+\w" views/ models/ --include="*.c4"
|
||||||
```
|
```
|
||||||
|
|
||||||
Common views:
|
Common views:
|
||||||
|
|
||||||
- `otc-faas` - OTC FaaS deployment
|
- `otc-faas` - OTC FaaS deployment
|
||||||
- `edp` - EDP overview
|
- `edp` - EDP overview
|
||||||
- `landscape` - Developer landscape
|
- `landscape` - Developer landscape
|
||||||
|
|
@ -128,14 +130,14 @@ Click on components in the diagram to explore the architecture.
|
||||||
|
|
||||||
### 1. Modify Architecture Models
|
### 1. Modify Architecture Models
|
||||||
|
|
||||||
Edit the `.c4` files in `resources/likec4/`:
|
Edit the `.c4` files in `resources/edp-likec4/`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Edit a model
|
# Edit a model
|
||||||
vi resources/likec4/models/containers/argocd.c4
|
vi resources/edp-likec4/models/containers/argocd.c4
|
||||||
|
|
||||||
# Or edit a view
|
# Or edit a view
|
||||||
vi resources/likec4/views/deployment/otc/otc-faas.c4
|
vi resources/edp-likec4/views/deployment/otc/otc-faas.c4
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Preview Changes Locally
|
### 2. Preview Changes Locally
|
||||||
|
|
@ -143,7 +145,7 @@ vi resources/likec4/views/deployment/otc/otc-faas.c4
|
||||||
Use the LikeC4 CLI to preview:
|
Use the LikeC4 CLI to preview:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
|
|
||||||
# Start preview server
|
# Start preview server
|
||||||
npx likec4 start
|
npx likec4 start
|
||||||
|
|
@ -156,7 +158,7 @@ npx likec4 start
|
||||||
After making changes:
|
After making changes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
npx likec4 codegen webcomponent \
|
npx likec4 codegen webcomponent \
|
||||||
--webcomponent-prefix likec4 \
|
--webcomponent-prefix likec4 \
|
||||||
--outfile ../../static/js/likec4-webcomponent.js
|
--outfile ../../static/js/likec4-webcomponent.js
|
||||||
|
|
@ -178,7 +180,7 @@ hugo server -D
|
||||||
Commit both the model files and the regenerated web component:
|
Commit both the model files and the regenerated web component:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git add resources/likec4/
|
git add resources/edp-likec4/
|
||||||
git add static/js/likec4-webcomponent.js
|
git add static/js/likec4-webcomponent.js
|
||||||
git commit -m "feat: update architecture diagrams"
|
git commit -m "feat: update architecture diagrams"
|
||||||
```
|
```
|
||||||
|
|
@ -242,12 +244,15 @@ Then update `layouts/partials/hooks/head-end.html`:
|
||||||
|
|
||||||
1. **Check browser console** (F12 → Console)
|
1. **Check browser console** (F12 → Console)
|
||||||
2. **Verify webcomponent exists:**
|
2. **Verify webcomponent exists:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ls -lh static/js/likec4-webcomponent.js
|
ls -lh static/js/likec4-webcomponent.js
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Regenerate if missing:**
|
3. **Regenerate if missing:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
npm install
|
npm install
|
||||||
npx likec4 codegen webcomponent \
|
npx likec4 codegen webcomponent \
|
||||||
--webcomponent-prefix likec4 \
|
--webcomponent-prefix likec4 \
|
||||||
|
|
@ -258,8 +263,9 @@ Then update `layouts/partials/hooks/head-end.html`:
|
||||||
|
|
||||||
- Check view ID matches exactly (case-sensitive)
|
- Check view ID matches exactly (case-sensitive)
|
||||||
- Search for the view in `.c4` files:
|
- Search for the view in `.c4` files:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
grep -r "view otc-faas" resources/likec4/
|
grep -r "view otc-faas" resources/edp-likec4/
|
||||||
```
|
```
|
||||||
|
|
||||||
### Styling Issues
|
### Styling Issues
|
||||||
|
|
@ -272,7 +278,7 @@ Then update `layouts/partials/hooks/head-end.html`:
|
||||||
If LikeC4 codegen fails:
|
If LikeC4 codegen fails:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd resources/likec4
|
cd resources/edp-likec4
|
||||||
rm -rf node_modules package-lock.json
|
rm -rf node_modules package-lock.json
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
@ -38,13 +38,13 @@ TBD
|
||||||
|
|
||||||
### Argo Workflows + Events
|
### Argo Workflows + Events
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* integration with ArgoCD
|
* integration with ArgoCD
|
||||||
* ability to trigger additional workflows based on events.
|
* ability to trigger additional workflows based on events.
|
||||||
* level of maturity and community support.
|
* level of maturity and community support.
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* Ability to self-host runners?
|
* Ability to self-host runners?
|
||||||
* way how composition for pipelines works (based on Kubernetes CRDs)
|
* way how composition for pipelines works (based on Kubernetes CRDs)
|
||||||
|
|
@ -57,53 +57,53 @@ TBD
|
||||||
|
|
||||||
### Argo Workflows + Events + Additional Composition tool
|
### Argo Workflows + Events + Additional Composition tool
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* Composability can be offloaded to another tool
|
* Composability can be offloaded to another tool
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* All cons of the previous option (except composability)
|
* All cons of the previous option (except composability)
|
||||||
* Additional complexity by adding another tool
|
* Additional complexity by adding another tool
|
||||||
|
|
||||||
### Forgejo Actions
|
### Forgejo Actions
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* tight integration with GitHub Actions providing a familiar interface for developers and a vast catalog of actions to choose from
|
* tight integration with GitHub Actions providing a familiar interface for developers and a vast catalog of actions to choose from
|
||||||
* ability to compose pipelines without relying on another tool
|
* ability to compose pipelines without relying on another tool
|
||||||
* Self-hosting of runners possible
|
* Self-hosting of runners possible
|
||||||
* every component can have its own repository and use different tools (e.g. written in go, bash, python etc.)
|
* every component can have its own repository and use different tools (e.g. written in go, bash, python etc.)
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* level of maturity - will require additional investments to provide a production-grade system
|
* level of maturity - will require additional investments to provide a production-grade system
|
||||||
|
|
||||||
### Forgejo Actions + Additional Tool
|
### Forgejo Actions + Additional Tool
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* may be possible to use GitHub actions alongside another tool
|
* may be possible to use GitHub actions alongside another tool
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* additional complexity by adding another tool
|
* additional complexity by adding another tool
|
||||||
|
|
||||||
### Shuttle
|
### Shuttle
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* Possibility to clearly define interfaces for pipeline steps
|
* Possibility to clearly define interfaces for pipeline steps
|
||||||
* Relatively simple
|
* Relatively simple
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* basically backed by only one company
|
* basically backed by only one company
|
||||||
* **centralized templates**, so no mechanism for composing pipelines from multiple repositories
|
* **centralized templates**, so no mechanism for composing pipelines from multiple repositories
|
||||||
|
|
||||||
### Dagger
|
### Dagger
|
||||||
|
|
||||||
**Pro**
|
#### Pro
|
||||||
|
|
||||||
* Pipeline as code
|
* Pipeline as code
|
||||||
* if it runs it should run anywhere and produce the "same" / somewhat stable results
|
* if it runs it should run anywhere and produce the "same" / somewhat stable results
|
||||||
|
|
@ -112,13 +112,13 @@ TBD
|
||||||
* additional tooling, like trivy, is added to a build pipeline with low effort due to containers and existing plugin/wrappers
|
* additional tooling, like trivy, is added to a build pipeline with low effort due to containers and existing plugin/wrappers
|
||||||
* you can create complex test environments similar to test containers and docker compose
|
* you can create complex test environments similar to test containers and docker compose
|
||||||
|
|
||||||
**Con**
|
#### Con
|
||||||
|
|
||||||
* relies heavily containers, which might not be available some environments (due to policy etc), it also has an effect on reproducibility and verifiability
|
* relies heavily containers, which might not be available some environments (due to policy etc), it also has an effect on reproducibility and verifiability
|
||||||
* as a dev you need to properly understand containers
|
* as a dev you need to properly understand containers
|
||||||
* dagger engine has to run privileged locally and/or in the cloud which might be a blocker or at least a big pain in the ...
|
* dagger engine has to run privileged locally and/or in the cloud which might be a blocker or at least a big pain in the ...
|
||||||
|
|
||||||
**Suggestion Patrick**
|
#### Suggestion Patrick
|
||||||
|
|
||||||
* dagger is a heavy weight and might not be as productive in a dev workflow as it seems (setup lsp etc)
|
* dagger is a heavy weight and might not be as productive in a dev workflow as it seems (setup lsp etc)
|
||||||
* it might be too opinionated to force on teams, especially since it is not near mainstream enough, community might be too small
|
* it might be too opinionated to force on teams, especially since it is not near mainstream enough, community might be too small
|
||||||
43
content/en/docs-old/documentation/_index.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
---
|
||||||
|
title: "Documentation About Documentation"
|
||||||
|
linkTitle: "Documentation"
|
||||||
|
weight: 10
|
||||||
|
description: >
|
||||||
|
Learn how to create, maintain, and publish documentation for the developer platform.
|
||||||
|
---
|
||||||
|
|
||||||
|
Welcome to the meta-documentation! This section explains how our documentation platform works and guides you through the technicalWriter role.
|
||||||
|
|
||||||
|
## What is a Technical Writer?
|
||||||
|
|
||||||
|
A **Technical Writer** is responsible for creating, maintaining, and publishing the developer platform documentation. This includes:
|
||||||
|
|
||||||
|
- Writing and updating content in Markdown
|
||||||
|
- Creating architecture diagrams with LikeC4
|
||||||
|
- Testing locally before committing
|
||||||
|
- Following the CI/CD pipeline to production
|
||||||
|
|
||||||
|
## Documentation Platform Architecture
|
||||||
|
|
||||||
|
Our documentation is built on a modern stack:
|
||||||
|
|
||||||
|
- **Hugo** with the **Docsy** theme for static site generation
|
||||||
|
- **LikeC4** for architecture visualization
|
||||||
|
- **Taskfile** for local development automation
|
||||||
|
- **GitHub Actions** for continuous testing
|
||||||
|
- **Edge deployment** for hosting
|
||||||
|
|
||||||
|
### System Overview
|
||||||
|
|
||||||
|
{{< likec4-view view="overview" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
This high-level view shows all major components of the documentation platform.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
Continue to the next sections to learn about:
|
||||||
|
|
||||||
|
1. [Local Development](local-development/) - How to work on documentation locally
|
||||||
|
2. [Testing](testing/) - Quality assurance processes
|
||||||
|
3. [CI/CD Pipeline](cicd/) - Automated testing and deployment
|
||||||
|
4. [Publishing](publishing/) - How documentation reaches production
|
||||||
264
content/en/docs-old/documentation/cicd.md
Normal file
|
|
@ -0,0 +1,264 @@
|
||||||
|
---
|
||||||
|
title: "CI/CD Pipeline"
|
||||||
|
linkTitle: "CI/CD"
|
||||||
|
weight: 40
|
||||||
|
description: >
|
||||||
|
Automated testing and container build process.
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Our documentation uses a continuous integration and deployment pipeline to ensure quality and automate deployment.
|
||||||
|
|
||||||
|
{{< likec4-view view="cicdPipeline" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
## GitHub Actions Workflow
|
||||||
|
|
||||||
|
The CI/CD pipeline is defined in `.github/workflows/test.yml` and runs on:
|
||||||
|
|
||||||
|
- **Pushes to `main` branch**
|
||||||
|
- **Pull requests to `main` branch**
|
||||||
|
|
||||||
|
### Workflow Steps
|
||||||
|
|
||||||
|
#### 1. Checkout Code
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clones repository with full history
|
||||||
|
- Includes Git submodules (Hugo modules)
|
||||||
|
|
||||||
|
#### 2. Setup Hugo
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v3
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
extended: true
|
||||||
|
```
|
||||||
|
|
||||||
|
- Installs Hugo Extended
|
||||||
|
- Uses latest stable version
|
||||||
|
|
||||||
|
#### 3. Setup Node.js
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '24'
|
||||||
|
cache: 'npm'
|
||||||
|
```
|
||||||
|
|
||||||
|
- Installs Node.js v24
|
||||||
|
- Caches npm dependencies for faster builds
|
||||||
|
|
||||||
|
#### 4. Install Dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm ci
|
||||||
|
go install github.com/wjdp/htmltest@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
- Installs npm packages (markdownlint, htmlvalidate)
|
||||||
|
- Installs htmltest for link checking
|
||||||
|
|
||||||
|
#### 5. Run Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run test:build
|
||||||
|
npm run test:markdown
|
||||||
|
npm run test:html
|
||||||
|
```
|
||||||
|
|
||||||
|
- Validates Hugo build
|
||||||
|
- Lints Markdown files
|
||||||
|
- Validates HTML output
|
||||||
|
|
||||||
|
#### 6. Link Checking
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Run link checker
|
||||||
|
run: htmltest
|
||||||
|
continue-on-error: true
|
||||||
|
```
|
||||||
|
|
||||||
|
- Checks all links
|
||||||
|
- Continues even if links fail (soft requirement)
|
||||||
|
|
||||||
|
#### 7. Upload Results
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Upload htmltest results
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: htmltest-report
|
||||||
|
path: tmp/.htmltest/
|
||||||
|
```
|
||||||
|
|
||||||
|
- Uploads link check report
|
||||||
|
- Available for download from GitHub Actions
|
||||||
|
|
||||||
|
## Container Build Process
|
||||||
|
|
||||||
|
After tests pass, a container image is built:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task build:oci-image
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Process
|
||||||
|
|
||||||
|
1. **Reads version information** from `.env.versions`:
|
||||||
|
- `NODE_VERSION`
|
||||||
|
- `GO_VERSION`
|
||||||
|
- `HUGO_VERSION`
|
||||||
|
|
||||||
|
2. **Builds Docker image** using `Dockerfile`:
|
||||||
|
- Multi-stage build
|
||||||
|
- Hugo generates static site
|
||||||
|
- Nginx serves the content
|
||||||
|
|
||||||
|
3. **Tags image** with:
|
||||||
|
- `latest`
|
||||||
|
- Git commit SHA (short)
|
||||||
|
|
||||||
|
### Dockerfile Structure
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
# Build stage
|
||||||
|
FROM node:${NODE_VERSION} as builder
|
||||||
|
# Install Hugo, build dependencies
|
||||||
|
# Run: hugo --gc --minify
|
||||||
|
# Output: public/ directory
|
||||||
|
|
||||||
|
# Runtime stage
|
||||||
|
FROM nginx:alpine
|
||||||
|
# Copy public/ to /usr/share/nginx/html/
|
||||||
|
# Configure Nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing the Container
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:oci-image
|
||||||
|
```
|
||||||
|
|
||||||
|
This:
|
||||||
|
|
||||||
|
1. Builds the image
|
||||||
|
2. Starts container on port 8080
|
||||||
|
3. Tests HTTP endpoint
|
||||||
|
4. Cleans up container
|
||||||
|
|
||||||
|
## Package.json Scripts
|
||||||
|
|
||||||
|
The `package.json` defines test scripts:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"test:build": "hugo --gc --minify --logLevel info",
|
||||||
|
"test:markdown": "markdownlint 'content/**/*.md'",
|
||||||
|
"test:html": "htmlvalidate 'public/**/*.html'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running CI Locally
|
||||||
|
|
||||||
|
Simulate the CI environment locally:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task ci
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs the same tests as GitHub Actions.
|
||||||
|
|
||||||
|
## Monitoring CI Results
|
||||||
|
|
||||||
|
### Successful Build
|
||||||
|
|
||||||
|
✅ All tests pass → Ready to deploy
|
||||||
|
|
||||||
|
### Failed Build
|
||||||
|
|
||||||
|
❌ Tests fail:
|
||||||
|
|
||||||
|
1. Click on the failed workflow in GitHub Actions
|
||||||
|
2. Expand the failed step
|
||||||
|
3. Read the error message
|
||||||
|
4. Fix locally: `task test:<specific-test>`
|
||||||
|
5. Commit and push fix
|
||||||
|
|
||||||
|
### Viewing Artifacts
|
||||||
|
|
||||||
|
1. Go to GitHub Actions
|
||||||
|
2. Click on workflow run
|
||||||
|
3. Scroll to "Artifacts" section
|
||||||
|
4. Download `htmltest-report`
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Don't push to main directly** - Use feature branches and PRs
|
||||||
|
2. **Wait for CI before merging** - Green checkmark required
|
||||||
|
3. **Fix broken builds immediately** - Don't let main stay red
|
||||||
|
4. **Review CI logs** - Understand why tests fail
|
||||||
|
5. **Update dependencies** - Keep versions current in `.env.versions`
|
||||||
|
|
||||||
|
## Continuous Deployment
|
||||||
|
|
||||||
|
After successful CI:
|
||||||
|
|
||||||
|
1. Container image is built
|
||||||
|
2. Image is pushed to registry
|
||||||
|
3. Deployment process begins (see [Publishing](../publishing/))
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Tests pass locally but fail in CI
|
||||||
|
|
||||||
|
**Possible causes:**
|
||||||
|
|
||||||
|
- Different Hugo version
|
||||||
|
- Different Node.js version
|
||||||
|
- Missing dependencies
|
||||||
|
- Environment-specific issues
|
||||||
|
|
||||||
|
**Solution:** Check versions in `.env.versions` and ensure local matches CI
|
||||||
|
|
||||||
|
### Build timeouts
|
||||||
|
|
||||||
|
**Possible causes:**
|
||||||
|
|
||||||
|
- Link checker taking too long
|
||||||
|
- Large number of external links
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
|
||||||
|
- Use `continue-on-error: true` for link checks
|
||||||
|
- Configure `.htmltest.yml` to skip slow checks
|
||||||
|
|
||||||
|
### Cache issues
|
||||||
|
|
||||||
|
**Solution:** Clear GitHub Actions cache:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ~/.npm
|
||||||
|
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||||
|
```
|
||||||
|
|
||||||
|
Update the cache key to force refresh.
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
Learn about [deployment to Edge environment](../publishing/).
|
||||||
234
content/en/docs-old/documentation/local-development.md
Normal file
|
|
@ -0,0 +1,234 @@
|
||||||
|
---
|
||||||
|
title: "Local Development"
|
||||||
|
linkTitle: "Local Development"
|
||||||
|
weight: 20
|
||||||
|
description: >
|
||||||
|
Set up your local environment and learn the technicalWriter workflow.
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before you start, ensure you have:
|
||||||
|
|
||||||
|
- **Devbox** or the following tools installed:
|
||||||
|
- Hugo Extended (latest version)
|
||||||
|
- Node.js (v24+)
|
||||||
|
- Go (for htmltest)
|
||||||
|
- Git
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Clone the repository:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd ipceicis-developerframework
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task deps:install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **If using Devbox**, enter the Devbox shell:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
devbox shell
|
||||||
|
```
|
||||||
|
|
||||||
|
This ensures all tools (Hugo, Node.js, Go) are available in the correct versions.
|
||||||
|
|
||||||
|
## Local Development Workflow
|
||||||
|
|
||||||
|
{{< likec4-view view="localDevelopment" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
### Starting the Development Server
|
||||||
|
|
||||||
|
The easiest way to work locally is to start the Hugo development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task serve
|
||||||
|
```
|
||||||
|
|
||||||
|
This will:
|
||||||
|
|
||||||
|
- Generate build information (git commit, version)
|
||||||
|
- Start Hugo server on `http://localhost:1313`
|
||||||
|
- Enable hot reload - changes appear instantly in the browser
|
||||||
|
|
||||||
|
### Content Structure
|
||||||
|
|
||||||
|
```text
|
||||||
|
content/
|
||||||
|
└── en/ # English content
|
||||||
|
├── _index.md # Homepage
|
||||||
|
├── blog/ # Blog posts
|
||||||
|
└── docs/ # Documentation
|
||||||
|
├── architecture/ # Architecture docs
|
||||||
|
├── decisions/ # ADRs
|
||||||
|
└── v1/ # Version-specific docs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Creating Content
|
||||||
|
|
||||||
|
1. **Add a new documentation page:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create a new markdown file
|
||||||
|
vim content/en/docs/your-topic/_index.md
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Add frontmatter:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: "Your Topic"
|
||||||
|
linkTitle: "Your Topic"
|
||||||
|
weight: 10
|
||||||
|
description: >
|
||||||
|
Brief description of your topic.
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Write your content** in Markdown
|
||||||
|
|
||||||
|
4. **Preview changes** - they appear immediately if `task serve` is running
|
||||||
|
|
||||||
|
### Creating Architecture Diagrams
|
||||||
|
|
||||||
|
Architecture diagrams are created with LikeC4:
|
||||||
|
|
||||||
|
1. **Navigate to the appropriate LikeC4 project:**
|
||||||
|
- `resources/edp-likec4/` - Platform architecture
|
||||||
|
- `resources/doc-likec4/` - Documentation platform architecture
|
||||||
|
|
||||||
|
2. **Edit or create `.c4` files** with your model
|
||||||
|
|
||||||
|
Example: Create a simple view in `resources/edp-likec4/views/my-view.c4`:
|
||||||
|
|
||||||
|
```likec4
|
||||||
|
specification {
|
||||||
|
element myperson
|
||||||
|
element mysystem
|
||||||
|
}
|
||||||
|
|
||||||
|
model {
|
||||||
|
customer = myperson 'Customer' {
|
||||||
|
description 'End user of the platform'
|
||||||
|
}
|
||||||
|
|
||||||
|
mySystem = mysystem 'My System' {
|
||||||
|
description 'Example system component'
|
||||||
|
}
|
||||||
|
|
||||||
|
customer -> mySystem 'uses'
|
||||||
|
}
|
||||||
|
|
||||||
|
views {
|
||||||
|
view myCustomView {
|
||||||
|
title "My Custom Architecture View"
|
||||||
|
|
||||||
|
include customer
|
||||||
|
include mySystem
|
||||||
|
|
||||||
|
autoLayout TopBottom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Regenerate webcomponents:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task likec4:generate
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Embed diagrams in Markdown:**
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
{{</* likec4-view view="myCustomView" project="architecture" title="My Custom Architecture View" */>}}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Finding available view IDs:**
|
||||||
|
- Open the `.c4` files in your project directory
|
||||||
|
- Look for `view <viewId> {` declarations
|
||||||
|
- The `<viewId>` is what you use in the `view` parameter
|
||||||
|
- Or use: `grep -r "^view " resources/edp-likec4/ --include="*.c4"`
|
||||||
|
|
||||||
|
## Available Tasks
|
||||||
|
|
||||||
|
View all available tasks:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task --list
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common Development Tasks
|
||||||
|
|
||||||
|
| Task | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `task serve` | Start development server with hot reload |
|
||||||
|
| `task build` | Build production-ready site |
|
||||||
|
| `task build:dev` | Build development version |
|
||||||
|
| `task clean` | Remove build artifacts |
|
||||||
|
| `task test` | Run all tests |
|
||||||
|
| `task test:quick` | Run tests without link checking |
|
||||||
|
|
||||||
|
## Quick Testing
|
||||||
|
|
||||||
|
Before committing, run quick tests:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:quick
|
||||||
|
```
|
||||||
|
|
||||||
|
This validates:
|
||||||
|
|
||||||
|
- Hugo build succeeds
|
||||||
|
- Markdown syntax is correct
|
||||||
|
|
||||||
|
For comprehensive testing, including link checking:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tips for Technical Writers
|
||||||
|
|
||||||
|
1. **Write in present tense** - "The system processes..." not "The system will process..."
|
||||||
|
2. **Use code blocks** with syntax highlighting
|
||||||
|
3. **Include diagrams** for complex concepts
|
||||||
|
4. **Test locally** before pushing
|
||||||
|
5. **Keep it concise** - readers appreciate brevity
|
||||||
|
6. **Update regularly** - stale docs are worse than no docs
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Port 1313 already in use
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Find and kill the process
|
||||||
|
lsof -ti:1313 | xargs kill -9
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build errors
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clean and rebuild
|
||||||
|
task clean
|
||||||
|
task build:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Missing dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Reinstall all dependencies
|
||||||
|
task deps:install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
Now that you can develop locally, learn about:
|
||||||
|
|
||||||
|
- [Testing processes](../testing/)
|
||||||
|
- [CI/CD pipeline](../cicd/)
|
||||||
339
content/en/docs-old/documentation/publishing.md
Normal file
|
|
@ -0,0 +1,339 @@
|
||||||
|
---
|
||||||
|
title: "Publishing to Edge"
|
||||||
|
linkTitle: "Publishing"
|
||||||
|
weight: 50
|
||||||
|
description: >
|
||||||
|
How documentation is deployed to the edge environment.
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deployment Overview
|
||||||
|
|
||||||
|
After successful CI/CD, the documentation is deployed to an edge computing environment.
|
||||||
|
|
||||||
|
{{< likec4-view view="deploymentFlow" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
## Deployment Architecture
|
||||||
|
|
||||||
|
### Edge Connect Platform
|
||||||
|
|
||||||
|
Our documentation is deployed using **Edge Connect**, which orchestrates deployments to edge cloudlets.
|
||||||
|
|
||||||
|
Configuration: `edgeconnectdeployment.yaml`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
kind: edgeconnect-deployment
|
||||||
|
metadata:
|
||||||
|
name: "edpdoc"
|
||||||
|
appVersion: "1.0.0"
|
||||||
|
organization: "edp2"
|
||||||
|
spec:
|
||||||
|
k8sApp:
|
||||||
|
manifestFile: "./k8s-deployment.yaml"
|
||||||
|
infraTemplate:
|
||||||
|
- region: "EU"
|
||||||
|
cloudletOrg: "TelekomOP"
|
||||||
|
cloudletName: "Munich"
|
||||||
|
flavorName: "EU.small"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key settings:**
|
||||||
|
|
||||||
|
- **Deployment name:** `edpdoc`
|
||||||
|
- **Region:** EU (Munich)
|
||||||
|
- **Cloudlet:** TelekomOP Munich
|
||||||
|
- **Flavor:** EU.small (resource allocation)
|
||||||
|
|
||||||
|
### Kubernetes Deployment
|
||||||
|
|
||||||
|
The application runs on Kubernetes: `k8s-deployment.yaml`
|
||||||
|
|
||||||
|
#### Service Definition
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: edpdoc
|
||||||
|
labels:
|
||||||
|
run: edpdoc
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
ports:
|
||||||
|
- name: tcp80
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
run: edpdoc
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Type:** LoadBalancer (external access)
|
||||||
|
- **Port:** 80 (HTTP)
|
||||||
|
- **Selector:** Routes traffic to pods with label `run: edpdoc`
|
||||||
|
|
||||||
|
#### Deployment Configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: edpdoc
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: edpdoc
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: edpdoc
|
||||||
|
mexDeployGen: kubernetes-basic
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: edpdoc
|
||||||
|
image: ###IMAGETAG###
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Replicas:** 1 (single instance)
|
||||||
|
- **Image:** Injected by deployment pipeline (`###IMAGETAG###` placeholder)
|
||||||
|
- **Pull policy:** Always (ensures latest version)
|
||||||
|
|
||||||
|
### Network Configuration
|
||||||
|
|
||||||
|
Outbound connections are configured in `edgeconnectdeployment.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
network:
|
||||||
|
outboundConnections:
|
||||||
|
- protocol: "tcp"
|
||||||
|
portRangeMin: 80
|
||||||
|
portRangeMax: 80
|
||||||
|
remoteCIDR: "0.0.0.0/0"
|
||||||
|
- protocol: "tcp"
|
||||||
|
portRangeMin: 443
|
||||||
|
portRangeMax: 443
|
||||||
|
remoteCIDR: "0.0.0.0/0"
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Port 80:** HTTP outbound
|
||||||
|
- **Port 443:** HTTPS outbound
|
||||||
|
- **CIDR:** `0.0.0.0/0` (all destinations)
|
||||||
|
|
||||||
|
## Deployment Process
|
||||||
|
|
||||||
|
### 1. Container Image Ready
|
||||||
|
|
||||||
|
After CI passes:
|
||||||
|
|
||||||
|
- Docker image built with `task build:oci-image`
|
||||||
|
- Tagged with git commit SHA
|
||||||
|
- Pushed to container registry
|
||||||
|
|
||||||
|
### 2. Edge Connect Orchestration
|
||||||
|
|
||||||
|
Edge Connect:
|
||||||
|
|
||||||
|
1. Pulls container image
|
||||||
|
2. Reads `edgeconnectdeployment.yaml`
|
||||||
|
3. Provisions resources on Munich cloudlet
|
||||||
|
4. Applies Kubernetes manifests
|
||||||
|
|
||||||
|
### 3. Kubernetes Deployment
|
||||||
|
|
||||||
|
Kubernetes:
|
||||||
|
|
||||||
|
1. Creates deployment with 1 replica
|
||||||
|
2. Pulls container image (`imagePullPolicy: Always`)
|
||||||
|
3. Starts pod running Nginx + static Hugo site
|
||||||
|
4. Creates LoadBalancer service
|
||||||
|
5. Assigns external IP
|
||||||
|
|
||||||
|
### 4. Service Available
|
||||||
|
|
||||||
|
Documentation is now accessible:
|
||||||
|
|
||||||
|
- **Protocol:** HTTP
|
||||||
|
- **Port:** 80
|
||||||
|
- **IP:** Assigned by LoadBalancer
|
||||||
|
|
||||||
|
## Complete Workflow
|
||||||
|
|
||||||
|
{{< likec4-view view="fullWorkflow" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
### End-to-End Process
|
||||||
|
|
||||||
|
1. **Technical Writer writes content** (Markdown, LikeC4 models)
|
||||||
|
2. **Local testing** with `task serve` and `task test`
|
||||||
|
3. **Commit and push** to Git repository
|
||||||
|
4. **GitHub Actions triggered** on push to main
|
||||||
|
5. **CI tests run** (build, markdown, HTML, links)
|
||||||
|
6. **Container image built** if tests pass
|
||||||
|
7. **Image pushed** to registry
|
||||||
|
8. **Edge deployment triggered**
|
||||||
|
9. **Kubernetes applies** manifests
|
||||||
|
10. **Service available** on edge cloudlet
|
||||||
|
|
||||||
|
## Monitoring Deployment
|
||||||
|
|
||||||
|
### Check Deployment Status
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl get deployments -n <namespace>
|
||||||
|
kubectl get pods -n <namespace>
|
||||||
|
kubectl get services -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl logs deployment/edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Access Documentation
|
||||||
|
|
||||||
|
Find the LoadBalancer external IP:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl get service edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
Access via: `http://<EXTERNAL-IP>`
|
||||||
|
|
||||||
|
## Rollback
|
||||||
|
|
||||||
|
If issues occur after deployment:
|
||||||
|
|
||||||
|
### Option 1: Revert Commit
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git revert <bad-commit>
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
CI will rebuild and redeploy.
|
||||||
|
|
||||||
|
### Option 2: Manual Rollback
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl rollout undo deployment/edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns to previous deployment version.
|
||||||
|
|
||||||
|
### Option 3: Deploy Specific Version
|
||||||
|
|
||||||
|
Update image tag in deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl set image deployment/edpdoc edpdoc=<registry>/<image>:<tag> -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scaling
|
||||||
|
|
||||||
|
Currently: **1 replica**
|
||||||
|
|
||||||
|
To scale for higher traffic:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
```
|
||||||
|
|
||||||
|
Then apply:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl apply -f k8s-deployment.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
Or scale dynamically:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl scale deployment/edpdoc --replicas=3 -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Considerations
|
||||||
|
|
||||||
|
1. **Image scanning** - Scan container images for vulnerabilities
|
||||||
|
2. **Resource limits** - Set CPU/memory limits in deployment
|
||||||
|
3. **Network policies** - Restrict pod-to-pod communication
|
||||||
|
4. **HTTPS** - Consider adding TLS termination (Ingress)
|
||||||
|
|
||||||
|
## Performance Optimization
|
||||||
|
|
||||||
|
1. **CDN** - Add CDN in front of LoadBalancer
|
||||||
|
2. **Caching** - Configure Nginx caching headers
|
||||||
|
3. **Compression** - Enable gzip in Nginx
|
||||||
|
4. **Image optimization** - Compress images in documentation
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Pod not starting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl describe pod <pod-name> -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
Check:
|
||||||
|
|
||||||
|
- Image pull errors
|
||||||
|
- Resource constraints
|
||||||
|
- Configuration errors
|
||||||
|
|
||||||
|
### Service unreachable
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl describe service edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
Check:
|
||||||
|
|
||||||
|
- LoadBalancer IP assigned
|
||||||
|
- Port configuration
|
||||||
|
- Network policies
|
||||||
|
|
||||||
|
### Old content served
|
||||||
|
|
||||||
|
Check:
|
||||||
|
|
||||||
|
- `imagePullPolicy: Always` in deployment
|
||||||
|
- Image tag is updated
|
||||||
|
- Pod has restarted
|
||||||
|
|
||||||
|
Force pod restart:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl rollout restart deployment/edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Test before deploying** - Always run `task test` locally
|
||||||
|
2. **Use feature branches** - Don't deploy directly from local
|
||||||
|
3. **Monitor after deployment** - Check logs and access
|
||||||
|
4. **Document changes** - Update RELEASE.md
|
||||||
|
5. **Version control** - Tag releases in Git
|
||||||
|
|
||||||
|
## Future Enhancements
|
||||||
|
|
||||||
|
Potential improvements:
|
||||||
|
|
||||||
|
- **Blue-green deployment** - Zero-downtime updates
|
||||||
|
- **Canary releases** - Gradual rollout to subset of users
|
||||||
|
- **Auto-scaling** - HorizontalPodAutoscaler based on traffic
|
||||||
|
- **Multi-region** - Deploy to multiple cloudlets
|
||||||
|
- **HTTPS** - TLS certificates and Ingress controller
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The deployment process is automated and reliable:
|
||||||
|
|
||||||
|
✅ **CI ensures quality** - Tests prevent broken deployments
|
||||||
|
✅ **Edge infrastructure** - Low-latency access from EU
|
||||||
|
✅ **Kubernetes orchestration** - Reliable, scalable platform
|
||||||
|
✅ **Simple rollback** - Easy to recover from issues
|
||||||
|
|
||||||
|
As a technicalWriter, focus on content quality. The platform handles deployment automatically! 🚀
|
||||||
282
content/en/docs-old/documentation/quick-reference.md
Normal file
|
|
@ -0,0 +1,282 @@
|
||||||
|
---
|
||||||
|
title: "Quick Reference"
|
||||||
|
linkTitle: "Quick Reference"
|
||||||
|
weight: 60
|
||||||
|
description: >
|
||||||
|
Cheat sheet for common technicalWriter tasks.
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common Commands
|
||||||
|
|
||||||
|
### Local Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Start development server (with hot reload)
|
||||||
|
task serve
|
||||||
|
|
||||||
|
# Build for production
|
||||||
|
task build
|
||||||
|
|
||||||
|
# Build for development (faster, no minification)
|
||||||
|
task build:dev
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
task clean
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Quick tests (build + markdown)
|
||||||
|
task test:quick
|
||||||
|
|
||||||
|
# Full test suite
|
||||||
|
task test
|
||||||
|
|
||||||
|
# Individual tests
|
||||||
|
task test:build # Hugo build validation
|
||||||
|
task test:markdown # Markdown linting
|
||||||
|
task test:html # HTML validation
|
||||||
|
task test:links # Link checking
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install dependencies
|
||||||
|
task deps:install
|
||||||
|
|
||||||
|
# Update dependencies
|
||||||
|
task deps:update
|
||||||
|
|
||||||
|
# Ensure npm dependencies (auto-installs if missing)
|
||||||
|
task deps:ensure-npm
|
||||||
|
```
|
||||||
|
|
||||||
|
### Container Operations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build OCI/Docker image
|
||||||
|
task build:oci-image
|
||||||
|
|
||||||
|
# Build and test container
|
||||||
|
task test:oci-image
|
||||||
|
```
|
||||||
|
|
||||||
|
## File Locations
|
||||||
|
|
||||||
|
### Content
|
||||||
|
|
||||||
|
| Path | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `content/en/docs/` | Main documentation |
|
||||||
|
| `content/en/blog/` | Blog posts |
|
||||||
|
| `content/en/_index.md` | Homepage |
|
||||||
|
|
||||||
|
### Architecture Models
|
||||||
|
|
||||||
|
| Path | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `resources/edp-likec4/` | Platform architecture models |
|
||||||
|
| `resources/doc-likec4/` | Documentation platform models |
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `hugo.toml` | Hugo configuration |
|
||||||
|
| `config.yaml` | Docsy theme config |
|
||||||
|
| `Taskfile.yml` | Task definitions |
|
||||||
|
| `package.json` | npm dependencies and scripts |
|
||||||
|
| `.markdownlint.json` | Markdown linting rules |
|
||||||
|
| `.htmlvalidate.json` | HTML validation rules |
|
||||||
|
| `.htmltest.yml` | Link checker config |
|
||||||
|
|
||||||
|
### Build Output
|
||||||
|
|
||||||
|
| Path | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `public/` | Generated static site |
|
||||||
|
| `resources/_gen/` | Generated resources (Hugo) |
|
||||||
|
| `data/build_info.json` | Build metadata (git commit, version) |
|
||||||
|
|
||||||
|
## Markdown Frontmatter
|
||||||
|
|
||||||
|
### Standard Page
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: "Page Title"
|
||||||
|
linkTitle: "Short Title"
|
||||||
|
weight: 10
|
||||||
|
description: >
|
||||||
|
Brief description for SEO and navigation.
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
### Blog Post
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: "Post Title"
|
||||||
|
date: 2025-01-15
|
||||||
|
author: "Your Name"
|
||||||
|
description: >
|
||||||
|
Post summary.
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
## Embedding Architecture Diagrams
|
||||||
|
|
||||||
|
### Basic Embed
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
{{< likec4-view view="view-name" project="project-name" >}}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
- `view` (required) - The view ID from your LikeC4 model
|
||||||
|
- `project` (optional, default: "architecture") - The LikeC4 project name
|
||||||
|
- `title` (optional, default: "Architecture View: {view}") - Custom header text above the diagram
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
{{< likec4-view view="overview" project="documentation-platform" >}}
|
||||||
|
{{< likec4-view view="localDevelopment" project="documentation-platform" >}}
|
||||||
|
{{< likec4-view view="cicdPipeline" project="documentation-platform" >}}
|
||||||
|
{{< likec4-view view="otc-faas" project="architecture" title="OTC FaaS Deployment" >}}
|
||||||
|
```
|
||||||
|
|
||||||
|
## LikeC4 Commands
|
||||||
|
|
||||||
|
### Regenerate Webcomponents
|
||||||
|
|
||||||
|
After modifying `.c4` files:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task likec4:generate
|
||||||
|
```
|
||||||
|
|
||||||
|
This regenerates both:
|
||||||
|
|
||||||
|
- `static/js/likec4-webcomponent.js` (EDP architecture)
|
||||||
|
- `static/js/likec4-doc-webcomponent.js` (Documentation platform)
|
||||||
|
|
||||||
|
### Start Development Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd resources/doc-likec4 # or resources/edp-likec4
|
||||||
|
npm install
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
Opens LikeC4 IDE at `http://localhost:5173`
|
||||||
|
|
||||||
|
### Export Diagrams
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd resources/doc-likec4
|
||||||
|
npx likec4 export png -o ./images .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Git Workflow
|
||||||
|
|
||||||
|
### Feature Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create feature branch
|
||||||
|
git checkout -b feature/your-feature
|
||||||
|
|
||||||
|
# Make changes and test
|
||||||
|
task serve
|
||||||
|
task test:quick
|
||||||
|
|
||||||
|
# Commit
|
||||||
|
git add .
|
||||||
|
git commit -m "Description of changes"
|
||||||
|
|
||||||
|
# Push
|
||||||
|
git push origin feature/your-feature
|
||||||
|
|
||||||
|
# Create pull request on GitHub
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update from Main
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
git pull origin main
|
||||||
|
git checkout feature/your-feature
|
||||||
|
git rebase main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Port 1313 in use
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lsof -ti:1313 | xargs kill -9
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build errors
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task clean
|
||||||
|
task build:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Missing dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task deps:install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Hugo module issues
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hugo mod clean
|
||||||
|
hugo mod get -u
|
||||||
|
hugo mod tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
### LikeC4 language server
|
||||||
|
|
||||||
|
In VS Code: `Ctrl+Shift+P` → "LikeC4: restart language server"
|
||||||
|
|
||||||
|
## URLs
|
||||||
|
|
||||||
|
### Local Development
|
||||||
|
|
||||||
|
- **Documentation:** <http://localhost:1313>
|
||||||
|
- **LikeC4 IDE:** <http://localhost:5173> (when running `npm start` in likec4 folder)
|
||||||
|
|
||||||
|
### Production
|
||||||
|
|
||||||
|
Check `edgeconnectdeployment.yaml` for deployment URL or run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl get service edpdoc -n <namespace>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Checks Before Committing
|
||||||
|
|
||||||
|
1. ✅ `task test:quick` passes
|
||||||
|
2. ✅ Preview looks correct in browser
|
||||||
|
3. ✅ No broken links (visual check)
|
||||||
|
4. ✅ Architecture diagrams render
|
||||||
|
5. ✅ Frontmatter is correct
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
- **Hugo docs:** <https://gohugo.io/documentation/>
|
||||||
|
- **Docsy theme:** <https://www.docsy.dev/docs/>
|
||||||
|
- **LikeC4:** <https://likec4.dev/>
|
||||||
|
- **Task:** <https://taskfile.dev/>
|
||||||
|
|
||||||
|
## View Documentation Architecture
|
||||||
|
|
||||||
|
To understand how this documentation platform works:
|
||||||
|
|
||||||
|
→ Start here: [Documentation About Documentation](../)
|
||||||
229
content/en/docs-old/documentation/testing.md
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
---
|
||||||
|
title: "Testing"
|
||||||
|
linkTitle: "Testing"
|
||||||
|
weight: 30
|
||||||
|
description: >
|
||||||
|
Quality assurance processes for documentation.
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing Philosophy
|
||||||
|
|
||||||
|
Quality documentation requires testing. Our testing process validates:
|
||||||
|
|
||||||
|
- **Build integrity** - Hugo can generate the site
|
||||||
|
- **Content quality** - Markdown follows best practices
|
||||||
|
- **HTML validity** - Generated HTML is well-formed
|
||||||
|
- **Link integrity** - No broken internal or external links
|
||||||
|
|
||||||
|
## Testing Capabilities
|
||||||
|
|
||||||
|
{{< likec4-view view="testingCapabilities" project="documentation-platform" >}}
|
||||||
|
|
||||||
|
## Local Testing
|
||||||
|
|
||||||
|
Before committing changes, run tests locally:
|
||||||
|
|
||||||
|
### Quick Tests
|
||||||
|
|
||||||
|
For rapid feedback during development:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:quick
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs:
|
||||||
|
|
||||||
|
- `task test:build` - Hugo build validation
|
||||||
|
- `task test:markdown` - Markdown linting
|
||||||
|
|
||||||
|
### Full Test Suite
|
||||||
|
|
||||||
|
Before creating a pull request:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs all tests including:
|
||||||
|
|
||||||
|
- `task test:build` - Build validation
|
||||||
|
- `task test:markdown` - Markdown linting
|
||||||
|
- `task test:html` - HTML validation
|
||||||
|
- `task test:links` - Link checking
|
||||||
|
|
||||||
|
## Individual Tests
|
||||||
|
|
||||||
|
You can run individual tests:
|
||||||
|
|
||||||
|
### Build Test
|
||||||
|
|
||||||
|
Validates that Hugo can build the site:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:build
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs: `hugo --gc --minify --logLevel info`
|
||||||
|
|
||||||
|
**What it checks:**
|
||||||
|
|
||||||
|
- Hugo configuration is valid
|
||||||
|
- Content files have correct frontmatter
|
||||||
|
- Templates render without errors
|
||||||
|
- No circular dependencies in content structure
|
||||||
|
|
||||||
|
### Markdown Lint
|
||||||
|
|
||||||
|
Checks Markdown syntax and style:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:markdown
|
||||||
|
```
|
||||||
|
|
||||||
|
This uses `markdownlint` with custom rules in `.markdownlint.json`.
|
||||||
|
|
||||||
|
**What it checks:**
|
||||||
|
|
||||||
|
- Consistent heading hierarchy
|
||||||
|
- Proper list formatting
|
||||||
|
- Code blocks have language tags
|
||||||
|
- No trailing whitespace
|
||||||
|
- Consistent line length (where applicable)
|
||||||
|
|
||||||
|
**Common issues:**
|
||||||
|
|
||||||
|
- Missing blank lines around code blocks
|
||||||
|
- Inconsistent list markers
|
||||||
|
- Heading levels skipped
|
||||||
|
|
||||||
|
### HTML Validation
|
||||||
|
|
||||||
|
Validates generated HTML:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:html
|
||||||
|
```
|
||||||
|
|
||||||
|
This uses `htmlvalidate` with rules in `.htmlvalidate.json`.
|
||||||
|
|
||||||
|
**What it checks:**
|
||||||
|
|
||||||
|
- Well-formed HTML5
|
||||||
|
- Proper nesting of elements
|
||||||
|
- Valid attributes
|
||||||
|
- Accessible markup
|
||||||
|
|
||||||
|
### Link Checking
|
||||||
|
|
||||||
|
Verifies all links are valid:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test:links
|
||||||
|
```
|
||||||
|
|
||||||
|
This uses `htmltest` configured in `.htmltest.yml`.
|
||||||
|
|
||||||
|
**What it checks:**
|
||||||
|
|
||||||
|
- Internal links point to existing pages
|
||||||
|
- External links are reachable
|
||||||
|
- Anchor links target existing elements
|
||||||
|
- No redirects (301/302)
|
||||||
|
|
||||||
|
**Note:** This test can be slow for large sites with many external links.
|
||||||
|
|
||||||
|
## CI Testing
|
||||||
|
|
||||||
|
All tests run automatically on:
|
||||||
|
|
||||||
|
- **Push to `main`** - Full test suite
|
||||||
|
- **Pull requests** - Full test suite
|
||||||
|
|
||||||
|
View the GitHub Actions workflow: `.github/workflows/test.yml`
|
||||||
|
|
||||||
|
### CI Test Results
|
||||||
|
|
||||||
|
If tests fail in CI:
|
||||||
|
|
||||||
|
1. Check the GitHub Actions logs
|
||||||
|
2. Look for specific test failures
|
||||||
|
3. Run the same test locally: `task test:<name>`
|
||||||
|
4. Fix the issue
|
||||||
|
5. Commit and push
|
||||||
|
|
||||||
|
### Artifacts
|
||||||
|
|
||||||
|
CI uploads test artifacts:
|
||||||
|
|
||||||
|
- `htmltest-report/` - Link checking results
|
||||||
|
|
||||||
|
Download these from the GitHub Actions run to investigate failures.
|
||||||
|
|
||||||
|
## Test Configuration Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `.markdownlint.json` | Markdown linting rules |
|
||||||
|
| `.htmlvalidate.json` | HTML validation rules |
|
||||||
|
| `.htmltest.yml` | Link checker configuration |
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Test early, test often** - Run `task test:quick` frequently
|
||||||
|
2. **Fix issues immediately** - Don't accumulate technical debt
|
||||||
|
3. **Understand failures** - Read error messages carefully
|
||||||
|
4. **Update tests** - If rules change, update config files
|
||||||
|
5. **Document exceptions** - If you need to ignore a rule, document why
|
||||||
|
|
||||||
|
## Common Issues and Solutions
|
||||||
|
|
||||||
|
### Markdown: MD031 - Blank lines around fences
|
||||||
|
|
||||||
|
**Problem:** Missing blank line before/after code block
|
||||||
|
|
||||||
|
**Solution:** Add blank lines:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Some text
|
||||||
|
|
||||||
|
```bash
|
||||||
|
command here
|
||||||
|
```
|
||||||
|
|
||||||
|
More text
|
||||||
|
```
|
||||||
|
|
||||||
|
### Markdown: MD032 - Blank lines around lists
|
||||||
|
|
||||||
|
**Problem:** Missing blank line before/after list
|
||||||
|
|
||||||
|
**Solution:** Add blank lines:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Text before
|
||||||
|
|
||||||
|
- List item 1
|
||||||
|
- List item 2
|
||||||
|
|
||||||
|
Text after
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTML: Invalid nesting
|
||||||
|
|
||||||
|
**Problem:** Elements improperly nested
|
||||||
|
|
||||||
|
**Solution:** Check template files and shortcodes
|
||||||
|
|
||||||
|
### Link Check: 404 Not Found
|
||||||
|
|
||||||
|
**Problem:** Link points to non-existent page
|
||||||
|
|
||||||
|
**Solution:**
|
||||||
|
|
||||||
|
- Fix the link
|
||||||
|
- Create the missing page
|
||||||
|
- Remove the link if no longer relevant
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
Learn about the automated [CI/CD pipeline](../cicd/).
|
||||||
75
content/en/docs-old/platform-overview.md
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
---
|
||||||
|
title: "eDF Documentation Overview"
|
||||||
|
description: "Comprehensive guide for users and auditors to understand and use the eDF."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Meta
|
||||||
|
|
||||||
|
## Guidelines
|
||||||
|
|
||||||
|
1. for users/developers/engineers we describe our output / outcome as product
|
||||||
|
* it is usable
|
||||||
|
* there are links / lists to repos
|
||||||
|
2. we have and describe a 'product-structure-tree'
|
||||||
|
3. for auditors / governance we have a list / cross reference to Jira tickets
|
||||||
|
* R&D ?,
|
||||||
|
* mappen auf die projektphasen, wie erstellt ein team eine plattform?
|
||||||
|
* stw. mobbing, mob programming
|
||||||
|
* mapping auf deliverables von IPCEI-CIS ???, bzw. mapping auf epics?
|
||||||
|
* projekthistorie, projektdynamic, teilprojekt von eDF , teilprojekt-abhängigkiet zB 'Platform'
|
||||||
|
* friendly user phase
|
||||||
|
* forgejo community, OSS, PR handling
|
||||||
|
* externe stakeholder, user experience, think ahead integration
|
||||||
|
* technolgien, technologie-schwerpunkte, cutting-edge research
|
||||||
|
* design/specification und bewertung von lösungsentürfen (zB VictoriaMetrics, GARM, terraform, argoCD, ...)
|
||||||
|
* CI/CD, golden paths (anm.: ist in grobkonzept, deployment von apps von developern fehlt)
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
- Purpose of the eDF
|
||||||
|
- Target audience (developers, engineers, auditors)
|
||||||
|
- High-level product structure overview
|
||||||
|
- High-level architecture overview
|
||||||
|
|
||||||
|
# eDF Components Overview
|
||||||
|
- List of all major components
|
||||||
|
- Vertical and horizontal layers explained
|
||||||
|
- Component maturity/status (fully integrated, partial, experimental)
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
- Quickstart guide for developers
|
||||||
|
- Onboarding steps for eDF engineers
|
||||||
|
- Prerequisites and environment setup
|
||||||
|
|
||||||
|
# Component Details
|
||||||
|
For each component:
|
||||||
|
- Description and purpose
|
||||||
|
- Repository link
|
||||||
|
- README summary
|
||||||
|
- Architecture diagrams (link to Miro/Lucid)
|
||||||
|
- Usage instructions
|
||||||
|
- Integration points
|
||||||
|
|
||||||
|
# Development Experience
|
||||||
|
- How to contribute
|
||||||
|
- Local development workflow
|
||||||
|
- CI/CD pipelines
|
||||||
|
- Testing and validation
|
||||||
|
|
||||||
|
# Operational Experience
|
||||||
|
- Deployment guides
|
||||||
|
- Monitoring and observability
|
||||||
|
- Troubleshooting
|
||||||
|
|
||||||
|
# Audit & Compliance
|
||||||
|
- Overview of implemented controls
|
||||||
|
- Ticket references (Jira, changelogs)
|
||||||
|
- Documentation of decisions and reviews
|
||||||
|
- Evidence of value and coverage
|
||||||
|
|
||||||
|
# FAQ & Support
|
||||||
|
- Common issues and solutions
|
||||||
|
- Contact points for help
|
||||||
|
|
||||||
|
# Appendix
|
||||||
|
- Glossary
|
||||||
|
- References to external resources
|
||||||
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 944 KiB After Width: | Height: | Size: 944 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 732 KiB After Width: | Height: | Size: 732 KiB |
|
Before Width: | Height: | Size: 554 KiB After Width: | Height: | Size: 554 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
|
|
@ -1,7 +1,7 @@
|
||||||
+++
|
---
|
||||||
title = "CNOE"
|
title: CNOE
|
||||||
weight = 4
|
weight: 4
|
||||||
+++
|
---
|
||||||
|
|
||||||
|
|
||||||
* https://cnoe.io/docs/intro
|
* https://cnoe.io/docs/intro
|
||||||
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 364 KiB |
|
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 208 KiB |
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
title: Humanitec
|
||||||
|
weight: 4
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
tbd
|
||||||
|
Before Width: | Height: | Size: 904 KiB After Width: | Height: | Size: 904 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 600 KiB After Width: | Height: | Size: 600 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 723 KiB After Width: | Height: | Size: 723 KiB |
|
Before Width: | Height: | Size: 397 KiB After Width: | Height: | Size: 397 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 275 KiB After Width: | Height: | Size: 275 KiB |
|
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 397 KiB After Width: | Height: | Size: 397 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 372 KiB After Width: | Height: | Size: 372 KiB |
|
Before Width: | Height: | Size: 766 KiB After Width: | Height: | Size: 766 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 224 KiB |