Šķîþ ţö ḿàîñ çöñţéñţ

Ţĥé ļööþ îñ ÇÎ

Éṽéŕý ḿéŕĝé çĥàñĝéš šöüŕçé çöñţéñţ, àñđ îţš ţŕàñšļàţîöñš, ţéŕḿš àñđ ṽöîçé çĥéçķš ƒàļļ ƃéĥîñđ. ÇÎ çàñ çàţçĥ ţĥéḿ üþ öñ éṽéŕý çĥàñĝé öŕ öñ à šçĥéđüļé ŵîţĥ ţĥé ķàþî ļööþ. Îţéḿš à ḿàçĥîñé çàññöţ đéçîđé ŵàîţ ƒöŕ ŕéṽîéŵ îñ ţĥé ţéàḿ'š ŕéṽîéŵ šéššîöñ öñ ţĥé šéŕṽéŕ, àñđ ţĥé šĥîþ ĝàţé þŕöţéçţš ŕéļéàšéš. Àñ öŕđîñàŕý ƃüîļđ þàššéš ŵĥîļé ţàŕĝéţ ļàñĝüàĝéš àŕé ƃéĥîñđ.

Öñ à þŕöĵéçţ çöññéçţéđ ţö à Ƃöŵŕàîñ šéŕṽéŕ, à ÇÎ ŕüñ öƒ kapi up éẋéçüţéš öñ ţĥé šéŕṽéŕ ṽéñüé. Ţĥé ĵöƃ þüšĥéš ţĥé đŕîƒţ, ţĥé šéŕṽéŕ ŕüñš ţĥé ļööþ ŵîţĥ ţĥé öŕĝàñîžàţîöñ'š ÀÎ ķéýš, šĥàŕéđ çöñţéñţ ḿéḿöŕý àñđ ţéŕḿš, àñđ ţĥé ŕéšüļţš çöḿé ƃàçķ ţö ţĥé ŵöŕķîñĝ ţŕéé. Ţĥé ŕüññéŕ ĥöļđš à šéŕṽéŕ ţöķéñ àñđ ñö þŕöṽîđéŕ ķéýš.

Ţĥé šéçţîöñš ƃéļöŵ ļîšţ ţĥé ÇÎ šüŕƒàçéš àñđ ţĥé éẋîţ çöđéš ţĥéý šĥàŕé. Ţĥé ķàþî šîţé ĥàš ţĥé šţéþ-ƃý-šţéþ ŵàļķţĥŕöüĝĥš ƒöŕ šçĥéđüļîñĝ, ĝàţîñĝ àñđ çöšţ ŕéþöŕţîñĝ öñ ĜîţĤüƃ àñđ ĜîţĻàƃ: Ţĥé ķàþî ļööþ îñ ÇÎ.

Your pipeline produceskapi-action · kapi-components · ghcr imagea merge or a schedule tickkapi up: the loop runs on the servera PR/MR with the run reportYour pipeline gateskapi check --shipa merge request opensthe bound gates runexit 3 blocks the mergeNo pipelineforge connector · Bowrain GitHub Appa push webhook reaches the serverthe server re-ingests and convergesone PR/MR, updated in place

Þŕöđüçé àñđ ĝàţé ƒŕöḿ ýöüŕ öŵñ ÇÎ, öŕ ļéţ ţĥé šéŕṽéŕ đö ƃöţĥ ŵîţĥ ñö þîþéļîñé àţ àļļ.

Ţĥé çöñţŕàçţ​

À þîþéļîñé ñééđš ţĥŕéé çöḿḿàñđš àñđ ţĥéîŕ éẋîţ çöđéš:

ÇöḿḿàñđŔöļéÉẋîţ ƃéĥàṽîöŕ
kapi statusÖƃšéŕṽé: þéŕ-ļöçàļé çöṽéŕàĝé àñđ ĝàţé šţàñđîñĝÀļŵàýš 0: ƃéĥîñđ îš þéñđîñĝ ŵöŕķ, ñöţ àñ éŕŕöŕ
kapi upÞŕöđüçé: ŕüñš ţĥé ķàþî ļööþ0 ŵĥéţĥéŕ ţĥé ŕüñ çàüĝĥţ éṽéŕýţĥîñĝ üþ, ļéƒţ ŵöŕķ ŵàîţîñĝ ƒöŕ ŕéṽîéŵ, öŕ ŵéñţ öñ àƒţéŕ ţĥé éṽéñţ šţŕéàḿ éñđéđ éàŕļý; ñöñ-žéŕö ŵĥéñ ţĥé ŕüñ ƃŕöķé öŕ îţš öüţçöḿé îš üñķñöŵñ
kapi check --shipÉñƒöŕçé: ţĥé ŕéļéàšé ƃàŕ0 þàšš, 3 ĝàţé üñḿéţ, 4 à ĝàţé đîđ ñöţ ŕüñ, 1 öþéŕàţîöñàļ éŕŕöŕ

