# 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 - ```