Преминете към основното съдържание

CI работни потоци

Всяко хранилище изпълнява собствените си работни потоци на runner-и на Blacksmith. Продукцията се разгръща от entrosity-infra след преминаването (cutover) на 2026-09-26; работните потоци deploy, agent-builds, release и platform-cutover на монорепото entrosity/RMM са изключени.

ХранилищеРаботен потокЗадействанеКакво прави
entrosity-shared-goci.ymlPush, pull request, таговеПроверка с go mod tidy, golangci-lint, go vet за Linux и Windows, тестове под Linux и Windows.
security.ymlPush, pull request, седмичноgovulncheck (Linux и Windows), gosec, gitleaks.
entrosity-axis.backend, entrosity-hub.backendci.ymlPush, pull requestПроверка с go mod tidy, make gen не оставя разлики, golangci-lint, модулни и интеграционни тестове; в main, след като минат успешно, задачата image качва ghcr.io/entrosity/{axis,hub}-backend:main и :main-<sha12> и изпраща deploy към entrosity-infra.
security.ymlPush, pull request, седмичноgovulncheck, gosec, gitleaks, изграждане на образа с Trivy и SPDX SBOM.
release.ymlТаг v*Качва ghcr.io/entrosity/{axis,hub}-backend:X.Y.Z (и latest, освен ако тагът няма -suffix), GitHub release.
openapi-changed.ymlPush към main, който променя api/openapi.yamlrepository_dispatch openapi-updated към приложението и към entrosity-docs.
entrosity-axis.frontend, entrosity-hub.frontendci.ymlPush, pull requestpnpm gen:api не оставя разлики, lint, форматиране, проверка на типовете, тестове, изграждане; в main качва статичния образ ghcr.io/entrosity/{axis,hub}-frontend:main и изпраща deploy към entrosity-infra.
ui-bump.ymlDispatch ui-released, ръчноОбновява @entrosity/ui, изпълнява всички проверки и качва обновлението в main само ако всички минат успешно.
openapi-bump.ymlDispatch openapi-updated, ръчноОпреснява api/openapi.yaml, генерира наново клиента и качва в main, когато проверката на типовете и тестовете минат успешно.
entrosity-uici.ymlPush, pull requestLint, форматиране, проверка на типовете, тестове, изграждане, съдържание на пакета.
release.ymlТаг v*Публикува @entrosity/ui в GitHub Packages, GitHub release, dispatch ui-released към двете приложения.
entrosity-axis-agent, entrosity-axis-connectorci.ymlPush, pull requestLint, vet и тестове под Linux; тестове под Windows, изграждане на MSI, smoke тест за инсталиране/деинсталиране; за конектора: LDAP тестове срещу Samba AD.
dev-release.ymlPush към main, ръчноMSI и изпълним файл като версия 0.1.<run>-dev.<sha> в плъзгащото се pre-release издание dev.
release.ymlТаг v*MSI и изпълним файл в GitHub release.
entrosity-edge-connectorci.ymlPush, pull requestПроверка с go mod tidy, vet за Linux и Windows, тестове под Linux и Windows, изграждане на MSI, smoke тест за инсталиране/деинсталиране.
dev-release.ymlPush към main, ръчноMSI и изпълним файл като версия 0.0.<build>-dev.<commit> в плъзгащото се pre-release издание dev; публикува се в Edge в канала beta (по-долу).
release.ymlТаг v*MSI и изпълним файл в GitHub release; публикува се в Edge (stable или beta за таг с -suffix).
entrosity-sphere-connectorci.ymlPush, pull requestПроверка с go mod tidy, vet за Linux и Windows, тестове под Linux и Windows, изграждане на MSI, smoke тест за инсталиране/деинсталиране.
dev-release.ymlPush към main, ръчноMSI и изпълним файл като версия 0.0.<build>-dev.<commit> в плъзгащото се pre-release издание dev; публикува се в Sphere в канала dev (по-долу).
release.ymlТаг v*MSI и изпълним файл в GitHub release; публикува се в Sphere (stable или dev за таг с -suffix).
entrosity-infraci.ymlPush, pull requestactionlint, shellcheck, compose config, персонализираното изграждане на Caddy, Trivy върху deploy/, gitleaks.
integration.yml02:30 UTC, ръчноСрещу клоновете main: двата комплекта Playwright тестове (scripts/e2e.sh), smoke тестът на конектора и Windows тестът от край до край (реален MSI на агента, внедряване на 7-Zip).
deploy.ymlDispatch deploy, push към main, който променя deploy/, ръчноРазгръщане в продукция (Непрекъснато разгръщане).
web-image.ymlРъчноИзгражда и качва ghcr.io/entrosity/entrosity-web:<tag> от публикуваните образи на приложенията и документацията.
entrosity-docsci.ymlPush, pull requestИзграждане на сайта (проваля се при счупени връзки и котви); в main качва ghcr.io/entrosity/docs:main и изпраща deploy към entrosity-infra.
openapi-updated.ymlDispatch openapi-updated, ръчноОпреснява specs/*.yaml и качва в main, когато сайтът се изгражда успешно.

Dependabot поддържа актуални Go модулите, npm пакетите, actions и Docker образите във всяко хранилище. Приложенията игнорират @entrosity/ui там (с него се занимава ui-bump.yml).

Публикуване на самообновявания​

Работните потоци на агента и конектора могат да публикуват MSI към сървъра на Axis като издание за самообновяване (go run ./cmd/publish-agent от изтеглено копие на entrosity-axis.backend). Тази стъпка се пропуска, освен ако променливата на хранилището RELEASE_PUBLISH_ENABLED е true. За продукцията на Entrosity тя е включена и в двете хранилища (от 2026-09-26, заедно с тайните RELEASE_PUBLIC_KEY и RMM_RELEASE_TOKEN), така че всеки push към main публикува dev компилация, която сървърът разпространява, а всеки етикет – издание. Компилациите не са подписани: SIGNING_CERT_* не е зададена. Dev компилациите са с версия 0.1.<run>-dev.<sha>, така че се подреждат над последните dev компилации на монорепото (0.0.<run>-dev, до 0.0.25-dev), въпреки че новите хранилища започнаха номерата на изпълненията си отначало.

Издания на конектора на Edge​

dev-release.yml и release.yml на конектора на Edge публикуват MSI в Edge (стъпка Publish to Edge), който го подписва и го разпространява към конекторите (Работа с Entrosity Edge): етикетите vX.Y.Z в канала stable, етикетите с -suffix и всяка dev компилация в beta. Стъпката се изпълнява само когато е зададена променливата на хранилището EDGE_RELEASE_API (адресът на Edge, https://hub.entrosity.com/edge), и се проваля без тайната EDGE_RELEASE_TOKEN. Компилациите вграждат RELEASE_PUBLIC_KEY – публичната половина на EDGE_RELEASE_SIGNING_KEY на сървъра; компилация без него предупреждава и отказва обновявания.

Издания на конектора на Sphere​

dev-release.yml и release.yml на конектора на Sphere качват MSI в Sphere (стъпка Publish for self-update, scripts/publish-release.sh), който го подписва и го предлага на конекторите (Работа с Entrosity Sphere): таговете vX.Y.Z в канала stable, таговете с -suffix и всяка dev компилация в dev. Стъпката се изпълнява само когато променливата на хранилището RELEASE_PUBLISH_ENABLED е true, и се проваля без тайната SPHERE_RELEASE_TOKEN; версия, която Sphere вече има (409), се приема за успех. Компилациите вграждат RELEASE_PUBLIC_KEY – публичната половина на SPHERE_RELEASE_SIGNING_KEY на сървъра; компилация без него предупреждава и не се обновява сама.

Runner-и​

ЕтикетИзползва се от
blacksmith-4vcpu-ubuntu-2404CI на бекендите, изграждане на образи, CI и обновления на версии на приложенията, интеграционни тестове
blacksmith-2vcpu-ubuntu-2404Проверки за сигурност, малки задачи
blacksmith-4vcpu-windows-2025Windows задачи на агента и конектора, Windows тестът от край до край

.github/actionlint.yaml във всяко хранилище изброява етикетите за actionlint.

Тайни и променливи​

ИмеВидКъдеИзползва се за
ENTROSITY_CI_TOKENтайнавсяко хранилище (и като Dependabot тайна в приложенията)Четене на частните хранилища, entrosity-shared-go и @entrosity/ui; repository_dispatch; качване на автоматичните обновления на версии
SIGNING_CERT_PFX, SIGNING_CERT_PASSWORDтайнаагент, конекторПодписване с Authenticode (по избор)
RELEASE_PUBLIC_KEYтайнаагент, конекторКомпилира се в изпълнимите файлове (проверка на обновленията)
RMM_RELEASE_TOKENтайнаагент, конекторПубликуване на издания за самообновяване
RELEASE_PUBLISH_ENABLEDпроменливаагент, конекторtrue включва публикуването на самообновявания
RMM_API_URL, DEV_RELEASE_CHANNEL, RMM_RELEASE_ROLLOUTпроменливаагент, конекторЦел на публикуването, dev канал, процент на пускане
RELEASE_PUBLIC_KEYтайнаentrosity-edge-connectorКомпилира се в конектора на Edge (проверка на обновленията); от edge-server release-keygen
EDGE_RELEASE_TOKENтайнаentrosity-edge-connectorПубликуване на издания в Edge (EDGE_RELEASE_TOKEN на сървъра)
EDGE_RELEASE_APIпроменливаentrosity-edge-connectorАдресът на Edge; ако липсва, компилациите не се публикуват в Edge
RELEASE_PUBLIC_KEYтайнаentrosity-sphere-connectorКомпилира се в конектора на Sphere (проверка на обновленията); публичната половина на SPHERE_RELEASE_SIGNING_KEY
SPHERE_RELEASE_TOKENтайнаentrosity-sphere-connectorКачване на издания в Sphere (SPHERE_RELEASE_TOKEN на сървъра)
RELEASE_PUBLISH_ENABLEDпроменливаentrosity-sphere-connectortrue качва всяка компилация в Sphere
SPHERE_RELEASE_APIпроменливаentrosity-sphere-connectorАдрес за качване (по избор), по подразбиране https://hub.entrosity.com/sphere/api/releases/v1
DEPLOY_HOST, DEPLOY_SSH_KEY, DEPLOY_KNOWN_HOSTSтайнаentrosity-infraРазгръщане в продукция
DEPLOY_ENABLED, DEPLOY_URLпроменливаentrosity-infratrue разрешава разгръщанията (аварийно спиране); старият хост на Axis за последната проверка (по избор)