Workflow an den Runner anpassen: Docker-CLI nachruesten, kein buildx
Some checks failed
Image bauen und in die Registry pushen / build (push) Has been cancelled
Some checks failed
Image bauen und in die Registry pushen / build (push) Has been cancelled
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>
This commit is contained in:
@@ -22,34 +22,49 @@ jobs:
|
|||||||
submodules: recursive
|
submodules: recursive
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
# Bewusst reine Shell-Schritte statt docker/*-Actions: die muessten vom
|
# Der Runner fuehrt Jobs in node:20-bookworm aus. Dort gibt es kein
|
||||||
# Runner erst von github.com geladen werden, was auf selbst gehosteten
|
# Docker. Dieser Schritt schlaegt nicht fehl, sondern protokolliert nur,
|
||||||
# Gitea-Instanzen haeufig nicht klappt. Dieselben Befehle laufen bereits
|
# was vorhanden ist - damit im Log sichtbar wird, woran es liegt, falls
|
||||||
# erfolgreich im Jenkinsfile von lichterei-web.
|
# der Build danach scheitert.
|
||||||
- name: Buildx vorbereiten
|
- name: Umgebung protokollieren
|
||||||
run: |
|
run: |
|
||||||
docker buildx inspect gitea-builder >/dev/null 2>&1 \
|
grep PRETTY_NAME /etc/os-release || true
|
||||||
&& docker buildx use gitea-builder \
|
printf 'docker-CLI: '; command -v docker || echo 'fehlt'
|
||||||
|| docker buildx create --name gitea-builder --use
|
printf 'Docker-Socket: '; test -S /var/run/docker.sock && echo 'vorhanden' || echo 'fehlt'
|
||||||
docker buildx inspect --bootstrap
|
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
|
- name: An der Registry anmelden
|
||||||
run: |
|
run: |
|
||||||
echo "${{ secrets.REGISTRY_TOKEN }}" \
|
echo "${{ secrets.REGISTRY_TOKEN }}" \
|
||||||
| docker login ${{ env.REGISTRY }} \
|
| docker login "${{ env.REGISTRY }}" \
|
||||||
--username "${{ secrets.REGISTRY_USER }}" \
|
--username "${{ secrets.REGISTRY_USER }}" \
|
||||||
--password-stdin
|
--password-stdin
|
||||||
|
|
||||||
- name: Bauen und pushen
|
# Bewusst ohne buildx: der Runner ist amd64, ein einfacher docker build
|
||||||
|
# genuegt und spart die Plugin-Installation.
|
||||||
|
- name: Bauen
|
||||||
run: |
|
run: |
|
||||||
docker buildx build \
|
docker build \
|
||||||
--platform linux/amd64 \
|
|
||||||
--file docker/Dockerfile \
|
--file docker/Dockerfile \
|
||||||
--tag ${{ env.IMAGE }}:latest \
|
--tag "${{ env.IMAGE }}:latest" \
|
||||||
--tag ${{ env.IMAGE }}:${{ gitea.sha }} \
|
--tag "${{ env.IMAGE }}:${{ gitea.sha }}" \
|
||||||
--push \
|
|
||||||
.
|
.
|
||||||
|
|
||||||
|
- name: Pushen
|
||||||
|
run: |
|
||||||
|
docker push "${{ env.IMAGE }}:latest"
|
||||||
|
docker push "${{ env.IMAGE }}:${{ gitea.sha }}"
|
||||||
|
|
||||||
- name: Abmelden
|
- name: Abmelden
|
||||||
if: always()
|
if: always()
|
||||||
run: docker logout ${{ env.REGISTRY }} || true
|
run: docker logout "${{ env.REGISTRY }}" || true
|
||||||
|
|||||||
Reference in New Issue
Block a user