From 530f9903959f359683a3e3c46a3e22e37b3d2b2b Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Tue, 12 May 2026 21:38:37 +0200 Subject: [PATCH] Update Dockerfile and environment configuration for Gitea runner and Flutter CI integration --- .env.example | 2 +- Dockerfile | 15 ++++++++++----- README.md | 27 ++++++++++++++++++++------- docker-compose.yml | 15 ++++++++++++--- images/flutter-ci/Dockerfile | 18 ++++++++++++++++++ 5 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 images/flutter-ci/Dockerfile diff --git a/.env.example b/.env.example index df91dfe..dc89787 100644 --- a/.env.example +++ b/.env.example @@ -14,4 +14,4 @@ GITEA_RUNNER_NAME=recipe-app # Runner labels (optional, defaults to ubuntu-latest if empty) # Format: label:docker://image,label:docker://image -GITEA_RUNNER_LABELS=backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable +GITEA_RUNNER_LABELS=backend-node24:docker://node:24.15.0-bullseye,flutter-3-41:docker://recipe-flutter-ci:3.41-node24 diff --git a/Dockerfile b/Dockerfile index c7dd732..e58f605 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,16 @@ -FROM gitea/act_runner:latest +ARG ACT_RUNNER_VERSION=0.2.11 +FROM gitea/act_runner:${ACT_RUNNER_VERSION} USER root -# Docker CLI – behövs för shell-jobb som kör docker-kommandon direkt -# openssh-client – behövs för deployment-scripts via SSH -# curl – allmänt användbart i workflow-steg +# Basverktyg för robusta shell-workflows och JS-baserade actions. RUN apk add --no-cache \ + bash \ + ca-certificates \ curl \ docker-cli \ - openssh-client + git \ + nodejs \ + npm \ + openssh-client \ + && update-ca-certificates diff --git a/README.md b/README.md index 2b44539..20d0f4b 100644 --- a/README.md +++ b/README.md @@ -49,16 +49,24 @@ Sätt dessa värden: GITEA_INSTANCE_URL=https://gitea.gynther.se GITEA_RUNNER_REGISTRATION_TOKEN= GITEA_RUNNER_NAME=recipe-app -GITEA_RUNNER_LABELS=backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable +GITEA_RUNNER_LABELS=backend-node24:docker://node:24.15.0-bullseye,flutter-3-41:docker://recipe-flutter-ci:3.41-node24 ``` -### 4. Starta runnern +### 4. Bygg lokal Flutter CI-image + +Flutter-jobben blir stabilare om de körs i en image med både Flutter + Node.js + Git. + +```bash +docker build -f images/flutter-ci/Dockerfile -t recipe-flutter-ci:3.41-node24 . +``` + +### 5. Starta runnern ```bash docker compose up -d ``` -### 5. Verifiera att den är online +### 6. Verifiera att den är online ```bash docker compose logs -f @@ -93,8 +101,8 @@ docker compose down -v Workflown i `recipe-app` definieras i [recipe-app/.gitea/workflows/test.yml](../recipe-app/.gitea/workflows/test.yml). Aktuella labels: -- **`backend-node24`**: Node.js 24 i Bullseye — för backend-jobb (build, test, linting) -- **`flutter-3-41`**: Flutter 3.41 — för Flutter-jobb (analyze, test) +- **`backend-node24`**: Node.js 24.15 i Bullseye — för backend-jobb (build, test, linting) +- **`flutter-3-41`**: Lokal image `recipe-flutter-ci:3.41-node24` med Flutter + Node + Git + Bash Om en workflow kör med `runs-on: backend-node24` eller `runs-on: flutter-3-41`, kommer denna runner att köra jobbet i motsvarande Docker-image. @@ -119,8 +127,13 @@ Säkra att workflow använder en av de definierade labels. Om `runs-on` matchar **Verifiera Docker-image:** ```bash -docker pull node:24-bullseye -docker pull ghcr.io/cirruslabs/flutter:stable +docker pull node:24.15.0-bullseye +docker image inspect recipe-flutter-ci:3.41-node24 +``` + +Om flutter-image saknas: +```bash +docker build -f images/flutter-ci/Dockerfile -t recipe-flutter-ci:3.41-node24 . ``` ### Token är exponerad diff --git a/docker-compose.yml b/docker-compose.yml index 111cada..b9cf870 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,13 +7,22 @@ services: container_name: gitea-runner restart: unless-stopped environment: - GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL} - GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN} + GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?Set GITEA_INSTANCE_URL in .env} + GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:?Set GITEA_RUNNER_REGISTRATION_TOKEN in .env} GITEA_RUNNER_NAME: ${GITEA_RUNNER_NAME:-recipe-app} - GITEA_RUNNER_LABELS: ${GITEA_RUNNER_LABELS:-backend-node24:docker://node:24-bullseye,flutter-3-41:docker://ghcr.io/cirruslabs/flutter:stable} + GITEA_RUNNER_LABELS: ${GITEA_RUNNER_LABELS:-backend-node24:docker://node:24.15.0-bullseye,flutter-3-41:docker://recipe-flutter-ci:3.41-node24} volumes: - runner-data:/data - /var/run/docker.sock:/var/run/docker.sock + security_opt: + - no-new-privileges:true + tmpfs: + - /tmp + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" healthcheck: test: ["CMD-SHELL", "pgrep -x act_runner > /dev/null || exit 1"] interval: 30s diff --git a/images/flutter-ci/Dockerfile b/images/flutter-ci/Dockerfile new file mode 100644 index 0000000..862f034 --- /dev/null +++ b/images/flutter-ci/Dockerfile @@ -0,0 +1,18 @@ +ARG FLUTTER_BASE_IMAGE=ghcr.io/cirruslabs/flutter:stable +FROM ${FLUTTER_BASE_IMAGE} + +USER root + +# Flutter-jobb i Gitea Actions behöver ofta även Node.js + Git + Bash. +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bash \ + ca-certificates \ + curl \ + git \ + nodejs \ + npm \ + openssh-client \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /workspace