Files
robbis.space/.gitea/workflows/build.yml
Robert Rapp 2bdf0b2e11
Some checks failed
Image bauen und in die Registry pushen / build (push) Has been cancelled
Workflow an den Runner anpassen: Docker-CLI nachruesten, kein buildx
Der Runner ist mit ubuntu-latest:docker://node:20-bookworm registriert,
Jobs laufen also in einem node-Image. Darin gibt es weder docker-CLI
noch Daemon - jeder docker-Aufruf scheiterte an "command not found",
unabhaengig davon ob als Action oder als Shell-Schritt.

Der Job laedt jetzt die statische docker-CLI (ohne Daemon) nach und
baut ueber den vom Runner durchgereichten Socket. buildx entfaellt: der
Runner ist amd64, ein einfacher docker build genuegt und spart die
Plugin-Installation.

Ein vorgeschalteter Schritt protokolliert CLI, Socket und DOCKER_HOST,
ohne selbst fehlzuschlagen - damit im Log steht, woran es liegt, falls
der Socket nicht durchgereicht wird.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 00:13:07 +02:00

71 lines
2.4 KiB
YAML

name: Image bauen und in die Registry pushen
on:
push:
branches:
- main
workflow_dispatch:
env:
REGISTRY: gitea.mindboost.team
IMAGE: gitea.mindboost.team/rorapp/robbis.space
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Repository auschecken
uses: actions/checkout@v4
with:
# themes/gokarna ist ein Submodule und wird fuer den Hugo-Build
# zwingend gebraucht. Ohne dies bricht das Dockerfile ab.
submodules: recursive
fetch-depth: 0
# Der Runner fuehrt Jobs in node:20-bookworm aus. Dort gibt es kein
# Docker. Dieser Schritt schlaegt nicht fehl, sondern protokolliert nur,
# was vorhanden ist - damit im Log sichtbar wird, woran es liegt, falls
# der Build danach scheitert.
- name: Umgebung protokollieren
run: |
grep PRETTY_NAME /etc/os-release || true
printf 'docker-CLI: '; command -v docker || echo 'fehlt'
printf 'Docker-Socket: '; test -S /var/run/docker.sock && echo 'vorhanden' || echo 'fehlt'
printf 'DOCKER_HOST: %s\n' "${DOCKER_HOST:-nicht gesetzt}"
# Nur die CLI (rund 30 MB), kein Daemon. Gebaut wird ueber den vom
# Runner durchgereichten Socket.
- name: Docker-CLI nachruesten
run: |
if ! command -v docker >/dev/null 2>&1; then
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz \
| tar xz -C /usr/local/bin --strip-components=1 docker/docker
fi
docker --version
- name: An der Registry anmelden
run: |
echo "${{ secrets.REGISTRY_TOKEN }}" \
| docker login "${{ env.REGISTRY }}" \
--username "${{ secrets.REGISTRY_USER }}" \
--password-stdin
# Bewusst ohne buildx: der Runner ist amd64, ein einfacher docker build
# genuegt und spart die Plugin-Installation.
- name: Bauen
run: |
docker build \
--file docker/Dockerfile \
--tag "${{ env.IMAGE }}:latest" \
--tag "${{ env.IMAGE }}:${{ gitea.sha }}" \
.
- name: Pushen
run: |
docker push "${{ env.IMAGE }}:latest"
docker push "${{ env.IMAGE }}:${{ gitea.sha }}"
- name: Abmelden
if: always()
run: docker logout "${{ env.REGISTRY }}" || true