Files
Dash/.github/workflows/docker-build.yml
T
Tomas Dvorak b7d86ad5f8 ci(docker): add support for Gitea registry and update permissions
Update the docker-build workflow to support both GitHub Container Registry
and Gitea by dynamically determining the registry URL based on the
server URL. Added explicit permissions for package writing and implemented
conditional login steps to handle GitHub and Gitea authentication
differently.
2026-05-07 09:47:56 +02:00

108 lines
3.3 KiB
YAML

name: Docker Build
on:
push:
branches: [main]
tags: ["v*"]
pull_request:
branches: [main]
env:
REGISTRY: ${{ github.server_url == 'https://github.com' && 'ghcr.io' || format('{0}/v2', github.server_url) }}
IMAGE_PREFIX: ${{ github.repository }}
permissions:
contents: read
packages: write
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to registry (push only) - GitHub
if: github.event_name == 'push' && github.server_url == 'https://github.com'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to registry (push only) - Gitea
if: github.event_name == 'push' && github.server_url != 'https://github.com'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.GITEA_USERNAME || github.actor }}
password: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/backend
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=sha
- name: Build and push backend image
uses: docker/build-push-action@v6
with:
context: .
file: backend/Dockerfile
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to registry (push only) - GitHub
if: github.event_name == 'push' && github.server_url == 'https://github.com'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to registry (push only) - Gitea
if: github.event_name == 'push' && github.server_url != 'https://github.com'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.GITEA_USERNAME || github.actor }}
password: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/frontend
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=sha
- name: Build and push frontend image
uses: docker/build-push-action@v6
with:
context: ./frontend
file: frontend/Dockerfile
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max