From 4e7a20b424399de44064ee13c98927409896201f Mon Sep 17 00:00:00 2001 From: y1lm0z Date: Tue, 14 Jul 2026 11:39:54 +0300 Subject: [PATCH] Runtipi store --- gitea-runner/config.json | 41 +++++++++++++++++++++++++++ gitea-runner/data/config.yaml | 30 ++++++++++++++++++++ gitea-runner/docker-compose.yml | 25 ++++++++++++++++ gitea-runner/metadata/description.md | 24 ++++++++++++++++ gitea-runner/metadata/logo.jpg | Bin 0 -> 11119 bytes 5 files changed, 120 insertions(+) create mode 100644 gitea-runner/config.json create mode 100644 gitea-runner/data/config.yaml create mode 100644 gitea-runner/docker-compose.yml create mode 100644 gitea-runner/metadata/description.md create mode 100644 gitea-runner/metadata/logo.jpg diff --git a/gitea-runner/config.json b/gitea-runner/config.json new file mode 100644 index 0000000..3efa619 --- /dev/null +++ b/gitea-runner/config.json @@ -0,0 +1,41 @@ +{ + "name": "Gitea Runner", + "id": "gitea-runner", + "available": true, + "short_desc": "Kendi Gitea sunucunuz icin Docker tabanli Actions runner", + "author": "self-hosted", + "port": 7443, + "categories": ["development", "utilities"], + "description": "Gitea Actions is akislarini calistiran, docker.sock uzerinden istenen herhangi bir imaji (ubuntu, archlinux, fedora, flutter build image'i vb.) aninda cekebilen self-hosted Docker executor runner. Tek 'docker' etiketiyle kayit olur; hangi image'in kullanilacagini workflow dosyasindaki 'container: image:' alani belirler.", + "tipi_version": 1, + "version": "0.2.11", + "source": "https://gitea.com/gitea/act_runner", + "website": "https://docs.gitea.com/usage/actions/act-runner", + "exposable": false, + "no_gui": true, + "dynamic_config": true, + "form_fields": [ + { + "type": "text", + "label": "Gitea Sunucu Adresi", + "hint": "Gitea instance'inizin tam adresi (https:// dahil)", + "placeholder": "https://gitea.senin-adresin.com", + "required": true, + "env_variable": "GITEA_INSTANCE_URL" + }, + { + "type": "password", + "label": "Runner Registration Token", + "hint": "Gitea > Settings > Actions > Runners > Create new runner sayfasindan alinan tek seferlik token", + "required": true, + "env_variable": "GITEA_RUNNER_REGISTRATION_TOKEN" + }, + { + "type": "text", + "label": "Runner Adi", + "default": "runtipi-docker-runner", + "required": false, + "env_variable": "GITEA_RUNNER_NAME" + } + ] +} diff --git a/gitea-runner/data/config.yaml b/gitea-runner/data/config.yaml new file mode 100644 index 0000000..b3e09be --- /dev/null +++ b/gitea-runner/data/config.yaml @@ -0,0 +1,30 @@ +log: + level: info + +runner: + file: .runner + capacity: 3 + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + labels: [] + +cache: + enabled: true + dir: "" + host: "" + port: 0 + external_server: "" + +container: + network: "" + privileged: false + options: "" + workdir_parent: "" + valid_volumes: [] + docker_host: "" + force_pull: true + +host: + workdir_parent: "" diff --git a/gitea-runner/docker-compose.yml b/gitea-runner/docker-compose.yml new file mode 100644 index 0000000..48adb8a --- /dev/null +++ b/gitea-runner/docker-compose.yml @@ -0,0 +1,25 @@ +services: + gitea-runner: + image: gitea/act_runner:latest + environment: + - GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL} + - GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN} + - GITEA_RUNNER_NAME=${GITEA_RUNNER_NAME:-runtipi-docker-runner} + # Tek etiket: workflow'lardaki her "container: image:" bu etiket + # uzerinden calisir, ayrica image basina etiket tanimlamaya gerek yok. + - GITEA_RUNNER_LABELS=docker + - CONFIG_FILE=/config.yaml + volumes: + # Runner'in host'un docker daemon'ina erismesi icin sart. + # NOT: bu, container'a host uzerinde fiilen root-esdegeri Docker + # kontrolu verir - guvenlik acisindan bilerek kabul edilen bir risk. + - /var/run/docker.sock:/var/run/docker.sock + # "data/config.yaml" bu app klasorunden ${APP_DATA_DIR}/data/'ya + # Runtipi tarafindan kurulumda otomatik kopyalanir. + - ${APP_DATA_DIR}/data/config.yaml:/config.yaml + # Runner kimlik/is verisi (.runner dosyasi vb.) kalici olsun diye. + - ${APP_DATA_DIR}/runner-state:/data + restart: unless-stopped + +x-runtipi: + schema_version: 2 diff --git a/gitea-runner/metadata/description.md b/gitea-runner/metadata/description.md new file mode 100644 index 0000000..c1a427a --- /dev/null +++ b/gitea-runner/metadata/description.md @@ -0,0 +1,24 @@ +# Gitea Runner + +Kendi Gitea sunucunuz icin Docker executor tipinde bir Actions runner'i, +Runtipi uzerinden tek tikla kurar. + +## Ozellikler +- Tek `docker` etiketiyle calisir; workflow dosyalarindaki `container: image:` + alani hangi image'in (ubuntu, archlinux, fedora, flutter, node, vs.) + cekilecegini belirler — runner tarafinda ekstra etiket tanimlamaya gerek yok. +- host'un Docker socket'ine baglanir, bu sayede istenen herhangi bir image + aninda cekilip calistirilabilir. + +## Kurulum sonrasi +1. Gitea sunucunuzda Settings > Actions > Runners > "Create new runner" + sayfasindan bir registration token alin. +2. Bu app'i kurarken istenen alanlara sunucu adresini ve token'i girin. +3. Kurulum bitince Gitea > Runners listesinde runner'in `docker` etiketiyle + gorunmesi gerekir. + +## Guvenlik notu +Bu app, `/var/run/docker.sock`'u container icine mount eder. Bu, container'a +host'un Docker daemon'i uzerinde tam kontrol (fiilen root-esdegeri yetki) +verir. Sadece guvendiginiz workflow'lari calistiran bir Gitea instance'i icin +kullanin. diff --git a/gitea-runner/metadata/logo.jpg b/gitea-runner/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fad352003cd93f06af54b6beefc9bd22082ec7d4 GIT binary patch literal 11119 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 literal 0 HcmV?d00001