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