diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml index 1c2f013..daf71ae 100644 --- a/.gitea/workflows/build-and-push.yml +++ b/.gitea/workflows/build-and-push.yml @@ -24,8 +24,32 @@ jobs: - name: Build and push containers run: | - for dir in $(find . -type f -iname 'Dockerfile' -exec dirname {} \; | sed 's|^\./||'); do - tag="${{ secrets.CONTAINER_REGISTRY }}/${{ secrets.CONTAINER_REGISTRY_USERNAME }}/$dir:latest" + # ...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 diff --git a/go-dev/Dockerfile b/go-dev/Dockerfile new file mode 100644 index 0000000..13b62da --- /dev/null +++ b/go-dev/Dockerfile @@ -0,0 +1,4 @@ +FROM git.luke-else.co.uk/luke-else/lab:latest + +RUN apk add --no-cache \ + go \ No newline at end of file diff --git a/lab/Dockerfile b/lab/Dockerfile index 760020c..59de91e 100644 --- a/lab/Dockerfile +++ b/lab/Dockerfile @@ -12,12 +12,7 @@ RUN apk add --no-cache \ busybox-extras \ net-tools \ iputils \ - python3 \ procps \ - cargo \ - nodejs \ - pnpm \ - rust-analyzer \ make \ build-base diff --git a/nodejs-dev/Dockerfile b/nodejs-dev/Dockerfile new file mode 100644 index 0000000..5e59105 --- /dev/null +++ b/nodejs-dev/Dockerfile @@ -0,0 +1,5 @@ +FROM git.luke-else.co.uk/luke-else/lab:latest + +RUN apk add --no-cache \ + nodejs \ + pnpm \ No newline at end of file diff --git a/python-dev/Dockerfile b/python-dev/Dockerfile new file mode 100644 index 0000000..5f95095 --- /dev/null +++ b/python-dev/Dockerfile @@ -0,0 +1,7 @@ +FROM git.luke-else.co.uk/luke-else/lab:latest + +RUN apk add --no-cache \ + python3 \ + py3-uv + +CMD [ "uv run" ] \ No newline at end of file diff --git a/rust-dev/Dockerfile b/rust-dev/Dockerfile new file mode 100644 index 0000000..aac035a --- /dev/null +++ b/rust-dev/Dockerfile @@ -0,0 +1,5 @@ +FROM git.luke-else.co.uk/luke-else/lab:latest + +RUN apk add --no-cache cargo rust-analyzer + +CMD [ "cargo run --release" ] \ No newline at end of file