diff --git a/.gitea/workflows/ci-container-build-push.yml b/.gitea/workflows/ci-container-build-push.yml index 1091e6b..eca6612 100644 --- a/.gitea/workflows/ci-container-build-push.yml +++ b/.gitea/workflows/ci-container-build-push.yml @@ -23,7 +23,7 @@ on: jobs: build-push: - runs-on: ubuntu-latest + runs-on: docker steps: - uses: actions/checkout@v4 diff --git a/.gitea/workflows/docker-build-push.yml b/.gitea/workflows/docker-build-push.yml index 3ffff45..af9ddbd 100644 --- a/.gitea/workflows/docker-build-push.yml +++ b/.gitea/workflows/docker-build-push.yml @@ -32,7 +32,7 @@ concurrency: jobs: build-push: - runs-on: ubuntu-latest + runs-on: docker steps: - uses: actions/checkout@v4 - uses: actions/checkout@v4 @@ -91,7 +91,7 @@ jobs: fi tag-commit: - runs-on: ubuntu-latest + runs-on: docker needs: [build-push] steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 6ca81f5..a9f3974 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ kubectl create secret generic act-runner-token \ ### 4. Helm install / upgrade -Menee samalla komennolla. +Menee samalla komennolla. > Muista asettaa variables ennen ajoa. @@ -151,58 +151,89 @@ ja sitä kautta Gitea ei tarvitse päivityksessä mitään temppuja. Päivityksen jälkeen muista tappaa pod (käynnistyy automaattisesti uudelleen), että lataa varmasti kaikki uudesta. Sillä ConfigMap tms eivät lataudu mikäli pod jatkaa ajamista. +Klusterissa on kaksi StatefulSetiä, joilla on eri labelit: +- **`act-runner`** — yleisrunneri ilman DinD:tä (label `ubuntu-latest`) +- **`act-runner-docker`** — Docker-buildien runneri DinD:llä (label `docker`) + +Vain `docker-build-push.yml` ja `ci-container-build-push.yml` käyttävät `docker`-labelia. +Kaikki muut workflowt (testit, lintit, helm-publish, gitops-dispatch) ajetaan `ubuntu-latest`-runnerilla, +joka ei käynnistä turhaa Docker-daemonia. + ```bash helm repo add gitea https://dl.gitea.com/charts helm repo update +# 1. Yleisrunneri (ei DinD) helm upgrade --install act-runner gitea/actions \ --set enabled=true \ --set giteaRootURL="$GITEA_URL" \ --set existingSecret=act-runner-token \ --set existingSecretKey=token \ - --set statefulset.replicas=3 \ + --set statefulset.replicas=2 \ --set statefulset.runner.tag=1.0.8 \ - --set statefulset.dind.tag=29.5.2-dind \ --set-string 'statefulset.runner.config=log: level: info cache: - enabled: false + enabled: true +container: + require_docker: false' \ + --namespace "$GITEA_ACTIONS_NAMESPACE" \ + --create-namespace + +# 2. Docker-runner (DinD) +helm upgrade --install act-runner-docker gitea/actions \ + --set enabled=true \ + --set giteaRootURL="$GITEA_URL" \ + --set existingSecret=act-runner-token \ + --set existingSecretKey=token \ + --set statefulset.replicas=1 \ + --set statefulset.runner.tag=1.0.8 \ + --set statefulset.dind.tag=29.5.2-dind \ + --set-string 'statefulset.runner.labels=docker' \ + --set-string 'statefulset.runner.config=log: + level: info +cache: + enabled: true container: require_docker: true docker_timeout: 300s' \ - --namespace "$GITEA_ACTIONS_NAMESPACE" \ - --create-namespace + --namespace "$GITEA_ACTIONS_NAMESPACE" ``` -path escapes from parent -bugi korjattiin Docker 29.5.2:ssa. Tämän teko aikana default on 29.5.1 — juuri tämän alle jäävä versio. +`path escapes from parent` -bugi korjattiin Docker 29.5.2:ssa. Tämän teko aikana default on 29.5.1 — juuri tämän alle jäävä versio. Oletus-lokitaso on `debug` — suositeltu `info`. Näkee jobien aloitukset ja valmistumiset ilman konttikerrosten purkua (Downloading/Extracting-spämmiä). `debug` on tarpeen vain vianselvityksessä. +`cache.enabled: true` nappaa image-cachen käyttöön — ilman sitä jokainen ajo lataa konttikuvat uudestaan. + #### Docker (DinD) Helm chart deployaa DinD:n init-sidecarina (`docker:dind` samassa podissa). `require_docker: true` kytkee jobit siihen — erillistä DinD-asennusta ei tarvita. +Vain Docker-runnerissa on tämä päällä. **DinD-tag pinottu:** `29.5.2-dind` (ei chart-oletusta). Docker 29.5.1 aiheuttaa act-runnerissa `path escapes from parent` -virheen job-kontin käynnistyksessä. Maven/npm-ajot käyttävät vain workflow'n `container:`-imagea; DinD tarvitaan vasta Docker-buildissä. -### 3. Varmista +### 5. Varmista ```bash kubectl get pods -n gitea-actions # → act-runner-runner-0 Running +# → act-runner-docker-runner-0 Running -kubectl exec -n gitea-actions act-runner-runner-0 -c dind -- docker version +kubectl exec -n gitea-actions act-runner-docker-runner-0 -c dind -- docker version # → Server Version: 29.5.2 (tai uudempi) ``` -Gitean puolella runner ilmestyy Active-tilaan pienellä viiveellä: +Gitean puolella runnerit ilmestyvät Active-tilaan pienellä viiveellä: ``` Site Admin → Actions → Runners (tai Org → Settings → Actions → Runners) # → act-runner-runner-0 Active ubuntu-latest +# → act-runner-docker-runner-0 Active docker ``` Tämän jälkeen `.gitea/workflows/ci.yml` triggeröityy automaattisesti pushista.