4.8 KiB
Tech Stack — Gitea Actions CI -kirjasto
Absoluuttinen lähde sille, mitä teknologioita kirjasto käyttää ja tukee. Tämä dokumentti laaditaan
design-rationale.md:n pohjalta. Mitään tässä listaamatonta teknologiaa ei oleteta olevan käytössä.
Kirjaston oma runtime
Kirjasto itsessään on kokoelma Gitea Actions reusable workflow -tiedostoja (.gitea/workflows/*.yml). Ajonaikaiset stepit käyttävät:
| Teknologia | Versio / minimi | Käyttötarkoitus |
|---|---|---|
| Gitea Actions | 1.21+ | CI-alusta, workflow-moottori |
| Gitea act runner | 0.2+ | Workflow'n suoritus |
| Bash | 4.0+ | Integraatioskriptit workflow-stepeissä |
| curl | 7.0+ | Gitea REST API -kutsut (statusraportointi, dispatch, pollaus) |
| jq | 1.6+ | JSON-vastausten jäsennys REST API -kutsuista |
| git | 2.30+ | SCM-operaatiot (checkout, tag, push) |
| MinIO client (mc) | latest | Raporttien pushaus MinIO:hon ja URL-generointi |
Konfiguraatio
| Teknologia | Käyttötarkoitus |
|---|---|
| YAML | Projektikohtainen konfiguraatio (ci-flow-values.yaml) |
| Gitea organization secrets | Tokenit ja salasanat (Gitea API -token, MinIO credentials) |
| Gitea organization variables | Infra-tason asetukset (MinIO base URL, SonarQube URL) |
Tuetut ulkoiset palvelut
Kirjasto integroituu näihin ulkoisiin palveluihin workflow-stepeistä käsin. Palvelut eivät ole osa kirjastoa.
| Palvelu | Rajapinta | Käyttötarkoitus |
|---|---|---|
| Gitea REST API | /api/v1/ |
Commit-statusraportointi, workflow-dispatch, run-status-pollaus, taggaus |
| MinIO | S3 API + staattinen web-hosting | Testiraporttien tallennus ja selailu |
| SonarQube | REST API (/api/) |
Quality gate -pollaus, dashboard-linkitys |
| Gitea Packages | Container registry API | Docker-imagen push ja taggaus |
Tuetut build-ekosysteemit
Kirjasto tukee näitä käyttäjäprojektien build-työkaluja. Työkalut asennetaan workflow'n ajonaikaiseen konttiin (projektin itse määrittelemään).
| Ekosysteemi | Työkalut | Artifact-tyypit |
|---|---|---|
| Java / Maven | mvn, java |
JAR, Docker |
| Java / Gradle | gradle, java |
JAR, Docker |
| Node.js / npm | npm, node |
npm-paketti, Docker |
| Docker | docker, docker buildx |
Docker-image |
Tuetut testikehykset
Kirjasto generoi ja julkaisee raportit näistä testikehyksistä. Itse testikehysten ajurit ovat käyttäjäprojektissa.
| Testikehys | Raporttiformaatti | MinIO-kohde |
|---|---|---|
| Cucumber | HTML (Cucumber Reports) | /{commit_short}/cucumber/ |
| JUnit | XML | /{commit_short}/junit/ |
| JaCoCo | HTML | /{commit_short}/jacoco/ |
| Maven Site | HTML | /{commit_short}/site/ |
| Mukautettu HTML | HTML | /{commit_short}/{report_name}/ |
Tuetut deployment-työkalut
| Työkalu | Käyttötarkoitus |
|---|---|
| Helm v3 | Kubernetes-deployment (arvot values-{environment}.yaml) |
| Kubernetes | Ajonaikainen ympäristö (testiympäristöt, tuotanto) |
Mitä EI tueta (verrattuna Jenkins-versioon)
Nämä olivat Jenkins-kirjastossa, mutta on tietoisesti jätetty pois Gitea Actions -versiosta:
| Teknologia | Syy |
|---|---|
| GitLab REST API | Ei multi-platform-tukea (periaate 6) |
| BitBucket Server REST API | Ei multi-platform-tukea |
| BitBucket Cloud REST API | Ei multi-platform-tukea |
| Jenkins (shared library, cucumber plugin, publishHTML, jacoco plugin, buildJob) | Ei Jenkins-riippuvuutta — Gitea Actions korvaa |
| Artifactory (Docker registry) | MVP:ssä ei. Factory/adapter-patternilla lisättävissä myöhemmin |
| Nexus (Docker registry) | MVP:ssä ei. Factory/adapter-patternilla lisättävissä myöhemmin |
| Artifactory (npm registry) | MVP:ssä ei. Factory/adapter-patternilla lisättävissä myöhemmin |
| Groovy | Jenkins-spesifi. Korvautuu Bashilla ja YAML:lla |
Huomautus: Docker-rekisterit
MVP:ssä tuetaan vain Gitea Packages (Container registry). Arkkitehtuuriin suunnitellaan factory/adapter-pattern, jolla Artifactory ja Nexus voidaan lisätä myöhemmin ilman workflow-muutoksia. Rekisteri konfiguroidaan ci-flow-values.yaml:n docker-osiossa type-kentällä (vrt. Jenkins ArtifactRepoType-enum).
Huomautus: SonarQube-integraatio
Jenkins-versio pollasi quality gatea: GET /api/project_analyses/search → etsi uusin analyysi → GET /api/qualitygates/project_status?analysisId=X. SonarQubessa on tätä parempi rajapinta. Tutkitaan arkkitehtuurivaiheessa.
Huomautus: Docker-in-Docker
Gitea Actions tukee Docker-in-Dockeria natiivisti services:-määrittelyllä workflow-tiedostossa. Tämä vastaa Jenkinsin podTemplate-konttia docker:19.03.1-dind + docker:19.03.1 sidecar-mallia. Projektin workflow määrittelee tarvittavat kontit itse — reusable workflow ei pakota tiettyä konttivalikoimaa.