CI Runner образы для Forgejo
- Go 100%
|
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
actions/checkout@v4 and docker/build-push-action@v6 are JavaScript actions requiring Node.js in the runner container. |
||
|---|---|---|
| .forgejo | ||
| Dockerfile.android | ||
| Dockerfile.deploy | ||
| Dockerfile.docker | ||
| Dockerfile.dotnet | ||
| Dockerfile.go | ||
| Dockerfile.node | ||
| Dockerfile.rust | ||
| README.md | ||
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-пароль