71 lines
2.0 KiB
YAML
71 lines
2.0 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 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 |