38 lines
1.0 KiB
YAML
38 lines
1.0 KiB
YAML
name: Build and Push Docker Images
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'Dockers/**'
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
|
|
|
- name: Build and Push Docker images
|
|
env:
|
|
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
run: |
|
|
changed_dirs=$(git diff --name-only HEAD~1 HEAD | grep '^Dockers/' | cut -d'/' -f2 | sort -u)
|
|
for dir in $changed_dirs; do
|
|
if [ -d "Dockers/$dir" ]; then
|
|
image_name=$(basename "$dir")
|
|
version=$(cat "Dockers/$dir/version")
|
|
docker build -t $DOCKER_HUB_USERNAME/$image_name:$version "Dockers/$dir"
|
|
docker push $DOCKER_HUB_USERNAME/$image_name:$version
|
|
fi
|
|
done
|