name: Build and Push Docker Images on: push: branches: - main jobs: docker: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v4 - name: Generate tags run: | echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV" echo "BUILD_DATE=$(date -u +'%Y%m%d-%H%M%S')" >> "$GITHUB_ENV" - name: Login to Gitea Container Registry uses: docker/login-action@v3 with: registry: git.harryesses.com username: ${{ gitea.repository_owner }} password: ${{ secrets.PACKAGE_TOKEN }} - name: Set owner name run: | OWNER_NAME=$(echo "${{ gitea.repository_owner }}" | tr '[:upper:]' '[:lower:]') echo "OWNER_NAME=$OWNER_NAME" >> "$GITHUB_ENV" - name: Build and Push Images run: | set -euo pipefail shopt -s nullglob dockerfiles=(*.dockerfile) if [ ${#dockerfiles[@]} -eq 0 ]; then echo "No .dockerfile files found" exit 1 fi for dockerfile in "${dockerfiles[@]}"; do image_name="${dockerfile%.dockerfile}" image_name=$(echo "$image_name" | tr '[:upper:]' '[:lower:]') full_image="git.harryesses.com/${OWNER_NAME}/${image_name}" echo "========================================" echo "Building: $full_image" echo "Dockerfile: $dockerfile" echo "========================================" docker build \ -f "$dockerfile" \ -t "$full_image:latest" \ -t "$full_image:$SHORT_SHA" \ -t "$full_image:$BUILD_DATE" \ . echo "========================================" echo "Pushing: $full_image" echo "Dockerfile: $dockerfile" echo "========================================" echo "Pushing: latest" docker push "$full_image:latest" echo "Pushed: latest" echo "Pushing: $SHORT_SHA" docker push "$full_image:$SHORT_SHA" echo "Pushed: $SHORT_SHA" echo "Pushing: $BUILD_DATE" docker push "$full_image:$BUILD_DATE" echo "Pushed: $BUILD_DATE" done