Files
ReadMeABook/.github/workflows/build-unified-image.yml
T
kikootwo 384601014a Add filesystem scan trigger and version badge features
Implements optional filesystem scan triggering for Plex and Audiobookshelf after file organization, with new settings in the admin UI, setup wizard, and API. Updates documentation to reflect scan trigger options and improved file organization/cleanup logic. Refactors dropdown menus to use smart positioning and portals for better UX. Adds a version API route and a VersionBadge component to display build info in the header. Updates Docker build to inject version metadata.
2026-01-28 11:41:58 -05:00

97 lines
3.5 KiB
YAML

name: Build and Publish Unified Docker Image
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha,prefix=sha-
type=raw,value=latest,enable={{is_default_branch}}
labels: |
org.opencontainers.image.title=ReadMeABook Unified
org.opencontainers.image.description=All-in-one audiobook request and automation system (PostgreSQL + Redis + App)
org.opencontainers.image.vendor=ReadMeABook
- name: Capture version information
id: version
run: |
echo "git_commit=$(git rev-parse --short=7 HEAD)" >> $GITHUB_OUTPUT
echo "build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
- name: Build and push unified Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./dockerfile.unified
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
GIT_COMMIT=${{ steps.version.outputs.git_commit }}
BUILD_DATE=${{ steps.version.outputs.build_date }}
- name: Generate deployment instructions
if: github.event_name != 'pull_request'
run: |
echo "## 🎉 Docker image published successfully!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📦 Available tags:" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🚀 Quick start:" >> $GITHUB_STEP_SUMMARY
echo '```bash' >> $GITHUB_STEP_SUMMARY
echo "docker run -d \\" >> $GITHUB_STEP_SUMMARY
echo " --name readmeabook \\" >> $GITHUB_STEP_SUMMARY
echo " -p 3030:3030 \\" >> $GITHUB_STEP_SUMMARY
echo " -v ./config:/app/config \\" >> $GITHUB_STEP_SUMMARY
echo " -v ./downloads:/downloads \\" >> $GITHUB_STEP_SUMMARY
echo " -v ./media:/media \\" >> $GITHUB_STEP_SUMMARY
echo " -v readmeabook-data:/var/lib/postgresql/data \\" >> $GITHUB_STEP_SUMMARY
echo " ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY