No description
Find a file
Martin McCaffery fcadf47a62
All checks were successful
Go Tests / go-tests (push) Successful in 1m31s
Update READMEs, add pause on failure for debugging
2025-12-22 15:47:25 +01:00
.github/workflows updated pipelines 2025-11-10 16:51:27 +01:00
config fix(config): improve validation error messages for edge_connect config 2025-10-23 17:41:31 +02:00
internal/spec feat(runner): Request resources for pods 2025-10-30 15:25:10 +00:00
provider added security context 2025-10-27 16:46:11 +01:00
runner Update READMEs, add pause on failure for debugging 2025-12-22 15:47:25 +01:00
.gitignore updated pipelines 2025-11-10 16:51:27 +01:00
.goreleaser.yaml ci(release): 🚀 Add release automation with GoReleaser 2025-11-07 15:08:05 +01:00
Dockerfile chore(provider): More cleanups. 2025-10-23 11:40:39 +02:00
go.mod chore(api): upgrade edge connect client to v2 2025-10-21 16:28:40 +02:00
go.sum chore(api): upgrade edge connect client to v2 2025-10-21 16:28:40 +02:00
main.go introduced logging 2025-09-05 11:45:04 +02:00
Makefile chore(make): fixed makefile to use go variable instead of go in PATH 2025-11-10 16:58:17 +01:00
public.gpg ci(release): 🚀 Add release automation with GoReleaser 2025-11-07 15:08:05 +01:00
README.md Update READMEs, add pause on failure for debugging 2025-12-22 15:47:25 +01:00

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 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: {}