ci-images/.gitea/workflows/docker-build.yml
Philipp Hofer e9572c86e2
Some checks failed
Build and Push Docker Images / detect-changes (push) Failing after 10s
Build and Push Docker Images / build (push) Has been skipped
try ci
2025-04-06 13:20:16 +02:00

60 lines
1.8 KiB
YAML

name: Build and Push Docker Images
on:
push:
branches: [ main ]
paths:
- '*/Dockerfile'
- '.gitea/workflows/docker-build.yml'
jobs:
detect-changes:
runs-on: ubuntu-latest
container: git.hofer.link/philipp/ci-images:rust-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Detect changed directories
id: set-matrix
run: |
CHANGED_DIRS=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep 'Dockerfile' | xargs -L1 dirname | sort | uniq | jq -R -s -c 'split("\n") | map(select(length > 0))')
echo "matrix=${CHANGED_DIRS}" >> $GITHUB_OUTPUT
build:
needs: detect-changes
if: ${{ needs.detect-changes.outputs.matrix != '[]' && needs.detect-changes.outputs.matrix != '' }}
runs-on: ubuntu-latest
container: git.hofer.link/philipp/ci-images:rust-latest
strategy:
matrix:
image_dir: ${{ fromJson(needs.detect-changes.outputs.matrix) }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Login to Gitea Container Registry
uses: docker/login-action@v2
with:
registry: git.hofer.link
username: ${{ secrets.GITEA_USERNAME }}
password: ${{ secrets.GITEA_PASSWORD }}
- name: Extract image name from directory
id: image-name
run: |
IMAGE_NAME=$(basename ${{ matrix.image_dir }})
echo "name=${IMAGE_NAME}" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v4
with:
context: ${{ matrix.image_dir }}
push: true
tags: git.hofer.link/philipp/ci-images:${{ steps.image-name.outputs.name }}