TGViewer
Находки в опенсорсе Находки в опенсорсе @opensource_findings · 12.6K subscribers
Post #877 12K
Как работает CI для опенсорса?

Любой крупный опенсорс проект невозможен без обильного тестирования. CI-сервисы уже многие годы являются нашими обязательными спутниками. Но как они работают?

Давайте разбирать на примере GitVerse.

Важнейшие части:
- репозиторий – откуда мы берем задачи и код для запуска;
- DSL – описание того, как и что мы будем запускать. Обычно в yaml;
- runner (self-hosted или shared) – где мы запускаем определенные нами задачи.

Поговорим про две последние части.

DSL

С DSL все очень интересно. В GitVerse синтаксис и рантайм совместимы с GitHub Actions — значит, можно переиспользовать почти все существующие actions из маркетплейса.

Пример переиспользования wemake-python-styleguide GHA можно найти тут:


name: wps
'on':
push:
branches:
- master
pull_request:
jobs:
build:
runs-on: ubuntu-cloud-runner # <- отличие от GHA
steps:
- uses: actions/checkout@v4
- uses: wemake-services/wemake-python-styleguide@master


Работает! Вот ссылка на логи.

Пока есть проблемы с actions/cache, но обещают скоро пофиксить.

Runner

Как и всегда: можно делать свои self-hosted раннеры, есть простой способ завести раннеры в cloud.ru, есть hosted runners от платформы.

Что интересно? Интересно, что сам раннер построен поверх таскраннера act, который умеет запускать GitHub Actions локально. Документация тут. Можно попробовать запустить мой пример локально:


» act -W .gitverse/workflows/wps.yaml --container-architecture linux/amd64 -P ubuntu-cloud-runner=node:16-buster-slim

[wps] ☁ git clone 'https://github.com/wemake-services/wemake-python-styleguide' # ref=master
[wps] ⭐ Run Main actions/checkout@v4
[wps] 🐳 docker cp src=/Users/sobolev/Desktop/wps-test/. dst=/Users/sobolev/Desktop/wps-test
[wps] ✅ Success - Main actions/checkout@v4
[wps] ⭐ Run Main wemake-services/wemake-python-styleguide@master
[wps] ❌ Failure - Main wemake-services/wemake-python-styleguide@master
[wps] ⚙ ::set-output:: output=./script.py
2:1 WPS421 Found wrong function call: print
print('hello world')
^
[wps] 🏁 Job failed


Круто?

Внутри self-hosted runner выполняется похожий код. В GitVerse есть свой act_runner поверх act, чтобы было удобнее. Там гошный standalone бинарник, легко скачать и использовать.

Пока hosted runners в бете, но их постепенно выкатывают на всех пользователей. Если у вас что-то не работает, то создать багу можно тут.

Послесловие

Ребята из GitVerse решили поддержать мою работу в опенсорсе, что огромная редкость в наших реалиях.
Большое им спасибо.

Реклама. АО «СберТех» ИНН: 7736632467. erid: 2W5zFHCJ2RN
  • 🔥 75
  • 👍 38
  • 💩 19
  • 👎 7
  • ❤ 5
  • 🤮 4
  • 🤬 3
  • 👌 3
  • 👏 1
  • 😁 1
More from @opensource_findings
  1. Sep 28, 2026Еще анонсы докладов на бесплатную конференцию 17 октября в НН Регистрация: https://itgorky…
  2. Sep 25, 2026Монадические выражения в Python. Наконец-то! Продолжаем разговор про интересные PEPы. Пого…
  3. Sep 15, 2026PEPы в Python окончательно вышли из-под контроля Давайте посмотрим, что происходит с ПЕПам…
  4. Sep 10, 2026Большая бесплатная конференция в Нижнем Новгороде 17 октября Регистрация: https://itgorky.…
  5. Sep 1, 2026Post #985
  6. Aug 24, 2026JIT могут удалить из CPython! PEP-836: https://peps.python.org/pep-0836 JIT в CPython имее…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →