garm-provider-edge-connect/README.md
Manuel Ganter 760d9a3e8c
Some checks failed
build / build (push) Successful in 44s
Go Tests / go-tests (push) Failing after 1m2s
fixed forgejo runner
2025-10-30 14:25:31 +01:00

119 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Prerequisites
Use this project in conjunction with the DevFW-CICD/garm project. (It is assumed that project is cloned to the folder 'garm'.)
Edit the credentials for access to Telekom Edge Cloud and set new Tag:
In the garm project edit the file deploy.yaml:
- Edit the credentials inside the Secret with name 'edge-connect-creds' by setting values (inside stringData.creds.toml) for username and password.
- Edit the Deployment with name 'garm' by setting a new value (inside spec.template.spec.containers[0]) for the image (tag) of the form garm:provider-ec-[new_number].
# Build and deploy the project
Use these commands in the current project.
´´´bash
docker buildx build -t edp.buildth.ing/devfw-cicd/garm:provider-ec-[new_number] --push .
kubectl apply -f ../garm/deploy.yaml
´´´
Don't forget to rebuild the ubuntu-host-runner if anything changed in the `runner` folder:
```
docker buildx build --platform linux/amd64 --push -t edp.buildth.ing/devfw-cicd/ubuntu-host-runner:latest runner
```
# Configuration
## Extra Specs
You can configure runner behavior by passing extra specifications as JSON in the pool's `extra_specs` field.
### Available Parameters
| Parameter | Type | Default Value | Description |
|-----------|------|---------------|-------------|
| `runner_workdir` | string | `/runner/_work/` | The working directory for the runner |
| `disable_runner_update` | boolean | `true` | Whether to disable automatic runner updates |
| `runner_ephemeral` | boolean | `true` | Whether the runner should be ephemeral (single-use) |
| `pod_spec` | object | See default below | Custom Kubernetes PodSpec configuration |
### Basic Example
```json
{
"runner_workdir": "/custom/path/",
"disable_runner_update": false,
"runner_ephemeral": false
}
```
### Custom PodSpec Example
You can provide a complete custom PodSpec to configure resource limits, additional containers, volumes, security contexts, etc:
```json
{
"runner_workdir": "/runner/_work/",
"pod_spec": {
"restartPolicy": "Never",
"containers": [
{
"name": "runner",
"image": "edp.buildth.ing/devfw-cicd/garm-act-runner:1",
"imagePullPolicy": "Always",
"env": [],
"resources": {
"requests": {
"memory": "2Gi",
"cpu": "1000m"
},
"limits": {
"memory": "4Gi",
"cpu": "2000m"
}
},
"volumeMounts": [
{
"name": "runner-dir",
"mountPath": "/runner"
}
]
}
],
"volumes": [
{
"name": "runner-dir",
"emptyDir": {}
}
]
}
}
```
**Note:** When providing a custom `pod_spec`, the environment variables required for the runner (such as `RUNNER_TOKEN`, `METADATA_URL`, etc.) are automatically injected into the first container if not already present in the custom spec. If you provide a custom PodSpec without environment variables, make sure the container configuration is compatible with the runner requirements.
### Default PodSpec
If no `pod_spec` is provided, the following default configuration is used:
```yaml
restartPolicy: Never
containers:
- name: runner
image: edp.buildth.ing/devfw-cicd/garm-act-runner:1
imagePullPolicy: Always
env: [auto-generated environment variables]
volumeMounts:
- name: runner-dir
mountPath: /runner
volumes:
- name: runner-dir
emptyDir: {}
```
## Build the runner on macos
```
cd runner && docker buildx build --platform linux/amd64 --push -t edp.buildth.ing/devfw-cicd/ubuntu-host-runner:$(date --utc --iso-8601) . && cd -
```