Облачные раннеры GitVerse
Облачный раннер — это полностью управляемая GitVerse среда выполнения. При запуске workflow GitVerse автоматически выделяет изолированный контейнер на каждую задачу и возвращает результат. Вам не нужно администрировать серверы, обновлять систему или следить за безопасностью окружения.
Что такое облачный раннер
Облачные (GitVerse-hosted) раннеры позволяют выполнять CI/CD задачи без настройки собственных серверов.
GitVerse автоматически запускает контейнер на основе latest
версии распространяемого нами образа
ubuntu,
выполняет все шаги workflow и после завершения уничтожает среду, гарантируя чистоту окружения для следующего запуска.
Ключевые особенности облачных раннеров:
- Ephemeral-среда — каждая задача выполняется в новой среде, состояние между запусками не сохраняется.
- Безопасность и изоляция — контейнеры не имеют доступа к локальным сетям и ресурсам пользователей.
- Не требует администрирования — GitVerse сам управляет масштабированием, обновлениями и удалением сред.
- Технические ограничения — ограничено время на выполнение одной job’ы и временно отсутствует доступ к
docker.sock
, но есть kaniko. - Лимиты — 1000/500 минут сборочного времени в месяц в публичных/приватных репозиториях, подробнее.
Характеристики и рекомендации
Параметр | Значение | Рекомендации |
---|---|---|
Среда выполнения | Docker-контейнер на базе ubuntu-latest | Используйте для CI, линтинга, юнит-тестов и сборок. |
Метка для запуска | ubuntu-cloud-runner | Укажите в workflow: runs-on: [ubuntu-cloud-runner] . |
Изоляция | Каждая задача запускается в отдельной среде | Не сохраняйте состояние, кешируйте данные вовне или используйте actions/upload-artifact . |
Доступ к docker.sock | Отсутствует (временно) | Для запуска чего-то в Docker используйте self-hosted раннеры. |
Сетевые ограничения | Нет доступа к локальным VLAN, SMB/NFS и устройствам | Для интеграционных тестов применяйте локальные раннеры. |
Таймауты | Временной лимит на выполнение одной job’ы | Что-то «тяжелое» лучше запускать на self-hosted. |
Масштабирование | Автоматическое, управляется GitVerse | Идеально подходит для распределенных CI-нагрузок. |
Примеры использования
Запуск задачи на облачном раннере
name: Build and Test
on:
push:
jobs:
build:
runs-on: ubuntu-cloud-runner
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build project
run: make build
- name: Run tests
run: make test
Сборка образа на облачных раннерах
- При запуске kaniko меняется файловая система контейнера, пропадают все команды из /usr/bin, и на этом контейнере, больше нельзя запустить какие-либо команды.
- Все дополнительные действия необходимо делать в новой задаче.
- Если требуется очередность выполнения задач, можно использовать
job.<job_id>.needs
Пример: сборка Docker-образа с помощью Kaniko
name: Build with Kaniko
on:
push:
jobs:
build_update:
name: Build
runs-on: ubuntu-cloud-runner
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Login to Artifact Registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.AR_URI }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
- name: Kaniko build and push
run: |
/kaniko/executor --context=. --dockerfile=./Dockerfile --destination=<dest_project_name>/test_kaniko:0.0.1
Замените
<dest_project_name>
(строка 18) на имя владельца репозитория.
Пример: сборка и деплой в Cloud.ru
name: Build with Kaniko and Deploy App to cloud.ru
on:
push:
jobs:
build_push_image:
name: Build and push to Evolution Artifact Registry
runs-on: ubuntu-cloud-runner
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to Evolution Artifact Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.EVOAR_URI }}
username: ${{ secrets.EVOAR_KEYID }}
password: ${{ secrets.EVOAR_KEYSECRET }}
- name: Kaniko build and push to Evolution Artifact Registry
run: |
/kaniko/executor --context=. --dockerfile=./Dockerfile.prod --destination=${{ secrets.EVOAR_URI }}/studio-nextjs-template:latest
up_container_app:
name: Up container app
needs: build_push_image
runs-on: ubuntu-cloud-runner
steps:
- name: setup go
uses: actions/setup-go@v4
with:
go-version: '>=1.23'
- name: Creating or Updating an Evolution Container App
uses: user/evo-container-app-action@v5
with:
client_id: ${{ secrets.EVOAR_KEYID }}
client_secret: ${{ secrets.EVOAR_KEYSECRET }}
registry_uri: ${{ secrets.EVOAR_URI }}
image_name: studio-nextjs-template
tag_name: latest
project_id: ${{ secrets.PROJECT_ID }}
name: container-app-studio
port: 3000