Files
WilliamPeterMatthew 67c0ac493f Update Files
2026-01-29 15:31:19 +08:00

79 lines
6.9 KiB
YAML

name: Build and Push Docker Image
on:
workflow_dispatch:
jobs:
build-push:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai
strategy:
fail-fast: false
matrix:
registry: ['ghcr', 'dockerhub']
permissions:
contents: read
packages: write
attestations: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
ref: master
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- name: Login to ${{ matrix.registry }}
uses: docker/login-action@v3
with:
username: ${{ matrix.registry == 'ghcr' && github.repository_owner || secrets.DOCKER_USERNAME }}
password: ${{ matrix.registry == 'ghcr' && secrets.GITHUB_TOKEN || secrets.DOCKER_PASSWORD }}
registry: ${{ matrix.registry == 'ghcr' && 'ghcr.io' || '' }}
- name: Extract current date
id: extract-date
run: |
DATE=$(date +%Y%m%d)
echo "date=$DATE" >> $GITHUB_OUTPUT
- name: Process lowercase owner
id: lowercase-owner
run: |
LOWER_OWNER=$(echo "$GITHUB_REPOSITORY_OWNER" | tr '[:upper:]' '[:lower:]')
echo "lower_owner=$LOWER_OWNER" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
platforms: linux/386,linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x,linux/riscv64
push: true
tags: |
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:{1}-alpine', steps.lowercase-owner.outputs.lower_owner, steps.extract-date.outputs.date) || format('{0}/sslocal-manager:{1}-alpine', secrets.DOCKER_USERNAME, steps.extract-date.outputs.date) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:latest-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:latest-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13.6-alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13.6-alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13.6-alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13.6-alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13.6-alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13.6-alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:python3.13.6-alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:python3.13.6-alpine3.22.1', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:alpine', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:alpine', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:alpine3', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:alpine3', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:alpine3.22', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:alpine3.22', secrets.DOCKER_USERNAME) }}
${{ matrix.registry == 'ghcr' && format('ghcr.io/{0}/sslocal-manager:alpine3.22.1', steps.lowercase-owner.outputs.lower_owner) || format('{0}/sslocal-manager:alpine3.22.1', secrets.DOCKER_USERNAME) }}