b841496717
- ADR 0004: commit-status-periaate (API vain tarvittaessa, natiivi riittää) - git-pages/docs/implementation-notes.md: tekniset huomiot - init-job.yaml: post-install hook luo placeholderin (.index olemassa) - values.yaml: initJob.enabled default - publish-git-pages.sh: poistettu PUT-fallback (init job hoitaa) - README: maininta automaattisesta initistä
152 lines
3.9 KiB
Markdown
152 lines
3.9 KiB
Markdown
# git-pages
|
||
|
||
Jaettu **Gitea CI -raporttien** tallennus- ja lukupaikka: HTML-raportit (esim. Cucumber)
|
||
commit-kohtaisiin polkuihin, selaimella avattavina linkkeinä Gitean commitin CI-job
|
||
raportista. Kuvaus ja perustelut: [docs/](docs/).
|
||
|
||
---
|
||
|
||
## Quick Start
|
||
|
||
### 1. Secretit
|
||
|
||
Luo secretit ennen Helm-asennusta: [docs/secrets.md](docs/secrets.md)
|
||
|
||
```bash
|
||
# Avaa secrets.md ja suorita snipletit siellä
|
||
# Palaa tähän jälkeen Helm-asennukseen
|
||
```
|
||
|
||
### 2. Instanssin values-tiedosto
|
||
|
||
```bash
|
||
# Muokkaa oma values-tiedosto (tai käytä dev-values.yaml)
|
||
cp git-pages/dev-values.yaml my-values.yaml
|
||
# Muuta: ingress.host, certificate.issuerRef.name, jne.
|
||
```
|
||
|
||
### 3. Helm-asennus
|
||
|
||
```bash
|
||
NS=git-pages
|
||
VALUES=my-values.yaml
|
||
|
||
helm upgrade --install git-pages ./git-pages \
|
||
-n "$NS" --create-namespace \
|
||
-f "$VALUES"
|
||
```
|
||
|
||
Helm ajaa asennuksen jälkeen init-jobin, joka PUTtaa paikanpitäjäsivun
|
||
git-pagesiin. Tämä luo tarvittavan `.index`-tiedoston — sen jälkeen
|
||
Gitea Actions -scriptit voivat käyttää suoraan PATCHia ilman
|
||
PUT-fallbackia.
|
||
|
||
---
|
||
|
||
## Vie publish-token Gitea Actions-secretiin (per repo)
|
||
|
||
⚠️ **Tehtävä jokaiselle repoille**, joka julkaisee raportteja git-pagesiin.
|
||
|
||
```bash
|
||
NS=git-pages
|
||
REPO_OWNER="niko"
|
||
REPO_NAME="gitea-ci-library"
|
||
|
||
# 1. Lue plaintext-token erillisestä secretistä
|
||
TOKEN=$(kubectl get secret git-pages-publish-token -n "$NS" -o jsonpath='{.data.token}' | base64 -d)
|
||
|
||
# 2. Kopioi leikepöydälle
|
||
echo -n "$TOKEN" | pbcopy # macOS
|
||
# echo -n "$TOKEN" | xclip -sel clip # Linux
|
||
|
||
# 3. Avaa Gitea Actions secrets -sivu
|
||
open "https://gitea.app.keskikuja.site/${REPO_OWNER}/${REPO_NAME}/settings/actions/secrets"
|
||
# Linux: xdg-open "https://gitea.app.keskikuja.site/${REPO_OWNER}/${REPO_NAME}/settings/actions/secrets"
|
||
```
|
||
|
||
**Gitea UI:ssa:** New Secret → Name: `GIT_PAGES_PUBLISH_TOKEN` → Value: **liitä leikepöydältä** → Save
|
||
|
||
> 💡 **Monelle repoille:** Toista vaiheet 3–4, tai katso [automatisointi](docs/secrets.md#automatisointi-useamman-repon-salaisuuden-lis%C3%A4%C3%A4miseen).
|
||
|
||
---
|
||
|
||
## Käyttöönotto
|
||
|
||
### 1. Secretit
|
||
|
||
[docs/secrets.md](docs/secrets.md)
|
||
|
||
### 2. Instanssin values-tiedosto
|
||
|
||
`values.yaml` sisältää jaetut vakiot. Ympäristökohtaiset arvot omaan tiedostoon, esim.
|
||
`dev-values.yaml` / `prod-values.yaml`:
|
||
|
||
```yaml
|
||
ingress:
|
||
host: pages.example.com # julkinen host (luku + julkaisu)
|
||
|
||
certificate:
|
||
issuerRef:
|
||
name: letsencrypt-prod # cert-manager ClusterIssuer / Issuer
|
||
kind: ClusterIssuer
|
||
|
||
persistence:
|
||
storageClass: "" # tyhjä = klusterin oletus
|
||
size: 5Gi
|
||
|
||
retention:
|
||
giteaApiUrl: https://gitea.example.com
|
||
rules:
|
||
default:
|
||
maxAgeDays: 90
|
||
keepMin: 5
|
||
branches:
|
||
main:
|
||
maxAgeDays: 365
|
||
keepMin: 20
|
||
```
|
||
|
||
Esimerkki dev-ympäristöstä: [dev-values.yaml](dev-values.yaml).
|
||
|
||
### 3. Helm-asennus
|
||
|
||
Repojuuresta (sama `NS` kuin [docs/secrets.md](docs/secrets.md)):
|
||
|
||
```bash
|
||
NS=git-pages
|
||
VALUES=git-pages/dev-values.yaml
|
||
|
||
helm upgrade --install git-pages ./git-pages \
|
||
-n "$NS" --create-namespace \
|
||
-f "$VALUES"
|
||
|
||
helm template git-pages ./git-pages -f "$VALUES"
|
||
```
|
||
|
||
---
|
||
|
||
## CI-julkaisu
|
||
|
||
Julkaisu DNS-osoitteeseen BasicAuthilla:
|
||
|
||
```bash
|
||
# Esimerkki: julkaise raportti
|
||
curl -X PATCH https://ci-reports.helm-dev.keskikuja.site/owner/repo/commit/sha8/ \
|
||
-H "Authorization: Basic $(echo -n "publish:$GIT_PAGES_PUBLISH_TOKEN" | base64)" \
|
||
-H "Content-Type: application/x-tar" \
|
||
--data-binary @raportti.tar
|
||
```
|
||
|
||
**Vaaditut asetukset:**
|
||
|
||
| Missä | Arvo |
|
||
|-------|------|
|
||
| Gitea Actions secret | `GIT_PAGES_PUBLISH_TOKEN` (sama kuin K8s `git-pages-publish-token` `token`-avain) |
|
||
| Scriptissä | `curl` käyttää BasicAuth-headeria yllä |
|
||
|
||
**K8s secretit (Traefik-yhteensopivuus):**
|
||
- `git-pages-publish-auth` = htpasswd (Traefik BasicAuth middleware)
|
||
- `git-pages-publish-token` = plaintext (luetaan Giteaan viedessä)
|
||
|
||
Tarkemmat secret-ohjeet: [docs/secrets.md](docs/secrets.md).
|