CI Runner образы для Forgejo
Find a file
DSvinka 312a6a64ac
All checks were successful
build-runner-images / build (deploy) (push) Successful in 3m12s
build-runner-images / build (docker) (push) Successful in 1m35s
build-runner-images / build (dotnet) (push) Successful in 3m32s
build-runner-images / build (go) (push) Successful in 1m27s
build-runner-images / build (node) (push) Successful in 1m46s
build-runner-images / build (rust) (push) Successful in 1m41s
build-runner-images / build-android (push) Successful in 22m49s
feat(docker): add Node.js 22 for Forgejo Actions JS-actions support
actions/checkout@v4 and docker/build-push-action@v6 are JavaScript
actions requiring Node.js in the runner container.
2026-06-27 00:53:27 +03:00
.forgejo fix(docker-build-push): accept space-separated tags 2026-06-24 22:53:42 +03:00
Dockerfile.android feat: Gradle 8.11.1 в Android-образ 2026-06-25 16:58:22 +03:00
Dockerfile.deploy fix(deploy): add nodejs for GitHub actions/download-artifact@v3 2026-06-25 09:49:15 +03:00
Dockerfile.docker feat(docker): add Node.js 22 for Forgejo Actions JS-actions support 2026-06-27 00:53:27 +03:00
Dockerfile.dotnet fix(dotnet): add docker-cli and docker-buildx to dotnet image 2026-06-24 21:55:51 +03:00
Dockerfile.go fix(docker): add docker-cli to runner:go image 2026-06-24 23:46:45 +03:00
Dockerfile.node
Dockerfile.rust
README.md feat(docker): add Node.js 22 for Forgejo Actions JS-actions support 2026-06-27 00:53:27 +03:00

CaviCode CI Runner

Кастомные Docker-образы для Forgejo runner на 192.168.1.40.

Базовый образ catthehacker/ubuntu:act-latest не подходит — Ubuntu archive.ubuntu.com таймаутит через Cloudflare, apt-get не работает. Все образы на базе Alpine 3.20 — apk add работает быстро и надёжно.

Образы

Образ Метка Размер Инструменты
cavicode/runner:deploy deploy ~32MB bash, ssh, rsync, sshpass
cavicode/runner:dotnet dotnet ~1.5GB .NET 8/9/10, Java 21, Node.js, Python, Git, ssh, rsync, sshpass, docker-cli
cavicode/runner:go go ~430MB Go 1.24, Node.js, Python, Git, ssh, rsync, sshpass, docker-cli
cavicode/runner:rust rust ~600MB Rust (stable), rustfmt, clippy, Node.js, Python, Git, ssh, rsync, sshpass, docker-cli
cavicode/runner:node node ~180MB Node.js 20, npm, Python, Git, ssh, rsync, sshpass, docker-cli
cavicode/runner:docker docker ~300MB Docker CLI + buildx, Node.js 22, Git, ssh, rsync, sshpass
cavicode/runner:android android ~5GB .NET 8/9/10, Java 21, Android SDK 36 + NDK 28 + CMake 3.31, Rust + cargo-ndk, Conan 2, Node.js, Python, Git, ssh, rsync, sshpass, docker-cli

Сборка

docker build -t cavicode/runner:deploy   -f Dockerfile.deploy  .
docker build -t cavicode/runner:dotnet   -f Dockerfile.dotnet  .
docker build -t cavicode/runner:go       -f Dockerfile.go      .
docker build -t cavicode/runner:rust     -f Dockerfile.rust    .
docker build -t cavicode/runner:node     -f Dockerfile.node    .
docker build -t cavicode/runner:docker   -f Dockerfile.docker  .
docker build -t cavicode/runner:android  -f Dockerfile.android .

Передача на CI-сервер

docker save cavicode/runner:deploy cavicode/runner:dotnet cavicode/runner:go cavicode/runner:rust cavicode/runner:node cavicode/runner:docker cavicode/runner:android \
  | gzip > /tmp/all-images.tar.gz
scp /tmp/all-images.tar.gz root@192.168.1.40:/tmp/
ssh root@192.168.1.40 "docker load < /tmp/all-images.tar.gz"

Конфигурация runner

Метки в /data/config.yml контейнера forgejo-runner:

labels:
  - "docker:docker://catthehacker/ubuntu:act-latest"
  - "deploy:docker://cavicode/runner:deploy"
  - "dotnet:docker://cavicode/runner:dotnet"
  - "go:docker://cavicode/runner:go"
  - "rust:docker://cavicode/runner:rust"
  - "node:docker://cavicode/runner:node"
  - "docker:docker://cavicode/runner:docker"
  - "android:docker://cavicode/runner:android"

После изменения конфига: docker restart forgejo-runner

Использование в workflow

jobs:
  build-dotnet:
    runs-on: dotnet
    container: cavicode/runner:dotnet

  build-go:
    runs-on: go
    container: cavicode/runner:go

  build-rust:
    runs-on: rust
    container: cavicode/runner:rust

  build-node:
    runs-on: node
    container: cavicode/runner:node

  build-docker:
    runs-on: docker
    container: cavicode/runner:docker

  build-android:
    runs-on: android
    container: cavicode/runner:android

  deploy:
    runs-on: deploy
    container: cavicode/runner:deploy

CI

Workflow .forgejo/workflows/build-images.yml автоматически собирает и передаёт образы на сервер при изменении Dockerfile.*. Использует alpine:3.20 как контейнер для сборки (не зависит от самих образов — нет замкнутого круга).

Требуемые Secrets:

  • DEPLOY_HOST — SSH-хост сервера (192.168.1.40)
  • DEPLOY_USER — SSH-пользователь (root)
  • DEPLOY_PASSWORD — SSH-пароль