Skip to content

update README.md

update README.md #24

name: Build and Push Docker Images
on:
push:
branches:
- main
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_GITHUB_TOKEN }}
- name: Determine modified folders
id: changes
run: |
if git rev-parse HEAD^ >/dev/null 2>&1; then
CHANGED_FILES=$(git diff --name-only HEAD^ HEAD | grep -o '^[^/]*' | sort -u)
else
CHANGED_FILES=$(git diff --name-only HEAD | grep -o '^[^/]*' | sort -u)
fi
echo "Changed files: $CHANGED_FILES"
FOLDERS_WITH_DOCKERFILE=""
for folder in $CHANGED_FILES; do
if [[ -f "$folder/Dockerfile" ]]; then
FOLDERS_WITH_DOCKERFILE="$FOLDERS_WITH_DOCKERFILE $folder"
fi
done
echo "Folders with Dockerfile: $FOLDERS_WITH_DOCKERFILE"
# Trim any leading/trailing whitespace
FOLDERS_WITH_DOCKERFILE=$(echo "$FOLDERS_WITH_DOCKERFILE" | xargs)
# Add it to the GitHub Actions environment if it's not empty
if [ -n "$FOLDERS_WITH_DOCKERFILE" ]; then
echo "CHANGED_FOLDERS=$FOLDERS_WITH_DOCKERFILE" >> $GITHUB_ENV
else
echo "CHANGED_FOLDERS=" >> $GITHUB_ENV
fi
echo "Final CHANGED_FOLDERS: $FOLDERS_WITH_DOCKERFILE"
- name: Build and push Docker images
if: env.CHANGED_FOLDERS != ''
run: |
for folder in $CHANGED_FOLDERS; do
if [ -f "$folder/Dockerfile" ]; then
docker build -t ghcr.io/${{ github.actor }}/$folder:latest $folder
docker push ghcr.io/${{ github.actor }}/$folder:latest
fi
done