|
All checks were successful
Go Tests / go-tests (push) Successful in 1m33s
|
||
|---|---|---|
| .github/workflows | ||
| config | ||
| internal/spec | ||
| provider | ||
| runner | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| public.gpg | ||
| README.md | ||
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.
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 login edp.buildth.ing
docker buildx build --platform linux/amd64 --push -t edp.buildth.ing/devfw-cicd/ubuntu-host-runner:latest runner
docker buildx build --platform linux/amd64 --push -t edp.buildth.ing/devfw-cicd/ubuntu-host-runner:$(date +"%Y-%m-%d-%H%M") runner
Updating GARM
Information on resetting GARM can be found in the runner/ README.
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
{
"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:
{
"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:
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: {}