POC: test reusable workflow job visibility in Gitea Actions (#5)
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #5
This commit is contained in:
+15
-85
@@ -1,109 +1,39 @@
|
||||
# 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ä.
|
||||
> ⚠️ POC-vaihe. Osa teknologiavalinnoista voi muuttua uudelleenkirjoituksen
|
||||
> myötä. Katso myös `git-pages/docs/tech-stack.md`.
|
||||
|
||||
---
|
||||
|
||||
## 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 |
|
||||
| **curl** | 7.0+ | Gitea REST API, git-pages PATCH |
|
||||
| **jq** | 1.6+ | JSON-vastausten jäsennys |
|
||||
|
||||
---
|
||||
## Raporttien hostaus
|
||||
|
||||
## 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) |
|
||||
|
||||
---
|
||||
Raportit hostataan git-pages-palvelulla (`git-pages/`-Helm-chartti).
|
||||
Julkaisu: `scripts/publish-git-pages.sh` → PATCH tar. Tarkemmat
|
||||
teknologiavalinnat: `git-pages/docs/tech-stack.md`.
|
||||
|
||||
## 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) |
|
||||
|
||||
---
|
||||
| **Gitea REST API** | `/api/v1/` | Commit-status, workflow-dispatch, branch-listaus (retention) |
|
||||
| **git-pages** | HTTP | Raporttien hostaus |
|
||||
| **Gitea Packages** | Container registry API | Docker-imagen push |
|
||||
|
||||
## 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.
|
||||
| **MinIO** | Korvattu git-pagesilla |
|
||||
| **Multi-Git-platform** | Vain Gitea |
|
||||
| **Jenkins** (shared library, plugins) | Gitea Actions korvaa |
|
||||
| **Artifactory/Nexus** | MVP:ssä ei, factory/adapter-pattern valmiina |
|
||||
|
||||
Reference in New Issue
Block a user