WIP potentially to be dropped

This commit is contained in:
Martin McCaffery 2025-12-18 09:21:05 +01:00
parent 10cce1376a
commit 880c0d5ec9
Signed by: martin.mccaffery
GPG key ID: 7C4D0F375BCEE533
14 changed files with 208 additions and 77 deletions

73
.github/workflows/build.yaml vendored Normal file
View file

@ -0,0 +1,73 @@
name: build
on:
push:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Load versions from .env.versions
id: versions
run: |
set -a
source .env.versions
set +a
echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT"
echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT"
echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT"
echo "Node: ${NODE_VERSION}"
echo "Go: ${GO_VERSION}"
echo "Hugo: ${HUGO_VERSION}"
- name: Repository meta
id: repository
run: |
registry=${{ github.server_url }}
registry=${registry##http*://}
echo "registry=${registry}" >> "$GITHUB_OUTPUT"
echo "registry=${registry}"
repository="$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')"
echo "repository=${repository}" >> "$GITHUB_OUTPUT"
echo "repository=${repository}"
- name: Docker meta
uses: docker/metadata-action@v5
id: docker
with:
images: ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}
tags: |
type=sha,prefix=
type=ref,event=tag
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
buildkitd-flags: '--allow-insecure-entitlement network.host'
driver-opts: network=host
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
allow: network.host
network: host
tags: ${{ steps.docker.outputs.tags }}
labels: ${{ steps.docker.outputs.labels }}
build-args: |
NODE_VERSION=${{ steps.versions.outputs.node_version }}
GO_VERSION=${{ steps.versions.outputs.go_version }}
HUGO_VERSION=${{ steps.versions.outputs.hugo_version }}

View file

@ -2,7 +2,6 @@ name: ci
on: on:
push: push:
workflow_dispatch:
jobs: jobs:
build: build:
@ -22,11 +21,11 @@ jobs:
set -a set -a
source .env.versions source .env.versions
set +a set +a
echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT"
echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT" echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT"
echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT" echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT"
echo "Node: ${NODE_VERSION}" echo "Node: ${NODE_VERSION}"
echo "Go: ${GO_VERSION}" echo "Go: ${GO_VERSION}"
echo "Hugo: ${HUGO_VERSION}" echo "Hugo: ${HUGO_VERSION}"

View file

