diff --git a/.gitea/workflows/image-publish.yml b/.gitea/workflows/image-publish.yml index 82035fc..0c9e533 100644 --- a/.gitea/workflows/image-publish.yml +++ b/.gitea/workflows/image-publish.yml @@ -1,76 +1,71 @@ name: Build and Push Docker Images on: -push: -branches: -- master + push: + branches: + - master 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 repository name - run: | - REPO_NAME=$(basename "${{ github.repository }}" | tr '[:upper:]' '[:lower:]') - OWNER_NAME=$(dirname "${{ github.repository }}" | tr '[:upper:]' '[:lower:]') - - echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV - echo "OWNER_NAME=$OWNER_NAME" >> $GITHUB_ENV - - - name: Build and Push Images - run: | - set -e - - found=0 - - for dockerfile in *.dockerfile; do - [ -f "$dockerfile" ] || continue - - found=1 - - IMAGE_VARIANT="${dockerfile%.dockerfile}" - IMAGE_NAME="git.harryesses.com/${OWNER_NAME}/${REPO_NAME}-${IMAGE_VARIANT}" - - echo "======================================" - echo "Building $IMAGE_NAME" - echo "Dockerfile: $dockerfile" - echo "======================================" - - docker build \ - -f "$dockerfile" \ - -t "${IMAGE_NAME}:latest" \ - -t "${IMAGE_NAME}:${SHORT_SHA}" \ - -t "${IMAGE_NAME}:${BUILD_DATE}" \ - . - - docker push "${IMAGE_NAME}:latest" - docker push "${IMAGE_NAME}:${SHORT_SHA}" - docker push "${IMAGE_NAME}:${BUILD_DATE}" - done - - if [ "$found" -eq 0 ]; then - echo "No *.dockerfile files found" - exit 1 - fi - + 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" \ + . + + docker push "$full_image:latest" + docker push "$full_image:$SHORT_SHA" + docker push "$full_image:$BUILD_DATE" + done \ No newline at end of file