# Helm Registry Setup (OCI) Pipeline paketoi Helm chartin OCI-artefaktiksi ja pushee sen OCI-rekisteriin. --- ## 1. Konfiguroi `gitea-env.conf` ``` # HELM_REGISTRY on muotoa: registry.example.com/org # # host+org: registry.example.com/org # # Pipeline rakentaa OCI-refin: oci://${HELM_REGISTRY}/:${VERSION} # (chart-name tulee Chart.yaml:n name-kentästä) HELM_REGISTRY=gitea.app.keskikuja.site/niko # PAKOLLINEN — tyhjä ei käy HELM_UI_URL= # valinnainen — tarkista Giteasta kontin oma UI-osoite, workflow liittää perään /chart-name/VERSION GIT_TAG_PREFIX=git-pages/ # valinnainen — monorepo-tägäys VERSION_FILE=git-pages/Chart.yaml # valinnainen — jos Chart.yaml ei rootissa ``` | Kenttä | Pakollinen | Kuvaus | |---|---|---| | `HELM_REGISTRY` | **kyllä** | Registry host + owner (esim. `gitea.app.site/niko`). **Tyhjä pysäyttää workflow'n.** | | `HELM_UI_URL` | ei | Base-URL OCI-paketin UI-sivulle (ilman chart-nimeä ja versiota). Osoite riippuu onko paketti linkitetty repoon vai ei — tarkista Giteasta. Workflow liittää perään `/chart-name/VERSION`. Jos tyhjä, commit-statusia ei erikseen aseteta. | | `GIT_TAG_PREFIX` | ei | Etuliite git-tägille. Pakollinen monorepossa, jotta tagit eivät sekoitu muihin komponentteihin. | | `VERSION_FILE` | ei | Polku version lähteeseen (Chart.yaml, package.json, VERSION). Oletus: juuren `Chart.yaml`. | **OCI-ref = `oci://${HELM_REGISTRY}/:${VERSION}`** Esim. `oci://gitea.app.keskikuja.site/niko/git-pages:1.2.3` Chartin nimi (``) määräytyy `Chart.yaml`-tiedoston `name`-kentästä. --- ## 2. Luo PAT (Personal Access Token) Giteassa **Gitea → oma profiili (oikea yläkulma) → Settings → Applications → Manage Access Tokens → Generate New Token** Valitse scope: | Scope | Pääsy | |---|---| | `package` | **Read and Write** | > Tämä token toimii salasanana `helm registry login` -komennossa. Muut scopet (kuten `repository`) eivät riitä — konttirekisteri vaatii nimenomaan `package`-scopen. Tokenin arvo näytetään **vain kerran** luomisen yhteydessä. Kopioi se talteen. --- ## 3. Tallenna PAT repositoryn Secretsiin Nämä ovat kaksi eri paikkaa: - **Access Tokenit** (User Settings) = missä luot tokenin - **Repository Secrets** (Repository Settings) = minne talletat sen workflow'n käyttöön **Repository → Settings → Actions → Secrets → Add new secret** | Secret | Arvo | |---|---| | `HELM_PASSWORD` | Edellisessä vaiheessa luotu PAT | `HELM_USER`-secretiä **ei tarvita**. Workflow käyttää automaattisesti `${{ github.actor }}` (workflowin käynnistäjä). Jos registry vaatii eri käyttäjätunnuksen kuin `github.actor` (esim. Harbor, Artifactory), lisää myös: | Secret | Arvo | |---|---| | `HELM_USER` | Registryn käyttäjätunnus | --- ## 4. Tarkistuslista ennen ajoa - [ ] `HELM_REGISTRY` asetettu `gitea-env.conf`issa - [ ] (tarvittaessa) `HELM_UI_URL` asetettu — ilman tätä commit-statusia ei erikseen aseteta - [ ] PAT luotu Giteassa scopella `package` Read and Write - [ ] `HELM_PASSWORD`-secret tallennettu repositoryn Secretsiin (se PAT) - [ ] (tarvittaessa) `HELM_USER`-secret — oletus `github.actor` --- ## 5. Esimerkkejä eri polkurakenteista ### 5a. Hosti + org — Gitea user-taso ``` HELM_REGISTRY=gitea.app.keskikuja.site/niko ``` - OCI-ref: `oci://gitea.app.keskikuja.site/niko/git-pages:1.2.3` - Paketti käyttäjän `niko` alla. Linkitys repoon tehdään Gitean UI:sta: paketin sivulta (Package → Settings) → linkitä repositoryyn. - `HELM_PASSWORD` = Gitea PAT scopella `package` ### 5b. Hosti + org — Harbor ``` HELM_REGISTRY=harbor.example.com/projekti ``` - `HELM_USER` = Harbor-käyttäjä - `HELM_PASSWORD` = Harbor-token ### 5c. Artifactory ``` HELM_REGISTRY=artifactory.example.com/helm-local ``` - `HELM_USER` = service account - `HELM_PASSWORD` = API-token