@ -26,11 +26,11 @@ jobs:
set -a set -a
source .env.versions source .env.versions
set +a set +a
echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" echo "node_version=${NODE_VERSION}" >> "$GITHUB_OUTPUT"
echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT" echo "go_version=${GO_VERSION}" >> "$GITHUB_OUTPUT"
echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT" echo "hugo_version=${HUGO_VERSION}" >> "$GITHUB_OUTPUT"
echo "Node: ${NODE_VERSION}" echo "Node: ${NODE_VERSION}"
echo "Go: ${GO_VERSION}" echo "Go: ${GO_VERSION}"
echo "Hugo: ${HUGO_VERSION}" echo "Hugo: ${HUGO_VERSION}"
@ -100,7 +100,7 @@ jobs:
run: | run: |
# Finde vorheriges Tag # Finde vorheriges Tag
PREVIOUS_TAG=$(git describe --abbrev=0 --tags ${GITHUB_REF}^ 2>/dev/null || echo "") PREVIOUS_TAG=$(git describe --abbrev=0 --tags ${GITHUB_REF}^ 2>/dev/null || echo "")
if [ -z "$PREVIOUS_TAG" ]; then if [ -z "$PREVIOUS_TAG" ]; then
echo "Erster Release - Changelog von Anfang an" echo "Erster Release - Changelog von Anfang an"
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges) CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
@ -108,7 +108,7 @@ jobs:
echo "Changelog seit ${PREVIOUS_TAG}" echo "Changelog seit ${PREVIOUS_TAG}"
CHANGELOG=$(git log ${PREVIOUS_TAG}..${GITHUB_REF} --pretty=format:"- %s (%h)" --no-merges) CHANGELOG=$(git log ${PREVIOUS_TAG}..${GITHUB_REF} --pretty=format:"- %s (%h)" --no-merges)
fi fi
# Schreibe in Output-Datei (multiline) # Schreibe in Output-Datei (multiline)
{ {
echo 'changelog<<EOF' echo 'changelog<<EOF'
@ -128,22 +128,22 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
release-notes: | release-notes: |
# Release ${{ steps.version.outputs.version }} # Release ${{ steps.version.outputs.version }}
## Docker Images ## Docker Images
Multi-platform images (linux/amd64, linux/arm64) sind verfügbar: Multi-platform images (linux/amd64, linux/arm64) sind verfügbar:
```bash ```bash
docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:${{ steps.version.outputs.version }} docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:${{ steps.version.outputs.version }}
docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:latest docker pull ${{ steps.repository.outputs.registry }}/${{ steps.repository.outputs.repository }}:latest
``` ```
## Build Versions ## Build Versions
- Node.js: ${{ steps.versions.outputs.node_version }} - Node.js: ${{ steps.versions.outputs.node_version }}
- Go: ${{ steps.versions.outputs.go_version }} - Go: ${{ steps.versions.outputs.go_version }}
- Hugo: ${{ steps.versions.outputs.hugo_version }} - Hugo: ${{ steps.versions.outputs.hugo_version }}
## Changes ## Changes
${{ steps.changelog.outputs.changelog }} ${{ steps.changelog.outputs.changelog }}

View file

@ -74,7 +74,7 @@ jobs:
### Verification ### Verification
See the logs, there should appear a "Hello World!" in "Hello World" Step See the logs, there should appear a "Hello World!" in "Hello World" Step
## Usage Examples ## Usage Examples
@ -84,7 +84,7 @@ See [infra-deploy](https://edp.buildth.ing/DevFW/infra-deploy/src/branch/main/.g
### Use goreleaser to build, test, package and release a project ### Use goreleaser to build, test, package and release a project
This pipeline is triggered when a tag with the prefix `v` is pushed to the repository. This pipeline is triggered when a tag with the prefix `v` is pushed to the repository.
Then, it fetches the current repository with all tags and checks out the version for the current run. Then, it fetches the current repository with all tags and checks out the version for the current run.
After that the application is being built. After that the application is being built.
@ -144,7 +144,3 @@ jobs:
* [Link to external documentation] * [Link to external documentation]
* [Link to community resources] * [Link to community resources]
* [Link to related components] * [Link to related components]
## Documentation Notes
[Instructions for team members filling in this documentation - remove this section once complete]

View file

@ -1,8 +1,8 @@
--- ---
title: "Runner Orchestration" title: Runner Orchestration
linkTitle: "Runner Orchestration" linkTitle: Runner Orchestration
weight: 30 weight: 30
description: GARM description: Using GARM to manage short-lived Forgejo runners
--- ---
## Overview ## Overview
@ -52,25 +52,10 @@ A custom edge-connect provider was implemented for GARM to enable infrastructure
- Get the GARM admin password: `kubectl get secret -n garm garm-credentials -o json | jq .data.GARM_ADMIN_PASSWORD -r | base64 -d` - Get the GARM admin password: `kubectl get secret -n garm garm-credentials -o json | jq .data.GARM_ADMIN_PASSWORD -r | base64 -d`
- Configure endpoints, credentials, repositories, and runner pools in GARM as described in [TODO](TODO) - Configure endpoints, credentials, repositories, and runner pools in GARM as described in [TODO](TODO)
## Usage Examples
### [Use Case 1]
[Example with code/commands showing common use case]
```bash
# Example commands
```
### [Use Case 2]
[Another common scenario]
## Integration Points ## Integration Points
* **[Forgejo]**: Picks up pending action jobs, listen in Forgejo * **Forgejo**: Picks up pending action jobs, listen in Forgejo
* **[Edge Connect]**: Uses this infrastructure to deploy runners that can pick up open jobs in forgejo * **Edge Connect**: Uses this infrastructure to deploy runners that can pick up open jobs in forgejo
## Architecture ## Architecture
@ -108,6 +93,8 @@ The diagram below shows how a trigger of an action results in deployment of a ru
### Deployment Architecture ### Deployment Architecture
{{<likec4-view view="forgejoGarmArchitecture" browser="false" dynamic-variant="sequence" project="architecture" title="Architecture of Forgejo, Garm and Edge Connect">}}
[Add infrastructure and deployment diagrams showing how the component is deployed] [Add infrastructure and deployment diagrams showing how the component is deployed]
TODO c4 TODO c4
@ -217,9 +204,7 @@ Now, connect to the WebUI, use `GARM_ADMIN_USERNAME` and `GARM_ADMIN_PASSWORD` a
## Additional Resources ## Additional Resources
* [Using garm](https://github.com/cloudbase/garm/blob/main/doc/using_garm.md) * [Using GARM](https://github.com/cloudbase/garm/blob/main/doc/using_garm.md)
* [Link to community resources]
* [Link to related components]
## Documentation Notes ## Documentation Notes

View file

@ -1,6 +1,6 @@
--- ---
title: "Deployments" title: Environments
linkTitle: "Deployments" linkTitle: Environments
weight: 40 weight: 40
description: > description: >
Deployment targets and edge connectivity solutions. Deployment targets and edge connectivity solutions.

View file

@ -1,6 +1,6 @@
--- ---
title: "EdgeConnect Client" title: "Client"
linkTitle: "EdgeConnect Client" linkTitle: "Client"
weight: 30 weight: 30
description: > description: >
Client software for establishing EdgeConnect connections Client software for establishing EdgeConnect connections

View file

@ -1,6 +1,6 @@
--- ---
title: EdgeConnect SDK title: SDK
linkTitle: EdgeConnect SDK linkTitle: SDK
weight: 10 weight: 10
description: > description: >
Software Development Kit for interacting with EdgeConnect Software Development Kit for interacting with EdgeConnect

View file

@ -1,6 +1,6 @@
--- ---
title: "Infrastructure Orchestration" title: Orchestration tools
linkTitle: "Infrastructure Orchestration" linkTitle: Orchestration tools
weight: 10 weight: 10
description: > description: >
Infrastructure deployment and catalog management (infra-deploy, infra-catalogue) Infrastructure deployment and catalog management (infra-deploy, infra-catalogue)
@ -15,6 +15,7 @@ description: >
* **Last Updated**: YYYY-MM-DD * **Last Updated**: YYYY-MM-DD
* **TODO**: * **TODO**:
* [ ] Add detailed component description * [ ] Add detailed component description
* [ ] Add info on deploying infra-deploy / infra-catalogue, and how versioning works
* [ ] Include usage examples and code samples * [ ] Include usage examples and code samples
* [ ] Add architecture diagrams * [ ] Add architecture diagrams
* [ ] Review and finalize content * [ ] Review and finalize content

View file

@ -15,13 +15,13 @@ This section covers operational aspects of the Edge Developer Platform. In gener
### EDP ### EDP
EDP is running on two OTC clusters (remember: this just means that we twice run the [infra-deploy pipeline](https://edp.buildth.ing/DevFW/infra-deploy/actions?workflow=deploy.yaml&actor=0&status=0) as eyerything is code!) EDP is running on two OTC clusters (remember: this just means that we twice run the [infra-deploy pipeline](https://edp.buildth.ing/DevFW/infra-deploy/actions?workflow=deploy.yaml&actor=0&status=0) as eyerything is code!)
![alt text](otc-hub.png) ![alt text](otc-hub.png)
#### Further references for infrastructural informations #### Further references for infrastructural informations
* OTC: * OTC:
* [IPCEI-CIS Confluence](https://confluence.telekom-mms.com/spaces/IPCEICIS/pages/1000105031/OTC) * [IPCEI-CIS Confluence](https://confluence.telekom-mms.com/spaces/IPCEICIS/pages/1000105031/OTC)
### Edge Connect ### Edge Connect
@ -44,9 +44,16 @@ But we also got access on the cluster level for operations issues, see picture a
## Monitoring & Observability ## Monitoring & Observability
On EDP the observability cluster is meant to monitor the platform stacks, e.g. by [Grafana](https://grafana.observability.buildth.ing). On EDP the observability cluster is meant to monitor the platform stacks, e.g. by [Grafana](https://grafana.observability.buildth.ing).
But there is no operational monitoring lifecycle in place. we didn't define metrics or alerts as there is no operational mode yet. But there is no operational monitoring lifecycle in place. we didn't define metrics or alerts as there is no operational mode yet.
Most monitoring and observability is done through grafana, deployed through the observability stack.
Login is found in the `grafana-admin-credentials` secret.
NOTE document that default deployed stacks are different depending on is_observability flag
![alt text](edp-grafana.png) ![alt text](edp-grafana.png)
## Maintenance ## Maintenance

View file

@ -0,0 +1,70 @@
deployment {
environment otcKubernetes 'OTC Kubernetes' {
description 'OTC Container Cluster Engine hosting EDP platform'
technology 'Kubernetes'
icon tech:kubernetes
cluster edpCluster 'EDP Cluster' {
description 'EDP platform cluster'
instanceOf edp.forgejo {
description 'Forgejo - Git platform with Actions'
}
instanceOf edp.forgejoActions {
description 'CI/CD orchestration for Forgejo'
}
instanceOf edp.garm {
description 'GARM container with runner orchestration'
}
instanceOf edp.garm.garm {
description 'GARM - Runner lifecycle manager'
}
instanceOf edp.garm.providerEdgeConnect {
description 'GARM Provider for Edge Connect'
}
}
}
environment edgeConnectEnv 'Edge Connect' {
description 'Edge infrastructure for ephemeral runner deployment'
technology 'Edge Connect Platform'
icon tech:docker
computeressource runnerInfrastructure 'Runner Infrastructure' {
description 'Dynamically provisioned runner instances'
instanceOf forgejoRunner {
description 'Ephemeral Forgejo Actions runner'
-> otcKubernetes.edpCluster.forgejo 'registers with and picks up jobs'
-> otcKubernetes.edpCluster.garm 'retrieves bootstrap information'
}
}
}
}
views {
deployment view forgejoGarmArchitecture {
title 'Architecture of Forgejo, Garm and Edge Connect'
description 'Deployment architecture showing GARM orchestrating ephemeral runners on Edge Connect for Forgejo Actions'
include
otcKubernetes,
otcKubernetes.*,
otcKubernetes.**,
edgeConnectEnv,
edgeConnectEnv.*,
edgeConnectEnv.**
style otcKubernetes {
color blue
}
style edgeConnectEnv {
color green
}
}
}

File diff suppressed because one or more lines are too long