rosenvold-core/.forgejo/workflows/build.yml
Lucas Seidelin Rosenvold Christensen fdb62dfa87
Some checks failed
Build and push image / build-and-push (push) Failing after 1m24s
Run dockerd inside the job container, drop the dind service
The dind sidecar's hostname failed to resolve via the embedded DNS
resolver (server misbehaving), so cross-container service networking
isn't working reliably here. Run dockerd directly inside the (now
privileged) job container instead, avoiding service networking
entirely.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 15:44:31 +02:00

51 lines
1.9 KiB
YAML

name: Build and push image
on:
push:
branches:
- master
jobs:
build-and-push:
runs-on: docker
# Fully self-contained: run dockerd inside the job container itself
# rather than relying on a separate dind service container (its
# hostname failed to resolve via the embedded DNS resolver). Needs
# the container itself to be privileged so dockerd can run at all.
container:
image: node:20-bookworm
options: --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install and start Docker
run: |
apt-get update
apt-get install -y --no-install-recommends ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
> /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y --no-install-recommends docker-ce docker-ce-cli containerd.io
dockerd &
for i in $(seq 1 30); do
docker info >/dev/null 2>&1 && break
sleep 1
done
docker info >/dev/null 2>&1 || { echo "dockerd failed to start"; exit 1; }
- name: Log in to Forgejo registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login git.rosenvold.tech -u "${{ github.actor }}" --password-stdin
- name: Build image
run: |
docker build \
-t git.rosenvold.tech/lucas/rosenvold-core:latest \
-t git.rosenvold.tech/lucas/rosenvold-core:${{ github.sha }} \
-f Containerfile .
- name: Push image
run: docker push git.rosenvold.tech/lucas/rosenvold-core --all-tags