Ŵöŕķ ŵàîţîñĝ ƒöŕ ŕéṽîéŵ éẋîţš 0. Àđđ ţĥé ĝàţé ţö ḿéŕĝé-ŕéǫüéšţ þîþéļîñéš àñđ à ǫüàļîţý ŕéĝŕéššîöñ çàññöţ ḿéŕĝé. Đàý-ţö-đàý đŕîƒţ ĝöéš ţö ŕéṽîéŵ, àñđ ƃüîļđš ķééþ þàššîñĝ.

Ţĥé šüŕƒàçéš​

ŠüŕƒàçéĤöŵ îţ ŕüñšĜüîđé
ĜîţĤüƃ Àçţîöñšsetup-kapi îñšţàļļš ţĥé ÇĻÎ (ţĥé ƃöŵŕàîñ þļüĝîñ îñçļüđéđ ƃý đéƒàüļţ); kapi-action ŕüñš kapi up àñđ ŕéþöŕţš ŵĥàţ çĥàñĝéđ, àñđ à šţéþ öƒ ýöüŕ öŵñ çöḿḿîţš îţ öŕ öþéñš à þüļļ ŕéǫüéšţ. Ţĥé ŕéüšàƃļé kapi-workflows (up.yml@v1, gate.yml@v1) çöḿþöšé ƃöţĥ îñţö öñé-ļîñé ĵöƃšĜîţĤüƃ Àçţîöñš
ĜîţĻàƃ ÇÎkapi-components ƒŕöḿ ţĥé ÇÎ/ÇĐ Çàţàļöĝ: up ŕüñš kapi up àñđ ŕéþöŕţš ŵĥàţ çĥàñĝéđ, àñđ ŵîţĥ deliver: mr öþéñš à ḿéŕĝé ŕéǫüéšţ; check ĝàţéš ḿéŕĝé-ŕéǫüéšţ þîþéļîñéšĜîţĻàƃ ÇÎ
Àñý çöñţàîñéŕ ŕüññéŕghcr.io/neokapi/kapi (çöšîĝñ-šîĝñéđ; ţĥé šéŕṽéŕ-šýñç þļüĝîñ îš þŕéîñšţàļļéđ, šö kapi up / push / pull ŵöŕķ öüţ öƒ ţĥé ƃöẋ) àñđ ţĥé ÇĻÎ đîŕéçţļý; ţĥé éẋîţ çöđéš àƃöṽé àŕé ţĥé çöñţŕàçţţĥîš þàĝé
Ñö þîþéļîñéŢĥé ƒöŕĝé çöññéçţöŕ / Ƃöŵŕàîñ ĜîţĤüƃ Àþþ: ţĥé šéŕṽéŕ çöñṽéŕĝéš öñ éṽéŕý þüšĥ ţö ţĥé ţŕàçķéđ ƃŕàñçĥ àñđ đéļîṽéŕš ţĥé ŕéšüļţš ƃàçķ àš öñé ÞŔ/ḾŔŢĥé Ƃöŵŕàîñ ĜîţĤüƃ Àþþ

Ŵĥîçĥ ţö üšé ŵĥéñ​

  • Ýöü öŵñ ţĥé ŕéþöšîţöŕý'š ÇÎ àñđ ŵàñţ çöñţŕöļ öṽéŕ ţŕîĝĝéŕš, đéļîṽéŕý àñđ ĝàţîñĝ: üšé kapi-action öñ ĜîţĤüƃ öŕ kapi-components öñ ĜîţĻàƃ. Éàçĥ ĵöƃ îš àñ öŕđîñàŕý þîþéļîñé šţéþ ýöü çàñ šĥàþé.
  • Ýöü ŵàñţ ḿîñîḿàļ šéţüþ öñ ĜîţĤüƃ: ţĥé ŕéüšàƃļé ŵöŕķƒļöŵš ĝîṽé ýöü ţĥé ŵĥöļé þŕöđüçé-àñđ-đéļîṽéŕ öŕ ĝàţé ĵöƃ àš à šîñĝļé uses: ļîñé.
  • Ñöƃöđý öŵñš ţĥé ŕéþöšîţöŕý'š ÇÎ, àš îñ à đöçš, ḿàŕķéţîñĝ öŕ çöñţéñţ ŕéþöšîţöŕý, öŕ ýöü ŵàñţ ñö çöñƒîĝüŕàţîöñ îñ ţĥé ŕéþöšîţöŕý: çöññéçţ îţ šéŕṽéŕ-šîđé ŵîţĥ ţĥé ƒöŕĝé çöññéçţöŕ öŕ ţĥé Ƃöŵŕàîñ ĜîţĤüƃ Àþþ. Ţĥé šéŕṽéŕ çàţçĥéš üþ öñ éṽéŕý þüšĥ àñđ đéļîṽéŕš à þüļļ ŕéǫüéšţ ƃàçķ.

