Files
base-images/.gitea/workflows/build-and-push.yml
Luke Else 2bab7322ec
Some checks failed
Build and Push Dev Containers / build (push) Failing after 2m12s
feat: Added lab containers and improved pipeline to ensure base containers are built first
2025-10-21 22:26:09 +01:00

59 lines
1.9 KiB
YAML

name: Build and Push Dev Containers
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
registry: ${{ secrets.CONTAINER_REGISTRY }}
username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }}
password: ${{ secrets.CONTAINER_REGISTRY_PASSKEY }}
- name: Build and push containers
run: |
# ...existing code...
set -euo pipefail
registry="${{ secrets.CONTAINER_REGISTRY }}"
username="${{ secrets.CONTAINER_REGISTRY_USERNAME }}"
# Build 'base' and 'lab' groups first (including subdirectories)
for group in base lab; do
if [ -d "$group" ]; then
echo "Processing group: $group"
find "$group" -type f -iname 'Dockerfile' -exec dirname {} \; | sed 's|^\./||' | sort -u | while read -r dir; do
tag="$registry/$username/$dir:latest"
echo "Building $dir -> $tag"
docker build -t "$tag" "$dir"
docker push "$tag"
done
else
echo "Skipping missing group: $group"
fi
done
# Then build everything else (exclude base and lab)
echo "Processing remaining Dockerfiles"
find . -type f -iname 'Dockerfile' -exec dirname {} \; | sed 's|^\./||' | sort -u | grep -Ev '^(base|lab)(/|$)' | while read -r dir; do
tag="$registry/$username/$dir:latest"
echo "Building $dir -> $tag"
docker build -t "$tag" "$dir"
docker push "$tag"
done
- name: Docker Prune
run: docker system prune -f --all