mirror of
https://github.com/sstent/minihass.git
synced 2025-12-06 03:21:36 +00:00
This update modifies the GitHub Actions workflow to dynamically determine the container registry and image name based on the server environment. It also ensures that the image name is in lowercase and updates the login and build steps accordingly.
68 lines
2.1 KiB
YAML
68 lines
2.1 KiB
YAML
name: Build and Push Docker Image
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'app.py'
|
|
- 'dockerfile'
|
|
- 'requirements.txt'
|
|
- 'docker-compose.yml'
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
# 1. Determine Registry and Image Name dynamically
|
|
- name: Prepare Registry Environment
|
|
id: prep
|
|
run: |
|
|
# Check if running on GitHub or Gitea
|
|
if [[ "${{ github.server_url }}" == *"github.com"* ]]; then
|
|
echo "Running on GitHub"
|
|
echo "REGISTRY=ghcr.io" >> $GITHUB_ENV
|
|
else
|
|
echo "Running on Gitea"
|
|
# Strip 'https://' and trailing slashes from the server URL to get the hostname
|
|
# e.g., https://gitea.my-server.com/ -> gitea.my-server.com
|
|
CLEAN_HOST=$(echo "${{ github.server_url }}" | sed -e 's|^[^/]*//||' -e 's|/.*$||')
|
|
echo "REGISTRY=$CLEAN_HOST" >> $GITHUB_ENV
|
|
fi
|
|
|
|
# Docker images must be lowercase. GitHub/Gitea repos might contain uppercase.
|
|
IMAGE_NAME=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')
|
|
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITHUB_ENV
|
|
|
|
# 2. Login using the dynamic REGISTRY variable
|
|
- name: Log in to Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
# 3. Push using dynamic tags
|
|
- name: Build and push multi-arch Docker image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
platforms: linux/amd64,linux/arm64
|
|
tags: |
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|