Àüţĥéñţîçàţîñĝ à ŕüññéŕ​

Ḿîñţ à ÇÎ ţöķéñ öñçé, ƒŕöḿ àñ àüţĥéñţîçàţéđ ḿàçĥîñé:

kapi auth login
kapi auth token create --name "ci" --expire-days 90

Ţĥé ţöķéñ (bwt_…) îš šĥöŵñ öñçé, šö šţöŕé îţ àš à ÇÎ šéçŕéţ ŕîĝĥţ àŵàý. Öñ ţĥé ŕüññéŕ, BOWRAIN_AUTH_TOKEN çàŕŕîéš ţĥé çŕéđéñţîàļ, àñđ ţĥé ÇĻÎ çĥéçķš îţ ƃéƒöŕé àñý šţöŕéđ ļöĝîñ:

BOWRAIN_AUTH_TOKEN=bwt_...
BOWRAIN_SERVER_URL=https://bowrain.example.com # self-hosted only

Ýöü ñééđ BOWRAIN_SERVER_URL öñļý ƒöŕ à šéļƒ-ĥöšţéđ šéŕṽéŕ. Ţĥé ĥöšţéđ šéŕṽîçé (https://app.bowrain.cloud) îš ţĥé ƃüîļţ-îñ đéƒàüļţ, àñđ þŕöĵéçţ çöḿḿàñđš (kapi up, push, pull, check) ŕéàđ ţĥé šéŕṽéŕ ƒŕöḿ ţĥé çĥéçķéđ-öüţ ŕéçîþé'š bowrain: ƃļöçķ. Öñ ĜîţĤüƃ Àçţîöñš, setup-kapi'š auth-token àñđ server îñþüţš éẋþöŕţ éẋàçţļý ţĥéšé ţŵö ṽàŕîàƃļéš. Öñ ĜîţĻàƃ, šéţ ţĥéḿ àš ḿàšķéđ ÇÎ/ÇĐ ṽàŕîàƃļéš. Ļîšţ àñđ ŕéṽöķé ţöķéñš ŵîţĥ kapi auth token list àñđ kapi auth token delete.

Ŵĥàţ à ĵöƃ ñééđš ƃéýöñđ ţĥé šéŕṽéŕ ţöķéñ đéþéñđš öñ îţš ṽéñüé:

  • Šéŕṽéŕ ṽéñüé (à çöññéçţéđ þŕöĵéçţ): ñöţĥîñĝ. Ţĥé šéŕṽéŕ ĥöļđš ţĥé ÀÎ ķéýš; ţĥé ĵöƃ öñļý þüšĥéš, ŵàţçĥéš, àñđ þüļļš.
  • Ļöçàļ ṽéñüé (kapi up --local, öŕ à þŕöĵéçţ ŵîţĥ ñö bowrain: ƃļöçķ): ţĥé ļööþ ŕüñš îñšîđé ţĥé ĵöƃ àñđ ñééđš à þŕöṽîđéŕ ķéý, ƒöŕ éẋàḿþļé ANTHROPIC_API_KEY, àš à ÇÎ šéçŕéţ.
  • Ĝàţé-öñļý ĵöƃš: kapi check --ship ŕéàđš ţĥé ŵöŕķîñĝ ţŕéé àñđ ñééđš ñö ÀÎ ķéýš; ŵĥéñ ţĥé ĝàţé éñƒöŕçéš ĝöṽéŕñéđ ţéŕḿš, ţĥé ĵöƃ ŕüñš kapi pull ƒîŕšţ àñđ ñééđš ţĥé šéŕṽéŕ ţöķéñ. Šéé Ĝàţé ĝöṽéŕñéđ ţéŕḿš îñ ÇÎ.

Ñéẋţ​