ThumeMail/.gitea/workflows/docker-build.yml
Thomas Faour e91cde3f56
Some checks failed
Build & Push Docker Images / build (push) Failing after 4s
gitea
2025-08-10 13:26:47 -04:00

71 lines
3.7 KiB
YAML

name: Build & Push Docker Images
on:
push:
branches: ["main", "master"]
tags: ["v*.*.*"]
pull_request:
branches: ["main", "master"]
env:
BACKEND_IMAGE: imap-client-backend
FRONTEND_IMAGE: imap-client-frontend
# Uses local Gitea registry: <gitea-host>/<namespace>/<image>:tag
jobs:
build:
runs-on: docker
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Prepare tags
id: meta
run: |
SHA_TAG=sha-${GITHUB_SHA::7}
echo "sha_tag=$SHA_TAG" >> $GITHUB_OUTPUT
if [[ "$GITHUB_REF" == refs/heads/main || "$GITHUB_REF" == refs/heads/master ]]; then
echo "latest_tag=latest" >> $GITHUB_OUTPUT
fi
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
VERSION_TAG=${GITHUB_REF#refs/tags/}
echo "version_tag=$VERSION_TAG" >> $GITHUB_OUTPUT
fi
- name: Derive registry host / namespace
id: reg
run: |
REGISTRY_HOST="${GITEA_SERVER_URL}"
REGISTRY_HOST="${REGISTRY_HOST#https://}"
REGISTRY_HOST="${REGISTRY_HOST#http://}"
REGISTRY_HOST="${REGISTRY_HOST%%/*}"
NAMESPACE="${GITHUB_REPOSITORY%/*}"
echo "host=$REGISTRY_HOST" >> $GITHUB_OUTPUT
echo "ns=$NAMESPACE" >> $GITHUB_OUTPUT
echo "Using registry: $REGISTRY_HOST namespace: $NAMESPACE"
- name: Login to local Gitea registry
run: |
echo "${{ secrets.CR_PASSWORD }}" | docker login "${{ steps.reg.outputs.host }}" -u "${{ secrets.CR_USERNAME }}" --password-stdin
- name: Build backend
run: |
docker build -t ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${BACKEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ./backend
if [ -n "${{ steps.meta.outputs.latest_tag }}" ]; then docker tag ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${BACKEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${BACKEND_IMAGE}:latest; fi
if [ -n "${{ steps.meta.outputs.version_tag }}" ]; then docker tag ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${BACKEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${BACKEND_IMAGE}:${{ steps.meta.outputs.version_tag }}; fi
- name: Build frontend
run: |
docker build -t ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${FRONTEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ./frontend
if [ -n "${{ steps.meta.outputs.latest_tag }}" ]; then docker tag ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${FRONTEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${FRONTEND_IMAGE}:latest; fi
if [ -n "${{ steps.meta.outputs.version_tag }}" ]; then docker tag ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${FRONTEND_IMAGE}:${{ steps.meta.outputs.sha_tag }} ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${FRONTEND_IMAGE}:${{ steps.meta.outputs.version_tag }}; fi
- name: Push images
if: github.event_name != 'pull_request'
run: |
for IMG in ${BACKEND_IMAGE} ${FRONTEND_IMAGE}; do
docker push ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${IMG}:${{ steps.meta.outputs.sha_tag }}
if [ -n "${{ steps.meta.outputs.latest_tag }}" ]; then docker push ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${IMG}:latest; fi
if [ -n "${{ steps.meta.outputs.version_tag }}" ]; then docker push ${{ steps.reg.outputs.host }}/${{ steps.reg.outputs.ns }}/${IMG}:${{ steps.meta.outputs.version_tag }}; fi
done