Files
dev-images/.gitea/workflows/image-publish.yml

77 lines
1.8 KiB
YAML

name: Build and Push Docker Images
on:
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