Любой крупный опенсорс проект невозможен без обильного тестирования. 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