Files
gitea-ci-library/docs/tech-stack.md
T
2026-06-08 06:04:49 +03:00

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.