From cc7f4f0976072ea135b88be31bc2eb8fcb32deb6 Mon Sep 17 00:00:00 2001 From: niko Date: Fri, 19 Jun 2026 10:13:24 +0300 Subject: [PATCH] ohjeita helm build-push (#28) Co-authored-by: moilanik Reviewed-on: https://gitea.app.keskikuja.site/niko/gitea-ci-library/pulls/28 --- docs/workflows.md | 66 +++++++++++++++++++++++++++- skills/consumer-pipelines/SKILL.md | 69 ++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 2 deletions(-) diff --git a/docs/workflows.md b/docs/workflows.md index d41d861..1ab629e 100644 --- a/docs/workflows.md +++ b/docs/workflows.md @@ -63,15 +63,77 @@ checkout → laske versio package.json + git-tageista → output **Trigger:** `workflow_call` -**Inputs:** `env_json`, `version` +**Inputs:** + +| Parametri | Pakollinen | Kuvaus | +|-----------|------------|--------| +| `env_json` | Kyllä | Konffi `gitea-env.conf`:stä | +| `version` | Kyllä | Version string (check-version output) | + +**`env_json`-avaimet:** + +| Avain | Pakollinen | Kuvaus | +|-------|------------|--------| +| `DOCKER_REGISTRY` | Kyllä | Registry (esim. `gitea.app.keskikuja.site/niko`) | +| `DOCKER_IMAGE_NAME` | Kyllä | Kuvan nimi ilman registry-polkua | +| `DOCKER_UI_URL` | Ei | Registry UI -linkki raportointia varten | +| `DOCKERFILE` | Ei | Dockerfile-polku, oletus `Dockerfile` | +| `GITEA_API_URL` | Kyllä | Gitean API-URL | +| `GIT_TAG_PREFIX` | Ei | Tag-prefix (esim. `docker/`) | **Secrets:** `GITEA_TOKEN`, `DOCKER_USERNAME`, `DOCKER_PASSWORD` **Steppi-kaavio:** ``` -build-push (build + push samassa jobissa, ei levyn kautta) → tag-commit +build-push (build + push, labelit: commit+date) → tag-commit (git-tagin luonti) ``` +**Huomio:** Ei käytä `container:`-direktiiviä — ajaa suoraan runnerilla, +joten `actions/checkout` toimii ilman node-asennuksia. + +--- + +### `helm-build-push.yml` — Helm chart build & push + +**Trigger:** `workflow_call` + +**Inputs:** + +| Parametri | Pakollinen | Kuvaus | +|-----------|------------|--------| +| `env_json` | Kyllä | Konffi `gitea-env.conf`:stä | +| `version` | Kyllä | Version string (check-version output) | +| `chart_path` | Ei | Polku Chart.yaml-hakemistoon, oletus `.` | + +**`env_json`-avaimet:** + +| Avain | Pakollinen | Kuvaus | +|-------|------------|--------| +| `HELM_REGISTRY` | Kyllä | OCI-registry (esim. `gitea.app.keskikuja.site/niko`) | +| `HELM_UI_URL` | Ei | Registry UI -linkki raportointia varten | +| `GITEA_API_URL` | Kyllä | Gitean API-URL | +| `GIT_TAG_PREFIX` | Ei | Tag-prefix (esim. `helm/`) | + +**Secrets:** `GITEA_TOKEN`, `HELM_USER`, `HELM_PASSWORD` + +**Steppi-kaavio:** +``` +build-push (helm package → helm push OCI) → tag-commit (git-tagin luonti) +``` + +**Steppien kuvaus `build-push`-jobissa:** +1. **Node.js-asennus** — `apk add --no-cache nodejs` (vaaditaan `actions/checkout`-actionia varten) +2. **Checkout** — sovellusrepo ja gitea-ci-library `.ci/`-polkuun +3. **Package** — `helm package` versiolla `$VERSION` +4. **Push OCI** — `helm push` registryyn autentikoinnilla +5. **Report status** — commit-status + UI-linkki + +**Kompromissi:** Kontti `alpine/helm` ei sisällä node.js:ää, mutta +`actions/checkout@v4` on JavaScript-action ja vaatii sen. Siksi nodejs +asennetaan lennossa ennen checkouttia. Tämä vaatii internet-yhteyden +eikä toimi air gap -ympäristössä. Korvaa tarvittaessa custom-kontilla +(jossa helm + nodejs, ks. `skills/ci-container-build/SKILL.md`). + --- ## Consumer-esimerkki (`example-*`) diff --git a/skills/consumer-pipelines/SKILL.md b/skills/consumer-pipelines/SKILL.md index 9a5fd55..31a042a 100644 --- a/skills/consumer-pipelines/SKILL.md +++ b/skills/consumer-pipelines/SKILL.md @@ -189,3 +189,72 @@ Ei pipeä (`|`) komennon perässä — se syö exit-koodin. Käytä redirectiä Providerin scriptit haetaan `actions/checkout`-stepillä `.ci/`-polkuun. Consumer ei kopioi eikä muokkaa providerin tiedostoja. + +## 10. Build & Push -providerit + +### `docker-build-push.yml` — Docker image build & push + +Buildaa ja pushee Docker-imagen OCI-registryyn. Ajaa suoraan runnerilla +(ei `container:`-direktiiviä), joten `actions/checkout` toimii natiivisti. + +**`env_json`-avaimet (pakolliset):** + +```yaml +DOCKER_REGISTRY: gitea.app.keskikuja.site/niko +DOCKER_IMAGE_NAME: my-app +``` + +**Käyttö reitittimessä:** + +```yaml +docker-build-push: + uses: OWNER/gitea-ci-library/.gitea/workflows/docker-build-push.yml@v1 + needs: [check-version] + if: needs.check-version.outputs.artifact_exists == 'false' + secrets: inherit + with: + env_json: ${{ needs.load-config.outputs.env_json }} + version: ${{ needs.check-version.outputs.version }} +``` + +Tarkka input/secret-lista: `docs/workflows.md`. + +### `helm-build-push.yml` — Helm chart build & push + +Pakkaa ja pushee Helm-chartin OCI-registryyn. Käyttää `alpine/helm`-konttia. + +**`env_json`-avaimet (pakolliset):** + +```yaml +HELM_REGISTRY: gitea.app.keskikuja.site/niko +``` + +**Käyttö reitittimessä:** + +```yaml +helm-build-push: + uses: OWNER/gitea-ci-library/.gitea/workflows/helm-build-push.yml@v1 + needs: [check-version] + if: needs.check-version.outputs.artifact_exists == 'false' + secrets: inherit + with: + env_json: ${{ needs.load-config.outputs.env_json }} + version: ${{ needs.check-version.outputs.version }} + # chart_path: '.' # oletus, vaihda jos Chart.yaml on alihakemistossa +``` + +**Node.js-kompromissi:** `actions/checkout@v4` on JavaScript-action. +Kontissa `alpine/helm` ei ole node.js:ää, joten se asennetaan lennossa +`apk add --no-cache nodejs` ennen checkouttia. + +- Vaatii internet-yhteyden +- Ei toimi air gap -ympäristössä +- Korvaa tarvittaessa custom-kontilla (helm + nodejs): + rakenna `ci-container-build`-skillillä ja päivitä workflow'n + `container: image:` osoittamaan omaan konttiin + +**Yksittäisten Helm-UI-linkkien raportointi:** `HELM_UI_URL` on +tarkoitettu yleiselle registry UI:lle — provider muodostaa linkin +`${HELM_UI_URL}/${CHART_NAME}/${VERSION}` automaattisesti. + +Tarkka input/secret-lista: `docs/workflows.md`.